[SOLVED] Bei ZFS Poolerstellung RAID-Z2 wohl Mist gebaut

IT-MCSE

Active Member
Nov 7, 2020
46
4
28
48
Hi, ich habe mit dem PVE Wizard unter Disks / Create:ZFS ein ZFS POOL RAID-Z2 = DATEN (4x 4TB erstellt). Danach unter "Datacenter" unter Storage einen ZFS Ordner "DATEN" mit 4TB erstellt. So weit so gut. Es funktioniert auch alles. Nur habe ich jetzt noch freien Speicher den ich irgendwie nicht als "2. Partition" oder "Ordner" erstellt bekomme. Irgendwie ist meine Denkweise nicht korrekte gewesen. Wohl Mist gebaut :cool: . Hätte, wäre, wenn, ... wohl den gesamten Speicher zuordnen müssen ?

zpool status:
root@pve:~# zpool status
pool: DATEN
state: ONLINE
scan: scrub repaired 0B in 0 days 03:29:07 with 0 errors on Sun Nov 8 03:53:08 2020
config:

NAME STATE READ WRITE CKSUM
DATEN ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0

errors: No known data errors
root@pve:~# zfs list

zfs list:
root@pve:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
DATEN 5.80T 1.02T 140K /DATEN
DATEN/vm-100-disk-0 5.80T 5.20T 1.63T -

Habe leider nichts finden können "Google" was einen ZFS Pool sozusagen "partitionieren" kann. Oder ist das bei ZFS gänzlich anders ?

Verzeiht meine Unwissenheit, bin neu eingestiegen in das Thema "ZFS"

Meine Lektüre: https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/zfs-zfs.html
 
Was genau willst du machen? Grundsätzlich wird ein ZFS nur für VM und Container Festplatten verwendet.
Wenn du noch andere Sachen wie ISOs abspeichern willst, wirst du von Hand noch ein weiteres Dataset erstellen müssen und dann auf dessen Pfad ein Directory Storage anlegen. Dann am besten für dieses Storage noch die Optionen is_mountpoint 1 und mkdir 0 hinzufügen (manuell in der /etc/pve/storage.cfg)

Bezüglich des Layouts des Pools würde ich dir empfehlen, diesen nochmals zu zerstören und den Pool als RAID10, also je zwei Festplatten als Mirror im Pool, neu zu erstellen. Dadurch bekommst du mehr Performance und hast nicht unerwartet deutlich mehr Speicherplatzverbrauch bei VM Festplatten. Für Details kann ich dich an unsere Dokumenation verweisen: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_zfs_raid_considerations
 
Ich möchte den ZFS Pool auf 2 VM Festplatten aufteilen 4TB = Daten / 4TB = DMS System.

Mit der Performance habe ich keine Probleme, aber ich probiere das mit RAID10 aus. ! Stimmt denn RAID-Z2 ist nicht erweiterbar !

Hatte mal gelesen das RAID-Z2 bei 4 Platten sinnvoll wäre, CPU Last und Datenintegritätsvorteile gegenüber RAID 5/6/10 :confused:.

Nach Umstellung melde ich mich.

Danke Dir.
 
Last edited:
Bei einem raidz und VM disks wirst du in das Problem laufen, das in der Doku erklärt ist: DIe Paritätsdaten fressen dir viel mehr Platz weg als erwartet.

Weiters solltest du einen ZFS pool nie ganz voll machen. Die Faustregel ist, nach möglichkeit nicht mehr als 80% belegen, und spätestens bei 90% den Pool erweitern. ZFS ist ein Copy on Write System und brauch immer ein wenig freien Platz um zu funktionieren. Wenn du Snapshots verwenden willst brauchst du auch noch entsprechend freien Platz zur verfügung.
 
Raid10 kannst du auch in ZFS umsetzen. Ist dann ein mirrored stripe. raidz2 ist eher etwas, wenn du mehr Festplatten hast (z.B. 6 oder 8) und mehr als die 50% der Gesamtkapazität der HDDs nutzen willst. Raidz2 ist quasi wie Raid6. Bei ZFS lässt sich vieles später nicht mehr ohne weiteres ändern (ashift, volblocksize, Pool erweitern, Verschlüsselung, ...), da solltest du dich besser vorher gut einlesen damit du später nicht alle Daten löschen und den den Pool neu aufsetzen musst. Ich glaube meinen Pool habe ich jetzt inzwischen 7 mal neu erstellt bis ich zufrieden war.
 
Last edited:
Stimmt, das hätte ich wissen müssen :rolleyes:. So ein Ärger, diese Zeit könnte man sich sparen. Na ja ich hoffe es wird nicht 7mal ;)

Hast Du vielleicht Dein aktuelles Konfig-zufrieden-Beispiel zum *draufrumdenken* nur grob ? Habe 4x 4TB WD RED EFRX als Speicherschwein.

Viele Grüße.
 
Ne, für 4x 4TB wäre mein Setup schwachsinnig.

Aber so paar Tipps:
1.) Überleg vorher ob du verschlüsseln willst. Du kannst die Verschlüsselung zwar später noch aktivieren, aber alles was vorher unverschlüsselt war bleibt dann trotzdem unverschlüsselt und nur alles was ab da gespeichert wird ist dann verschlüsselt.
2.) Überleg dir eine gute Struktur wie du deine Datasets organisieren willst. Viele ZFS Optionen lassen sich nur per Dataset festlegen. Wenn du z.B. Daten hast die, nur asynchron gespeichert werden sollen, dann macht das Sinn dafür ein extra Datset zu erstellen und dort "async=none" zu setzen. Das gleiche bei Verschlüsselung. Ganzen Pool verschlüsseln wäre doof. Dann lieber ein Dataset mit aktivierter Verschlüsselung und ein Dataset ohne Verschlüsselung machen. Dann kann man entscheiden ob etwas verschlüsselt werden soll oder nicht, je nachdem, in welchem Dataset man das Zvol speichert. Auch wenn du Snapshots rekursiv nutzen willst ist ein richtig verzweigter Baum von Datasets wichtig.
3.) Bei Raidz musst du die richtige Volblocksize des Pool ausrechnen und korrekt einstellen, BEVOR du irgendwelche VMs erstellst. Ist die Volblocksize falsch, dann nimmt alles unnötig bis zu 100% mehr Platz weg. Will man das dann korrigieren muss man erst alle VMs löschen.
Hier kann man die Volblocksize entnehmen: https://docs.google.com/spreadsheet...jHv6CGVElrPqTA0w_ZY/edit?pli=1#gid=1576424058
4.) Ashift sollte man passend zum LBA der Laufwerke wählen und lässt sich nicht mehr ändern. Wenn die HDDS 512B LBA haben, sollte man überlegen ob man ashift von 9 oder 12 nimmt, weil wenn später eine HDD ausfällt und man nur noch HDDs mit 4K LBAs kaufen kann man dann ein Problem hat, wenn da der Pool für 512B LBA ausgelegt ist.
5.) ZFS Pools lassen sich nicht leicht erweitern. Den sollte man also gleich groß genug planen.
6.) Snapshots werden größer je älter die sind. Wenn du Snapshots richtig lange behalten willst, dann nehmen die teil mehr Platz weg als die Daten selbst. Bei 4x 4TB kann das gut sein, dass du da nicht mehr als 4TB für Daten nutzen solltest.
7.) Am besten auch gleich eine Backup-Strategie überlegen. Raid ersetzt keine Backups. Backups kannst du auch auf einem entferntem NAS speichern. Snapshots müssen immer auf dem Pool liegen von dem man ein Snapshot macht. Man kann optional auch den RAM einer VM beim Snapshot speichern. Den Ort für dieses RAM-Abbild kann man auch auf einen anderen Pool legen.
8.) je nach Setup des Pools kann die Write Amplification ziemlich extrem werden. Ist zwar eher problematisch bei SSDs, dass die sich totschreiben, aber auch HDDs können Probleme haben. Ich hatte bei meinen HDDs z.B. eine Write Amplification von Faktor 7 und die waren dann einfach permanent ausgelastet, da sie mit vielen kleinen Schreibvorgängen überflutet wurden und die einfach die IOPS nicht gepackt bekommen haben.
9.) Du musst darauf achten, dass da alle Partitionen auf dem Host und in den VMs gut ausgerichtet sind
10.) Blockgrößen vom Dateisystem auf dem Host und im Gastsystem in der VM sollten aufeinander abgestimmt sein, um unnötigen Overhead zu vermeiden
11.) Für ZFS ist ECC RAM empfehlenswert
12.) CoW-Dateisysteme wie ZFS können SSDs ziemlich schnell killen, wenn man einfach irgendwelche SSDs kauft die gerade billig sind
13.) Wenn du mehr Optionen bezüglich der Installation haben willst (Nutzung von mdraid, volle LUKS Systemverschlüsselung mit Unlock per SSH, spezielle Pool-Konfigurationen etc) kannst du auch ein Debian nach deinen Vorlieben installieren und dann im Nachhinein die Proxmox-Packages installieren. So kannst du ein variableres Debian zu einem Proxmox machen.
14.) Bei ZFS dürfen die Laufwerke nicht als ("Pseudo-") Hardware-Raid angeschlossen sein.
15.) Bei der VM Erstellung kann auch die richtige Wahl des SCSI Controllers wichtig sein und welchen Cache Mode man wählt. Und wenn man thin-provisioning will, dann sollte man da auch "Discard" aktivieren. Und nicht vergessen im Gast-OS dann die QEMU-Gast-Treiber zu installieren.
 
Last edited:
WOW, das sind ne Menge Info´s. Da hast Du viel ausprobiert und es steckt ein "Haufen Wissen" drin. Danke dafür. Also das mit dem ashift lasse nach längerem belesen bei "12". Habe den ZFS Pool vorher gesichert und dann klassisch "detsroyed". Jetzt habe ich da ein RAID10 mit den 4x 4TB Platten erstellt (2x Stripe / 2x Mirrors).

1. Ergebnis
1605040662306.png

Als nächstes ging es an den ZFS Pool. Ich denke das auch bei Daten-ZFS-Pools "thin provision" sinn macht, natürlich mit "discard" was die TRIM Funktion sein soll (danke für den TIPP). Die Blockgröße ist nicht einfach zu berechnen (kommt auf die Verwendung an) aber ich belasse es bei "8k". Nur mit den IO Threads ist mir noch nicht ganz klar, macht nur Sinn wenn jede Festplatte seinen eigenen "controller" hat. So ganz klar ist das für mich nicht, jede seinen eigenen Hardware Controller oder wie? Skip replication gilt nur für "Replizierungen von VM´s" wobei die Disk-Images ausgelassen werden sollen. Das benötige ich nicht.

2.Ergebnis
1605042823773.png

Ich hoffe damit kann ich soweit arbeiten. Für Tipps, Kritik und Fehleranzeigen bin ich dankbar :)

Achso Snapshot-Backup´s mache ich auf eine NFS Freigabe auf das TrueNAS somit nicht auf den pve ZFS Pool. Versuchsweise habe ich auch schon den pve-backup server getestet.

Viele Grüße.
 
Last edited:
Das klingt doch schon einmal gut. Mit aktiviertem "IO thread" bekomme jede virtuelle Festplatte einen eigenen Prozess. Wenn man das nicht aktiviert hat, dann werden mehrere (glaube bis 8 Stück) virtuelle Festplatten von einem SCSI-Controller-Thread bedient. Kann also mehr Leistung bringen wenn man es aktiviert und die virtuellen Festplatten sehr ausgelastet werden. Ich konnte da jetzt bei mir keinen Unterschied feststellen, aber ich habe das sicherheitshalber einfach bei allen VMs aktiviert um einen eventuellen Flaschenhals vorzubeugen.

Achso, Proxmox kann kein automatisches Snapshotten. Ich nutze dieses Script hier: https://github.com/Corsinvest/cv4pve-autosnap
Das im fstab eingetragen macht dann regelmäßig Snapshots und löscht diese auch später wieder. Kann man dann z.B. stündliche Snapshots machen und wenn man 48 als Limit festlegt, dann würden automatisch alle Snapshots älter als 2 Tage wieder gelöscht werden. Kann praktisch sein, wenn man die automatisierten Backups z.B. nur täglich oder wöchentlich durchführt und man bei einem Missgeschick auch mal einen feineren Rollback machen möchte.
 
Last edited:
IO thread habe ich mal aktiviert, aber auch keine Verbesserung festgestellt mit "CrystalDiskMark". Mal auf allen VM´s gleichzeitig gestartet um den Pool ein wenig zu stressen. Na ja vielleicht wenn man noch mehr VM´s hat (bei mir nur 5 davon 4 MS Maschinen);). Das mit den Snapshot´s nehme ich gleich in Angriff, danke.
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!