ZFS-Online-Festplattenmigration

ZFS-Online-Festplattenmigration

Ich frage mich, ob ZFS Folgendes bewältigen kann. Angenommen, ich habe FreeBSD auf einem Zpool mit zwei physischen 500-GB-Festplatten in einem gespiegelten Setup installiert. Diese bilden die Root-Partition, sodass tatsächlich nur maximal 20 GB verwendet werden.

Ich möchte die physischen Festplatten später durch zwei kleine SSDs in einem gespiegelten Setup ersetzen. Gibt es eine Möglichkeit, dies online zu tun? Meine Idee war, diese Festplatten als zusätzliche Spiegel zum Zpool hinzuzufügen, zu warten, bis die Neuversilberung abgeschlossen ist, und dann die alten Laufwerke zu entfernen. Das Problem ist, dass diese neuen Festplatten kleiner als die Originale wären.

Eine Idee, die ich hatte, ist, nur die 500-GB-Laufwerke zu partitionieren, sodass ZFS nur, sagen wir, 30 GB Speicherplatz auf jeder physischen Festplatte erhält und der Rest verschwendet wird. Auf diese Weise hätten die SSDs mehr Speicherplatz, sodass ich nicht in ein Schrumpfungsproblem geraten würde. Das Problem ist, dass ich auf diese Weise die Größe der zukünftigen Ersatzfestplatten im Voraus abschätzen muss. Gibt es eine Möglichkeit, dies zu vermeiden?

Antwort1

Sie haben Recht, wenn das vdev die ganze Festplatte ist, müssten sie beim Wechsel zu SSDs mindestens diese Größe haben, Sie können nicht auf kleinere Festplatten „schrumpfen“ (natürlich können Sie auf größere Festplatten wachsen). Sie haben auch Recht, dass Sie Partitionen verwenden können, damit die vdevs kleiner sind als die zukünftigen SSDs, und Sie müssten schätzen, wie groß diese SSDs sein werden.

Alternativ können Sie, wenn der Server alle 4 Festplatten gleichzeitig aufnehmen kann, auch nur für kurze Zeit, den Zpool jetzt beliebig erstellen und dann die Daten mit Senden/Empfangen auf die neuen SSDs übertragen. Dies erfordert allerdings, dass alle Geräte gleichzeitig angeschlossen sind. Eine kleine Einschränkung: Der Sende-/Empfangsvorgang kann nur von einem Snapshot senden – Sie können also keine „Live“-Festplatte duplizieren und müssen entsprechende Vorkehrungen treffen (die Ausfallzeit kann durch Hinzufügen einer kleinen Komplexität recht kurz sein).

Noch komplizierter ist es, das „Senden“ in einer Zwischendatei auf einer anderen Festplatte zu speichern und dann von dort zu „empfangen“. Sie benötigen also immer nur 3 Festplatten im Server. Und noch komplizierter: Die 4 Festplatten könnten sich auf verschiedenen Servern befinden und das Senden/Empfangen kann über SSH oder sogar Netcat geleitet werden.

Antwort2

Mir fällt keine offensichtliche Möglichkeit ein, dies zu tun.

Da Sie die Root-Festplatten sowieso partitionieren müssen (um Bootcode hinzuzufügen) und das nicht so klingt, als würde das oft passieren, würde ich vorschlagen, einfach eine kleine (<20 GB) Partition für den Root-Pool zu erstellen. Wenn Sie zusätzlichen Speicherplatz benötigen, können Sie aus dem verbleibenden Speicherplatz einen zweiten Pool erstellen. Wenn Sie die SSDs einbauen möchten, partitionieren Sie sie einfach, fügen Sie Bootcode hinzu, fügen Sie sie per „ZFS Attach“ an den Root-Pool an und trennen Sie dann die Originale per „ZFS Detach“ (oder „ZFS Replace“ statt „ZFS Attach“ und „ZFS Detach“).

verwandte Informationen