zfs pools migrieren zwischen LXCs?

Also nach meinem noch nicht ganz vorhandenen Verständnis, hat ein ZFS als Grundlage einen Pool aus Storage Devices. Das sind dann wohl die VDEVs.
In meinem Fall gibt es davon 3 verschiedene:
VDEF-0: 3x 1TB SSD
VDEF-1: 3x 4TB HDD
VDEF-2: 4x 12TB HDD

Jedes VDEF ist als RAIDZ1 aufgesetzt. In jedem VDEF kann also eine Platte ausfallen.
Aktuell habe ich keinen Platz und keine Anschlüsse mehr übrig um noch 3 weitere Platten einzubauen und damit aus den RAIDZ1 zum Beispiel ein RAIDZ2 zu machen. Zumal ich für später im Jahr ohnehin ein Mirroring über zwei externe TrueNAS Systeme geplant habe.

Um kurzfristig redundanter zu bleiben, würde ich gerne eine 12TB extra einbauen, aber diese soll automatisch jedem der drei VDEFs zur Verfügung stehen, wenn eine der Platten gleicher oder kleinerer Größe ausfällt. Im Grunde also wie in einem Hardware RAID, bei dem das ja auch geht.

Danke für die Links @news Das ist genau das, was ich gesucht habe!
 
Last edited:
Hallo @Astralix
Zur den Begrifflichkeiten Du hast also 3 ZFS Pools mit jeweils einem VDEV.
Aus einem ZFS RaidZ1 kann man, nach meinem aktuellen Stand, nicht im laufenden Betrieb eine ZFS RaidZ2 machen.
Den ZFS Pool kann man natürlich auflösen (destroy) und neu erstellen (create).
Aber man kann zu einem ZFS Pool mit 1x VDEV-0: ZFS RaidZ1 ein weiteres VDEV-1: ZFS RaidZ1 hinzufügen.
Trennen kann man das nicht - immer -.
 
Das scheint doch unter Proxmox schon zu laufen, denn man kann ja in der Oberfläche alle SMART Daten der HDDs auslesen. Darin waren auch die Fehler der defekten Platte zu lesen.

Außerdem kann ich auch in "zpool list" sehen, dass ein pool degraded ist. Auch unter proxmox/Disks/ZFS sehe ich diesen Status.
Aber ich habe weder von smartmon noch von Proxmox eine Mail bekommen, obwohl beiden Systemen alle Informationen zu dem Ausfall bekannt zu sein scheint.

Blablabla... Ich Depp! :rolleyes:
Ich habe zwar den SMTP server korrekt eingetragen, aber am Ende die "Notification Matchers" nicht geändert. So wurden dann alle Mails weiter an den deaktivierten mail-to-root gesendet.
 
Hallo @Astralix
Zur den Begrifflichkeiten Du hast also 3 ZFS Pools mit jeweils einem VDEV.
Aus einem ZFS RaidZ1 kann man, nach meinem aktuellen Stand, nicht im laufenden Betrieb eine ZFS RaidZ2 machen.
Den ZFS Pool kann man natürlich auflösen (destroy) und neu erstellen (create).
Aber man kann zu einem ZFS Pool mit 1x VDEV-0: ZFS RaidZ1 ein weiteres VDEV-1: ZFS RaidZ1 hinzufügen.
Trennen kann man das nicht - immer -.
Danke!
Aber ich denke, dass ich das nicht brauche.
Laut der von Dir verlinkten Doku von Oracle können mehrere pools eine Hotspare teilen, wenn diese auf der gleichen Maschine sind.
https://docs.oracle.com/cd/E19253-01/820-2313/gcvcw/index.html
Dazu muss ich nichts mehr ändern, nur die Platte allen Pools als spare hinzufügen.
 
Dann bin ich gespannt, ob das Hinzufügen funktioniert und wie die ZFS Pools dann aussehen.

zpool list -v
 
Es liegt hier noch eine weitere Platte für den Pool und die defekte geht in Garantie zurück.

Was mich noch interessiert sind diese Defaults. Denn man kann ja wohl den scrub konfigurieren. Muss dabei noch etwas gesondert beachten?
Außerdem habe ich noch einer weitere Platte gekauft und hoffe darauf, dass die defekte HDD getauscht wird.

Ich habe inzwischen gelesen, dass man das RAIDZ1 vergrößern kann, aber nicht auf RAIDZ2 upgraden?
Also werde ich die eine Platte als Vergrößerung, die andere als Hotspare für alle einsetzen, sobald sie wieder eintrifft.
 
Ich habe inzwischen gelesen, dass man das RAIDZ1 vergrößern kann, aber nicht auf RAIDZ2 upgraden?
Also werde ich die eine Platte als Vergrößerung, die andere als Hotspare für alle einsetzen, sobald sie wieder eintrifft.
Ich hatte das oben mit den VDEV-0 als ZFS RaidZ1 schon erläutert. Eine Erweiterung geht über ein weiteres VDEV-1 als ZFS RaidZ1 schon.
 
  • Like
Reactions: Astralix
Umgangssprachlich kann ich eine Platte hinzufügen, aber nur als zusätzlicher Speicherplatz, nicht zur Hochstufung des RAID Level.
Macht aber bei genauem Nachdenken keinen Sinn, da ich ja den ganzen Verbund spiegeln will in Zukunft. Und dann muss man überlegen, ob das noch Sinn macht lokal RAIDZ2 und remote Mirroring. Wenn es bei nur einem System bleiben würde, würde ich anders denken.
 
Laut der von Dir verlinkten Doku von Oracle können mehrere pools eine Hotspare teilen, wenn diese auf der gleichen Maschine sind.
https://docs.oracle.com/cd/E19253-01/820-2313/gcvcw/index.html
Da steht aber nichts dazu drin, würde mich auch wundern, weil man die "spare" ja einem pool added, die dann dazu gehört. Man kann sie jedoch manuel mit remove wieder entfernen, wenn sie unbenutzt ist und dann einem anderen pool dazu "add"en.
Das ließe sich gut in einem Skript abbilden und die "spare" wäre erstmal nirgends zugeordnet bis sie in einem poll benötigt wird und dort dann Mitglied wird.
 
  • Like
Reactions: Johannes S
Oh, in der Deutschen Doku steht es so nicht, aber hier:

https://docs.oracle.com/en/operatin...designating-hot-spares-in-a-storage-pool.html
"Do not share a spare across multiple pools or multiple systems even if the device is visible for access by these systems. You can configure a disk to be shared among several pools provided that only a single system must control all of these pools. However, this practice is risky. For example, if pool A that is using the shared spare is exported, pool B could unknowingly use the spare while pool A is exported. When pool A is imported, data corruption could occur because both pools are using the same disk."

Ist mir aber klar, dass das Risky ist. Aber ich betreibe auch kein Hochfrequentiertes System.
Eine Hot-Spare überbrückt nur den Zeitraum, bis der Postbote eine neue Disk liefert.
Aber bei einer 12TB Hot-Spare muss man sie nachher aus dem 4TB Pool entfernen, damit sie als 12TB auch für die 12TB Pools wieder verfügbar ist. Daher ist es eher sinnvoll hier dedizierte 4TB und 12TB einzusetzen. In den neuen Systemen ist dafür auch Platz.

Random 4k IOPs habe ich kaum auf den Datenplatten. En PC schreibt gelegentlich mal was, aber 5 Rechner lesen ab und zu mal ein paar Daten. 4 davon benutze ich selber, also rein physikalisch unmöglich gleichzeitig.
VMs und Datenbanken und Virtuelle Rechner greifen nahezu ausschließlich auf den kleinen Pool mit den 1TB SSDs.

Videoschnitt könnte was werden, das werde ich aber auf eigenen Plattensätzen machen und die großen Pools nur als Speicher verwenden.
 
Ich wollte ja die letzte HDD nun dem raidz1-0 hinzufügen. Aber irgendwie habe ich das nun verbockt.
Die platte ist auf der falschen Ebene und
Code:
  ~# zpool status mediapool
pool: mediapool
 state: ONLINE
  scan: resilvered 7.91T in 15:57:40 with 0 errors on Wed Jan 29 08:25:11 2025
config:

        NAME                                   STATE     READ WRITE CKSUM
        mediapool                              ONLINE       0     0     0
          raidz1-0                             ONLINE       0     0     0
            ata-ST12000NE0008-2JL101_ZHZ5TZNZ  ONLINE       0     0     0
            ata-ST12000NE0008-2JL101_ZHZ5WK34  ONLINE       0     0     0
            ata-ST12000NE0008-2JL101_ZHZ5Z3NT  ONLINE       0     0     0
            ata-ST12000NM0127_ZJV5HHF9         ONLINE       0     0     0
          ata-ST12000NM0127_ZJV2TLHK           ONLINE       0     0     0

errors: No known data errors

Da bekomme ich sie auch nicht mehr weg:
Code:
~# zpool remove mediapool ata-ST12000NM0127_ZJV2TLHK
cannot remove ata-ST12000NM0127_ZJV2TLHK: invalid config; all top-level vdevs must have the same sector size and not be raidz.

Wie bekomme ich das wieder gerade gezogen?
 
Da geht leider *NUR* neues Backup ziehen, zpool destroy, zpool create, Fullrestore.
 
Da geht leider *NUR* neues Backup ziehen, zpool destroy, zpool create, Fullrestore.
Ja, sieht so aus.

Etwas zu spät für diesen Thread, aber "for-the-record": bevor man potentiell gefährliche Dinge tut, kann man einen Checkpoint erzeugen, der den gesamten Zustand des Pools umfasst. Siehe man zpool-checkpoint.

"The existence of a checkpoint in a pool prohibits the following zpool subcommands: remove, attach, detach, split, and reguid." - da wird insbesondere "add" nicht ausgeschlossen, also der Befehl der oben wohl die Ursache für das gezeigte Resultat war.

Ein falsches "add" kann/könnte man dann wieder rückgängig machen.


Disclaimer: ich habe das noch nie in dieser Art verwendet...

---
Nachtrag: außerdem gibt es für einige Befehle die Option "-n", siehe man zpool-add:

"-n Displays the configuration that would be used without actually adding the vdevs."

Damit kann man sich also vorher das Resultat ansehen - ohne dass Gefahr besteht.
 
Last edited:
  • Like
Reactions: Johannes S
Man kann das auch gut vorher mit paar spare files üben, zpool drauf, damit herum experimentieren bis man das gewünschte Ergebnis erzielt hat,
dann alles destroy'en und auf den echten pool anwenden - vermeidet solche Überraschungen ... :)
 
  • Like
Reactions: Johannes S
In englischen Forum wurde auch auf zpool split aufmerksam gemacht.

"Splits devices off pool creating newpool. All vdevs in pool must be mirrors"