egal welche soweit ich das verstanden habe. (Bitte korrigiert mich falsch ich falsch liege)
genau
Hab jetzt einen Z2 Pool erstellt der eine Größe von 29Tb hat (Terminal und WEB GUI gleiches Ergebnis)
Sollten das nicht normalerweise nur 24Tb sein?
Unter Z3 kommen auch nur 18Tb raus.
Das ist etwas tricky mit ZFS. Also erstmal sollte man wissen das alle Paritätsplatten wegfallen. Hast du raidz2 mit 8 disks sind 2 Platten für Parität und 6 Platten für Daten. Theoretisch könntest du also maximal 6x 4TB = 24TB nutzen. Dann ist die Frage wie du nach der Größe guckst. Der "zpool" Befehl wird dir immer die Größe inkl. Parität anzeigen, also 8x 4TB = 32 TB. Der "zfs" Befehl gibt dir aber die Größe exklusive Parität aus (also 6x 4TB = 24TB). Und dann haben deine Festplatten 4TB Kapazität. Proxmox nutzt aber nigends TB sondern überall nur TiB. 4TB und 3,638 TiB sind beides das gleiche. Als TiB angegeben sieht also alles etwas kleiner aus. Da muss man dann ggf zwischen TiB und TB umrechnen und genau gucken, was wirklich gemeint ist.
Und dann musst du noch die Volblocksize für deinen Pool optimieren, sonst wirst du massig Platz wegen Padding-Overhead verschwenden. Wieviel du da genau verlierst kann man haar genau ausrechnen, aber ZFS wird es dir nicht anzeigen. Das Ganze läuft indirekt indem einfach alles mehr Platz als nötig wegnimmt (nur bei Zvols, nicht bei Datasets). Hast du z.B. ein Daten-Padding-Verhältnis von 1-zu-1 dann braucht alles doppelt so viel Platz. Dann zeigt dir ZFS zwar immer noch an, dass du da 24TB benutzen kannst, diese 24TB sind aber schon voll, nachdem du 12TB in ein Zvol geschrieben hast, weil alles den doppelten Platz wegnimmt, weil auf 12TB Daten dann 12TB Padding-Overhead kommt. In einem solchen Fall hättest du dann in echt nur 12TB und keine 24TB.
In der
Tabelle kannst du sehen bei welchem Pool-Layout und welcher Blcokgröße du wieviel durch Parity+Padding verlierst. Und
hier kannst du genaueres nachlesen warum das so ist.
Kurz gesagt:
Standardmäßig nutzt ZFS eine Volblocksize von 8K und ein ashift von 12 (was 4K Sektoren entspricht) und damit würdest du bei Raidz2 mit 8 Disks 67% deiner Rohkapazität verlieren. Aktuell tatsächlich nutzbar wären also nur 10,66 TB für dich. Und dann sollte man einen ZFS Pool nie mehr als 80% füllen, da ZFS ein Copy-on-Write Dateisystem ist und immer freien Platz für den Betrieb braucht und sonst langsam wird, anfangt Daten zu fragmentieren oder gar ganz den Dienst einstellt. Von den 10,66 TB sind also nur 80% nutzbar, also deine aktuelle real nutzbare Größe für virtuelle Disks wären 8,5 TB oder 7,73 TiB.
Was du aber machen kannst ist deine Volblocksize zu erhöhen damit du weniger durch Padding verlierst. Bei dir würde sich z.B. eine Volblocksize von 16K anbieten. Dann würdest du statt 66% nur 33% durch Parity+Padding verlieren. Dann wären immerhin schon 21,33 TB nutzbar. Wenn du dann die 20% abziehst wären es noch 17,06TB bzw 15,51 TiB.
Aber nicht vergessen das sich die Vollbocksize im Nachhinein nicht mehr ändern lässt. du musst erst alle Zvols (virtuelle Disks) zerstören und neue erstellen, damit die neue Volblocksize benutzt wird. Das geht z.B. wenn man unter "Datacenter -> Storage -> DeinZFSPool -> Edit" die "Block Size" erhöht, die VMs stoppt, danach von allen VMs ein Backup erstellt, die VM dann mit der Version aus dem Backup überschreibt und die VMs dann wieder startet.
Abgesehen vom Platz wie verhält sich die schreib/leserate zwischen den RAID Leveln.
raidz1/2/3 sind gut für sequentielle Writes aber schrecklich für IOPS. Mit 8 disks als Raidz2 kannst du sequentiell lesen/schreiben wie mit 6x der Leistung einer einzelnen HDD. IOPS hast du aber nur die Leistung einer einzenen HDD.
Bei einem Striped Mirror (raid10) aus 8 HDDs hättest du 4x die sequentielle Schreibleistung einer einzelnen HDD, 8x die sequentielle Leseleistung einer einzelnen HDD und 4x die IOPS einer eizelnen HDD.