Wie kann ich einen ZFS-Pool in einen untergeordneten Pool verschieben?

Wie kann ich einen ZFS-Pool in einen untergeordneten Pool verschieben?

Ich habe einen Pool in ZFS erstellt mit:

zpool create data001 mirror /dev/sda /dev/sdb

aber im Nachhinein wollte ich schaffen

zpool create data/001 mirror /dev/sda /dev/sdb

Keine der Umbenennungs-/Verschiebeoptionen, die ich gefunden habe, funktioniert, weil „Daten“ nicht vorhanden sind. Ich kann jedoch keine „Daten“ erstellen, da es nicht sinnvoll erscheint, einen Pool zu erstellen, der keine Geräte hat.

Antwort1

Ich bin mir ziemlich sicher, dass Sie für das erste „zpool create“ und nicht „zfs create“ meinen. Folgendes sollten Sie also tun:

# zpool create data mirror /dev/sda /dev/sdb
# zfs create data/001

Mit dem ersten Befehl erhalten Sie Ihren „Daten“-Pool sowie das /data-Dateisystem und der zweite Befehl erstellt das /data/001-Dateisystem.

Antwort2

zpool create data mirror /dev/sda /dev/sdb

zfs create data/001

Ist dies der Befehlssatz, den ich hätte ausführen sollen oder noch ausführen kann, während Daten erhalten bleiben? Die erste Zeile sieht so aus, als würde sie einen neuen Pool über dem vorhandenen erstellen.

Das hätten Sie tun sollen. Wenn Sie es jetzt tun, erfahren Sie lediglich, dass es nicht möglich ist, Festplatten, die bereits Teil eines Pools sind, für einen neuen Pool zu verwenden, ohne die alte zu zerstören oder die Festplatten daraus zu entfernen (außer der letzten, was nicht möglich ist, wenn Sie raidz anstelle von Spiegeln verwenden). Es könnte auch ein guter Zeitpunkt sein, über Ihre Sicherungsstrategie nachzudenken, falls Sie keine haben.


Ich bin neu bei ZFS und finde, dass die Aufteilung der Funktionalität zwischen ZFS und Zpool willkürlich erscheint, wahrscheinlich aufgrund eines Missverständnisses der Technologie.

Oracle hat eineausführliche Anleitungwie Sie Pools und Dateisysteme verwenden, und es gibt auch einige komprimierteempfohlene VorgehensweiseUm es ganz allgemein zusammenzufassen: Es gibt drei Ebenen:

  1. Sie erstellen virtuelle Geräte (vdevs) aus normalen Geräten (normalerweise Festplatten, können auch Dateien oder Partitionen sein) mit einer bestimmten Redundanzfunktion (Basis, Spiegel oder Raidz).
  2. Sie erstellen Speicherpools (Zpools) aus mehreren vdevs, die immer gestreift (verkettet) sind und Ihnen die summierte Größe dieser vdevs als kontinuierlichen Speicher anbieten.
  3. Innerhalb dieser Pools erstellen Sie entweder Dateisysteme oder Zvols. Dateisysteme können ineinander verschachtelt werden. Theoretisch ist der Pool selbst auch beschreibbar, aber aufgrund der einfacheren Verwaltung/Eigenschaftsvererbung wird davon abgeraten.

Meine persönlichen Empfehlungen für diese Schichten:

  1. Verwenden Sie für jedes vdev Festplatten gleicher Größe, Geschwindigkeit und Qualität. Bevorzugen Sie Spiegel, da diese flexibler und schneller sind als Raidz. Vermeiden Sie einfache vdevs, da sie Ihren gesamten Pool zerstören können, wenn einer ausfällt.
  2. Erstellen Sie Speicherpools für ähnliche vdevs, beispielsweise einen Pool mit SSD vdevs (Mirrors) für VM-Speicher und einen Pool mit HDD vdevs (raidz2) für langsameren, aber größeren Backup-Speicher. Die Kombination würde den Pool so langsam wie die HDD und so gefährlich wie den einzelnen Mirror für ALLE Daten machen, daher ist das keine gute Idee.
  3. Erstellen Sie so viele Dateisysteme wie Sie möchten und verwenden Sie Vererbung, um sie einfach zu verwalten (Eigenschaften wie SMB oder NFS-Freigaben können auf dieselbe Weise vererbt werden wie Kontingente oder allgemeine ACL-Einstellungen). Ihr Design hängt von Ihrer Organisation und Struktur ab, aber allgemeine Regeln sind „ein Dateisystem für jedes Benutzer-Home-Verzeichnis“ und „ein Dateisystem für jede unabhängige Netzwerkfreigabe“. Vermeiden Sie das Aufteilen von Dateisystemen, wenn der Inhalt im Wesentlichen dasselbe Thema behandelt, aber häufig verschoben wird, da das Verschieben zwischen Dateisystemen immer ein vollständiger und kostspieliger Vorgang ist, selbst im selben Pool. Sie benötigen zvols nur, wenn Sie Blockspeicher exportieren oder mit KVM, also beginnen Sie einfach (Dateisysteme können auch als Blockspeicher verwendet werden).
  4. Verwenden Sie Verzeichnisse innerhalb der Dateisysteme wie gewohnt (legen Sie ACLs fest, trennen Sie Daten usw.).

verwandte Informationen