JBOD mit ZFS

cklahn

Member
Jan 3, 2024
48
2
13
Hallo Forum,

habe ein UGREEN-NAS mit zwei NVMEs ausgestattet und dort den PBS im ZFS-RAID1 installiert. In den HDD-Slots stecken nun 4x 4TB. DIese sind per RAIDZ zu einem Datastore zusammengefasst. Also PimalAuge 3x 4TB=12TB.

Nun soll man ja beim aktuellen ZFS den Datastore erweitern können. Ich habe mal eine fünfte Platte dazugesteckt und versucht über das GUI diesen zu erweitern. Da kommt dann die Meldung, dass ich mindestens zwei Platten zustecken muss. Verstehe ich nicht, da RAID5, welches ja RAIDZ sein soll, auch mit fünf Platten bauen könnte.

Geht das nur über die Console? Wenn ja mit welchen Befehlen? Oder müssen es tatsächlich zwei sein? Ich denke gerade daran, wenn alle 8 Steckplätze voll sind und ich mit 8TB-Platten weitermachen will, sprich die ersten 4TB austausche. Gibts dafür eine Best-Practise-"Anleitung"?

Gruß
Christoph
 
Teile bitte
Bash:
zpool status -vLP
lsblk -e230 -o+FSTYPE,LABEL,MODEL
Modifikationen am Pool müssen generell via CLI gemacht werden.
 
Last edited:
Ich kann leider nicht beurteilen, welche Platte du zum Pool hinzufügen möchtest, da ich keine unbenutzte mit passender Größe sehe. Es sollte so ähnlich funktionieren
Bash:
zpool attach datavault-01 raidz1-0 /dev/...
Bedenke dass du danach eventuell zfs rewrite nutzen musst.
Ich frage mich nur was dein Vorhaben mit JBOD zu tun haben soll.
 
Last edited:
  • Like
Reactions: Johannes S
Danke ;-). Nee, da war noch keine weitere gesteckt. Ich würde einfach mal eine 2TB zum Testen dazu stecken und die mit Deinem Befehl versuchen einzubinden.
 
Das mit JBOD war nur als Synonym gedacht. Also wahllos Platten zu bestehenden RAIDs hinzufügen.

Wir haben nun damit ein wenig herumgespielt. Ich hatte noch drei 2TB-Platten, habe einen datastore angelegt, dann eine weitere Platte mit 2TB dazugehängt und Deinen "attach"-Befehl verwendet. Das hat geklappt.

Wir würde ich nun aber Platten aus dem Pool entfernen, um dann größere einzubauen. Eine nach der anderen wäre ja nicht schlimm. Wie sehen denn da die Befehle aus?
 
Das mit JBOD war nur als Synonym gedacht. Also wahllos Platten zu bestehenden RAIDs hinzufügen.

Wir haben nun damit ein wenig herumgespielt. Ich hatte noch drei 2TB-Platten, habe einen datastore angelegt, dann eine weitere Platte mit 2TB dazugehängt und Deinen "attach"-Befehl verwendet. Das hat geklappt.
Das wird nicht gehen, da du 4TB Platten im RaidZ hast und da kannst du keine 2TB dazu konfigurieren.
 
  • Like
Reactions: Johannes S
Hallo Falk,
jo, das habe ich gestern gemerkt :-). Ich habe dann einen zweiten Datastore mit 3x 2TB Platten gebaut und anschließend eine vierte 2TB mit den o.g. Befehlen dazugehängt. Das hat dann geklappt.
Nächster Versuch wäre jetzt, aus dem 4x 2TB-Verbund eine 2TB herauszuziehen (defekt simulieren) und durch eine 4TB zu ersetzen.
 
Was man sich bei RAIDZ (egal welches Level) klar sein muss: Das ist immer nur so schnell, wie eine Platte. Das kann gerade bei HDDs und so Sachen wie restore oder der garbage-collection schon gut Sachen in die Länge ziehen. Mirrors oder striped mirrors sind also entsprechend performanter, insbesondere wenn man dann noch SSDs als special device hinzufügt:
https://pve.proxmox.com/wiki/ZFS_on_Linux#sysadmin_zfs_special_device

Siehe auch Udos Writeup, das bezieht sich zwar vor allen auf RAIDZ als VM-Storage aber die Aussagen zu Mirrors versus RAIDZ sind gut übertragbar:

Man muss bedenken, dass ein Datastore aus zig kleinen Dateien (chunks) besteht, die dann für verify, garbage-collection und restore auch entsprechend gelesen werden müssen. Gerade bei der garbage-collection bringt ein special device einiges, weil das die Metadaten auf die SSD verlagert und die garbage-collection vor allen mit den Metadaten arbeitet. Bei anderen Tasks ist der Gewinn nicht ganz so groß, aber die profitieren dafür dann von mirror/striped mirror.
 
  • Like
Reactions: UdoB
Als sekundär PBS wo die Restoreperformance egal ist, nutze ich auf öfters große HDDs. Sonst immer brav auf SSDs. Aber zum testen reichen ja erst einmal HDDs.
 
  • Like
Reactions: UdoB