Noch eine Anmerkung, bitte überprüfe die Speichermethode.HDD sind ältere 3TB WD x6 (sollen über Zeit gegen größere ausgetauscht werden, aber SMART Werte sind noch gut)
SMR oder CMR (das willst Du)
Noch eine Anmerkung, bitte überprüfe die Speichermethode.HDD sind ältere 3TB WD x6 (sollen über Zeit gegen größere ausgetauscht werden, aber SMART Werte sind noch gut)
Danke, auf jeden fall ein wichtige und richtige Anmerkung zum Alltag mit dem System ZFS.My 2 cents:
Also ich habe gelesen, dass es bei ZFS zu Problemen mit dem Caching bei Swap kommen kann und es darum auch nicht bei der Installation eingestellt ist als Standart.1. Beim Partitionieren dran denken, unpartitionierten Platz für Swap zu lassen und das nachträglich als Swap-Partition anlegen. Mit ZFS swappt es sich nicht so gut per swapfile. Bei LVM-Installationen wird automatisch eine Swap-Partition konfiguriert, bei ZFS nicht.
2. Ich würde, nachdem ich das mit ZFS selbst gemacht habe, nochmals gründlich darüber nachdenken:
Du hast 6 HDD, welche in je 2 vDev Pools liegen a 3 Stück. und diese beiden Pools hast du gespiegelt oder?Sorry, wenn Du die Zahl 3x übersehen haben solltest:
ZFS RaidZ1-0 3x HDD + ZFS RaidZ1-1 3x HDD und ZFS Special Device als ZFS mirror mit 2x SSD.
Also liegen deine snapshots direkt im rpool?snapshot liegen als verstecktes Verzeichnis (default, ro) unter Bsp.: rpool/<filesystem-daten>/.zfs/snapshot/
Das ist irgendwie seltsam ich hab damals 6 gleiche Festplatten bestellt. Schauen auch gleich aus, sind aber anscheinend unterschiedliche Modellreihen der Serie. 4 sind CMR und 2 sind SMR.Noch eine Anmerkung, bitte überprüfe die Speichermethode.
SMR oder CMR (das willst Du)
Also ich habe gelesen, dass es bei ZFS zu Problemen mit dem Caching bei Swap kommen kann und es darum auch nicht bei der Installation eingestellt ist als Standart.
Ah OK, das wäre sowieso mein Plan gewesen. Über Advanced Options den ZFS Mirror verkleinern und die Swap extra legen.Ja, wenn der Swap auf dem ZFS-Pool angelegt wird. Liegt daran, dass dann beim Swappen ggf. mehr Platz alloziert wird, was zur Folge haben kann, dass ZFS selbst mehr RAM anfordert - aber genau daran hat es ja bereits gemangelt und das führt dann zu einem Deadlock.
Also ich stimme dir absolut zu, das "Datengrab" sollte zfs sein. Beim OS und den VMs ist mir einfach ein Raid wichtig, falls mal eine Platte abraucht. Da brauche ich jetzt keinen Bitrod Protect. ISO-Images ziehe ich eigentlich sowieso bei einer neuen Installation auch neu. Die Frage ist denke ich eher, wie man mit den Snapshots umgeht. Da kenne ich mich noch gar nicht aus. Bisher liefen bei mir Backups klassisch 3x pro Woche auf ein Veeam backup (inkrementell). Wie ich das jetzt auf snapshots umsetze ist mir noch nicht klar.Ich sagte ja, für die wichtigen Daten würde ich jeden Tag ZFS nutzen. Es wäre eventuell sogar zu überlegen, Proxmox auf eine kleine ZFS-Partition zu installieren, das local-zfs zu löschen und dann den Rest später mit Swap und einem LVM-Thin (local-lvm) zu belegen. Dann wäre der eigentliche Server auf ZFS und die Images auf LVM-Thin. Es wäre wahrscheinlich sogar möglich, das auf einem ZFS Mirror zu tun und das LVM-Thin auf ein normales RAID-1 zu legen, dann hätte man die Ausfallsicherheit on top.
Ja: Ich meinte Proxmox-Installation als ZFS-System mit ZFS Mirror, aber über advanced options das meiste frei lassen, also nur ca. 100 GByte dafür und ganz wenig davon als eigentlichen VM-Pool. Danach starten, zwei gleich große Swap-Partitionen auf den beiden NVMEs plus zwei gleich große Partitionen dmraid als RAID-1 mit dem Löwenanteil der NVMEs. Auf dem raid-1 dann ein LVM-Thin händisch aufsetzen. Zum Schluss den (kleinen) local-zfs entfernen (der Platz kann danach vom ZFS Root genutzt werden). Muss man aber nicht unbedingt tun, man muss den Platz ja nicht nutzen.Aslo die 2 NVMe nur teilweise als rpool nutzen und den REst in eine Swap und eine normale Partition (LVM-Thin) splitten meinst du?
JA meine ich ja. Nur was für einen Vorteil hat es die VMs in einem local lvm und nicht in einem zfs laufen zu lassen?Ich meinte Proxmox-Installation als ZFS-System mit ZFS Mirror, aber über advanced options das meiste frei lassen, also nur ca. 100 GByte dafür und ganz wenig davon als eigentlichen VM-Pool. Danach starten, zwei gleich große Swap-Partitionen auf den beiden NVMEs plus zwei gleich große Partitionen dmraid als RAID-1 mit dem Löwenanteil der NVMEs. Auf dem raid-1 dann ein LVM-Thin händisch aufsetzen. Zum Schluss den (kleinen) local-zfs entfernen (der Platz kann danach vom ZFS Root genutzt werden). Muss man aber nicht unbedingt tun, man muss den Platz ja nicht nutzen.
Ergebnis: PVE Root als ZFS Mirror, zwei separate Swap-Partitionen (wahlweise als RAID-0), QM-Images und LXCs auf LVM-Thin local-lvm.
JA meine ich ja. Nur was für einen Vorteil hat es die VMs in einem local lvm und nicht in einem zfs laufen zu lassen?
Ich habe evtl. die Überlegung meinen Mini-ITX Rechner als Backup-Kiste einzusetzen, auf den ich im Bedarfsfall die VMs migrieren könnte. Oder ich nutze ihn als snapshot/backup Kiste, falls das möglich ist.Na die oben aufgeführten. Vor allem: der vermeintliche Vorteil der Online-Migration gilt nur, wenn man mehrere Nodes hat, bei mir nicht der Fall. Aber so könnte man kann ohne Probleme nicht-lineare Snapshots unter LVM machen. Dort musste ich über Spezialitäten wie EFI-Images und TPM-Disks nicht nachdenken, das funktionierte alles OOTB.
Swap-Partition ist ok, nur halt nicht auf ZFS oben drauf als Zvol oder Swap-File auf dem Dataset. Problem hast du mit Swap eher mit jeder Art von Raid. Weil entscheidest du dich z.B. für einen ZFS Mirror, dann ja weil du keine Downtime haben willst und alles weiterlaufen soll, auch wenn mal eine Platte ausfällt. Ist dein Swap dann aber nicht gespiegelt, weil du nur zwei einzelne Swap-Partitionen hast, da er ja nicht auf dem ZFS Pool sein darf und fällt dir dann eine Disk aus, dann ist natürlich auch der Swap auf der Disk weg und dir stürzen deine Dienste ab, welche von dem RAM auf die Swap-Partition ausgelagert wurden...Also ich habe gelesen, dass es bei ZFS zu Problemen mit dem Caching bei Swap kommen kann und es darum auch nicht bei der Installation eingestellt ist als Standart.
UUID=..... none swap sw,pri=2 0 0
UUID=..... none swap sw,pri=2 0 0
#swapon -s
Filename Type Size Used Priority
/dev/md0 partition 33520636 667648 -2
#cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 nvme0n1p1[0] nvme1n1p1[1]
33520640 blocks super 1.2 [2/2] [UU]
md2 : active raid1 nvme0n1p3[0] nvme1n1p3[1]
465894720 blocks super 1.2 [2/2] [UU]
bitmap: 4/4 pages [16KB], 65536KB chunk
md1 : active raid1 nvme0n1p2[0] nvme1n1p2[1]
523264 blocks super 1.2 [2/2] [UU]
unused devices: <none>
Wenn man das redundant machen will, kann man natürlich auch den Swap auf ein dmraid1 legen, warum denn nicht? Das ist n.m.E. bei Hetzner sogar die Standardeinrichtung:
Bin jetzt aber nach erneutem lesen nicht sicher, ob sich das nur auf Swap in vDisks auf einem mdadm raid bezieht oder auch bare metal mit Swap auf mdadm.The first thing that comes to my mind when talking about md/dm raid is this: The default caching mode for VMs we use isnone
, that is, the VMs will access disks with theO_DIRECT
flag. The MD/DM raid implementations, for this case, will simply forward a pointer to the memory region to each individual block device, and each of those will copy the data from memory separately. If a 2nd thread is currently writing to that data, the underlying disks will sooner or later write different data, immediately corrupting the raid.[1]
In [1] I also mentioned a real case where this can happen: An in-progress write to swap happening for memory that is simultaneously freed, therefore the swap entry is already discarded while the disk I/O still happening, causing the raid to be degraded.
Ideally the kernel would just ignoreO_DIRECT
here, since it is in fact documented as *trying* to minimize cache effects... not forcibly skipping caches consistency be damned, completely disregarding the one job that for example a RAID1 has: actually writing the *same* data on both disks...
And yes, writing data which is being modified *normally* means you need to expect garbage on disk. However, the point of a RAID is to at least have the *same* garbage on *both* disks, not give userspace a trivial way to degrade the thing.
If you take care not to use this mode, you'll be fine with it though, but you'll be utilizing some more memory.
[1] https://bugzilla.kernel.org/show_bug.cgi?id=99171