ZFS RAID-Z[123] ohne Degradation erweitern?

ZFS RAID-Z[123] ohne Degradation erweitern?

Ich weiß, dass man bei ZFS ein RAID-Z- (oder RAID-Z2- oder RAID-Z3-) vdev nur vergrößern kann, indem man die Festplatten durch größere ersetzt; die Geometrie kann man nicht ändern. Ist das jedoch möglich, ohne dabei das Array zu verschlechtern?

Angenommen, ich habe ein RAID-Z-Array mit 4 Festplatten: 1 x 2 TB und 3 x 1 TB ergeben 3 TB nutzbaren Speicherplatz. Wenn alle Laufwerke funktionieren, kaufe ich 3 weitere 2 TB-Laufwerke, um das Array zu vergrößern (auf 6 TB nutzbaren Speicherplatz). Wenn ich jedes der 1 TB-Laufwerke entferne und durch ein 2 TB-Laufwerk ersetze, eins nach dem anderen, um jedes Resilver zu erzwingen, würde ich das Array unnötigerweise und wiederholt verschlechtern und dabei das Ausfallrisiko erhöhen.

Ich hoffe, dass es möglich ist, jede Festplatte zu spiegeln, bevor sie ersetzt wird. Fügen Sie also die ersten 2 TB zu einem Ersatzschacht hinzu, spiegeln Sie die erste 1-TB-Festplatte darauf, entfernen Sie dann die 1 TB und setzen Sie die 2 TB in den Steckplatz der entfernten Festplatte ein. Wiederholen Sie dies dann für die 2. und 3. 1-TB-Festplatte. Dadurch könnte möglicherweise sogar die Notwendigkeit einer Neuversilberung entfallen – oder zumindest eine Neuberechnung der Parität.

Ist so etwas möglich?

Antwort1

Ihre vorgeschlagene Lösung ist möglich, weist jedoch einige erhebliche Nachteile auf:

  • zpool import -o readonly=on ${YOUR_ZFS_POOL}Während des Klonens einer Festplatte können Sie nichts in den Pool () schreiben .
  • Sie müssen den Pool ( zpool export ${YOUR_ZFS_POOL}) für jede Festplatte exportieren, die Sie austauschen.

Nach dem Klonen einer vdev-Festplatte müssen Sie:

  1. Exportieren Sie den Pool ( zpool export ${YOUR_ZFS_POOL}).
  2. Zap ( zpool labelclear ${OLD_DISK_DEVICE}) oder entfernen Sie die alte Festplatte physisch.
    Warnung:Das Löschen der Diskette kann nicht rückgängig gemacht werden.
  3. Erweitern Sie bei Bedarf die vdev-Partition auf der neuen Festplatte.
  4. Importieren Sie den Pool ( zpool import ${YOUR_ZFS_POOL}).
    Warnung:Ab diesem Punkt ist kein Rückgängigmachen mehr möglich. Die alte Festplatte kann nicht mehr im selben Pool online geschaltet werden.
  5. Erweitern Sie die Festplatte ( zpool online -e ${NEW_DISK_VDEV}).

Nachdem Sie diese Schritte für jede Festplatte wiederholt haben, die Sie ersetzen, sollte die neue Kapazität wirksam werden.


Die integrierte Ersetzungsfunktion von ZFS wurde entwickelt, um all diese zusätzliche Komplexität zu vermeiden, die im obigen Abschnitt beschrieben wurde. Wenn Sie Angst haben, Ihren RAID-Z-Zpool während eines Resilver zu beschädigen, sollten Sie vielleicht Folgendes tun:

  • den Pool mit mehr Redundanz (RAID-Z2, RAID-Z3) erstellt haben, oder
  • Sichern Sie Ihren Pool an einem anderen Ort, während Sie Ihr Array erweitern.

Und wenn tatsächlich eine Festplatte ausfällt, wären Sie dann immer noch mit RAID-Z zufrieden?

Wenn Ihr Budget knapp ist und Sie sich wirklich keinen Ort zum Sichern Ihrer Datensätze leisten können, ist es tatsächlich sicherer, Ihren Plan auszuführen, weil es sich bei den Klonen um transaktionale Alles-oder-Nichts-Operationen handeln würde. Bedenken Sie jedoch, dass Ihr Pool für eine Weile schreibgeschützt oder offline sein wird, und dass Sie außerdem Gefahr laufen, bei den Schritten nach dem Klonen einen Fehler zu machen.

Die Verwendung von zpool replacewould:

  • schneller sein*, da nur der verwendete Speicher kopiert wird, statt des gesamten Blockgeräts
    * wenn Sie dieSequentielle Scrub/Resilver-Funktion
  • keine Ausfallzeiten haben, da der Pool während der Resilierung voll funktionsfähig ist
  • menschliches Versagen ausschließen, da Sie den von ZFS erwarteten Workflow zum Ersetzen einer Festplatte verwenden würden

verwandte Informationen