Umzug auf Komplett neue Platten

MichaS-B

New Member
May 1, 2024
4
1
3
Hallo, ich habe bereits einmal erfolgreich einen NVME Tausch mit dem Proxmox System durchgeführt (Neuinstallation, Pool wieder eingebunden, vorher die Config gesichert und wieder eingespielt) aber nun möchte ich sowohl die System NVME (512GB-> 1TB) als auch die 3 HDD des Z1-Pools (3x10 TB-> 3x18TB) tauschen. Ich betreibe neben einem Apache Proxy noch Nextcloud, Docker und PiHole als CT und OMV und Windows 10 als VM. Backups sind von allen außer Win 10 vorhanden, aber ich würde es gerne "on-the-fly" umsetzen.
Hierzu würde ich gerne den NVME Tausch (wie vorher schon einmal) durchführen, danach 2x3 HDD als 2 tanks einbinden und dann Klonen. ist das möglich? Welche Fallstricke gibt es hierbei zu beachten?
 
Das beschriebene gilt für einen ZFS Pool als Mirror - Raid1

Nun ich installiere eine weitere NVMe, z.B. per PCIe 4 x4 Adapterkarte im System und Partioniere die neue NVMe und nutze
zpool attach <pool> <old-nvme-partition> <new-nvme-partition>

Wenn dann das ZFS Resilver durchgelaufen ist, kann ich eine alte NVMe aus dem Pool entfernen
zpool dettach <pool> <old-nvme-partition>

+ https://docs.oracle.com/cd/E19253-01/819-5461/gcfhe/index.html

Um mögliche Bootpartionen muss ich mich noch kümmern:

+ https://www.thomas-krenn.com/de/wiki/Boot-Device_Replacement_-_Proxmox_ZFS_Mirror_Disk_austauschen

Das macht man für alle alten zu neuen NVMe.
Dann kommt der trickreiche Part:
zpool set autoexpand=on <pool>

Ich boote gerne noch mal neu und Erfolg hatte ich mit:

zpool online -e <pool> <new-partion-disk-by-uuid>

Anschließend kann man den Pool wieder "zurück" setzen:

zpool set autoexpand=off <pool>

+ https://docs.oracle.com/cd/E19253-01/819-5461/githb/index.html

Das habe ich mehrmals z.B. von 256 GB SSD auf 500 GB SSD und später auf 1 TB NVMe durchgeführt.

Aber bei anderen ZFS Konstellationen, wie ZFS RaidZn muss man etwas anders vorgehen!

Eine "Platte" soll im ZFS-Dateisystem ausgetauscht werden, dann muss man dies so bewerkstelligen, als hätte man eine Defekte "Platte".

+ https://docs.oracle.com/cd/E19253-01/819-5461/gbcet/index.html

Hat man alle Disks - Platten ausgetauscht, kann man wieder über:
zpool set autoexpand=on <pool>
Ich boote hier noch einmal.

zpool online -e <pool> <new-partion-disk-by-uuid>
zpool set autoexpand=off <pool>
vorgehen.

Das ist Zeitlich das Beste vorgehen, da nach meiner Erfahrzung ein Resilver schneller läuft, als ein Copy-on-File.

Man sollte sich aber jeweils alle Festplattennamen und Partitionen aufschreiben und so seine Scripte ergänzen.
Über den Parameter "zpool -n" läuft der Kommand nur im Testmodus.

Code:
 $ man zpool
 -n        Displays the configuration that would be used without ac‐
          tually adding the vdevs.  The actual pool creation can
        still fail due to insufficient privileges or device shar‐
        ing.
 
Last edited:
  • Like
Reactions: MichaS-B
Das beschriebene gilt für einen ZFS Pool als Mirror - Raid1

Nun ich installiere eine weitere NVMe, z.B. per PCIe 4 x4 Adapterkarte im System und Partioniere die neue NVMe und nutze
zpool attach <pool> <old-nvme-partition> <new-nvme-partition>

Wenn dann das ZFS Resilver durchgelaufen ist, kann ich eine alte NVMe aus dem Pool entfernen
zpool dettach <pool> <old-nvme-partition>

+ https://docs.oracle.com/cd/E19253-01/819-5461/gcfhe/index.html

Um mögliche Bootpartionen muss ich mich noch kümmern:

+ https://www.thomas-krenn.com/de/wiki/Boot-Device_Replacement_-_Proxmox_ZFS_Mirror_Disk_austauschen

Das macht man für alle alten zu neuen NVMe.
Dann kommt der trickreiche Part:
zpool set autoexpand=on <pool>

Ich boote gerne noch mal neu und Erfolg hatte ich mit:

zpool online -e <pool> <new-partion-disk-by-uuid>

Anschließend kann man den Pool wieder "zurück" setzen:

zpool set autoexpand=off <pool>

+ https://docs.oracle.com/cd/E19253-01/819-5461/githb/index.html

Das habe ich mehrmals z.B. von 256 GB SSD auf 500 GB SSD und später auf 1 TB NVMe durchgeführt.

Aber bei anderen ZFS Konstellationen, wie ZFS RaidZn muss man etwas anders vorgehen!

Eine "Platte" soll im ZFS-Dateisystem ausgetauscht werden, dann muss man dies so bewerkstelligen, als hätte man eine Defekte "Platte".

+ https://docs.oracle.com/cd/E19253-01/819-5461/gbcet/index.html

Hat man alle Disks - Platten ausgetauscht, kann man wieder über:
zpool set autoexpand=on <pool>
Ich boote hier noch einmal.

zpool online -e <pool> <new-partion-disk-by-uuid>
zpool set autoexpand=off <pool>
vorgehen.

Das ist Zeitlich das Beste vorgehen, da nach meiner Erfahrzung ein Resilver schneller läuft, als ein Copy-on-File.

Man sollte sich aber jeweils alle Festplattennamen und Partitionen aufschreiben und so seine Scripte ergänzen.
Über den Parameter "zpool -n" läuft der Kommand nur im Testmodus.

Code:
 $ man zpool
 -n        Displays the configuration that would be used without ac‐
          tually adding the vdevs.  The actual pool creation can
        still fail due to insufficient privileges or device shar‐
        ing.
Wow vielen Dank für die umfassende und sachliche Antwort!
Ich nutze nur eine NVME, auf der die Rootsysteme der Container und Virtuellen Maschinen liegen, die sind immer so 12 GB oder so groß, auf dem ZFS Pool ("Tank" 3x10 TB) liegen dann die Daten, die jeweils gemountet als 2. Laufwerk eingehängt sind. Das ist ein Z1Raid. Beim Resilvern simuliere ich ja quasi einen Festplattendefekt und tausche dann wie oben beschrieben eine nach der anderen aus. Dabei habe ich bedenken, was passiert, sollte hier ein Fehler entstehen, kann ich dann bedenkenlos die ursprüngliche Festplatte wieder einsetzen und alles läuft, wie vorher? Da habe ich etwas Angst um die "Rückkehrmöglichkeit" :-( auch, wenn es etwas mehr Zeit kostet, würde ich lieber den "sichereren" Weg bevorzugen.
Sollte ich zwei Pools (Tank und tank) einbinden und dann die VM/CT einfach verschieben?
 
Dabei habe ich bedenken, was passiert, sollte hier ein Fehler entstehen, kann ich dann bedenkenlos die ursprüngliche Festplatte wieder einsetzen und alles läuft, wie vorher?
Idealerweise "replaced" man eine Disk, indem man die Neue (vorübergehend) zusätzlich anschließt! Notfalls per USB-Adapter.

man zpool-replace kennt die Syntax.
 
Hallo Udo, Danke dir für den weiteren Gedankenansatz.
Du meinst, ich nehme die 4. (größere) Platte mit in den Pool auf? Und nehme dann hinterher eine der drei bestehenden (kleineren) Platten "wahlfrei" wieder heraus usw? Dabei wird ja der ganze Raid-Z1Pool jedes mal komplett neu arrangiert? Dabei verliere ich ja vermutlich jedes mal die Möglichkeit der "Rückkehr" :-(
Nochmal zur Veranschaulichung, Ich betreibe einen Familien Homeserver mit einer NVME als Systemplatte mit Proxmox und den VM/CTs. Dazu habe ich einen Z1-Pool aus drei HDD ("Tank") um dort die Datenfestplatten der VM/CT abzulegen. und alle 4 Laufwerke sollen durch jeweils größere Ersetzt werden. Am liebsten wäre es mir, wenn die Zuordnungen (101,102,... ) alle gleich bleiben würden und eigentlich auch, wenn der Name "Tank" für den Raid-Pool erhalten bliebe.
 
Du meinst, ich nehme die 4. (größere) Platte mit in den Pool auf?
Nein. Nicht mit diesem Wortlaut, nicht so, wie es "zpool add" machen würde. Aber ja, während des Vorgangs sind vier Platten im tank aktiv.

Das Ersetzen einer Platte durch eine andere ist ein offiziell vorgesehener Vorgang. Und zwar ausdrücklich auch für intakte Platten, nicht nur im Fehlerfall. Das macht man eben mit "zpool replace".

Wenn man das auf diese Weite macht, wird die vorhandene Redundanz nicht reduziert, die alte Platte bleibt ja bis zum Abschluss weiterhin Bestandteil des Pools.

Obiges gilt so für "Tank". Für die einzelne NVMe mache ich den Austausch in nur geringfügig abgewandelter Form:
Danach hat man einen kompletten und bootfähigen Mirror. Das kann man testen!
Erst nach dem Test die alte Partition aus dem Mirror entfernen. Fertig.

In beiden Vorgängen wird jeweils die Redundanz erhöht und am Ende auf den alten Wert zurück reduziert. Sicherer geht es nicht. Es gehen natürlich auch keinerlei Daten verloren.

Alternativ für den rpool: einfach die alte NVMe komplett per "dd" auf die neue kopieren und danach die zfs-Partition vergrößern. Dann ist nur ein "zpool expand" notwendig. Dies klappt natürlich nur, sofern die ZFS-Partition die letzte auf der Disk ist.


Disclaimer: das habe ich nun auswendig ohne Recherche herunter geschrieben, keine Garantie. Und ja, es kann immer etwas daneben gehen, dazu braucht man nur strategisch ungünstig die Device-Namen verwexeln. Also: immer schön Backups anlegen, und zwar vorher... ;-)

Das ganze sollte "irgendwo anders" bestimmt besser dokumentiert zu finden sein.
 
UdoB hat das Vorgehen in meinen Augen und Erfahrung das zpool replace komplett und korrekt beschrieben.
Und mit den Oracle links hast Du eine Quelle der Kommandos.

Backup halt natürlich selbstverständlich immer notwendig, auch hier könnte man eine oder zwei SSDs per USB connecten und als neuen ZFS Pool verfügbar machen.
Dann dort per rsync o.ä. aus dem lokalen Backup die benötigten Daten kopieren.
Dann sichere ich noch das /etc und das /root Verzeichnis und habe alles bei einer Neuinstallation zur Verfügung.
 
Alles klar, dann habt lieben Dank, die Platten sollen heute kommen, dann habe ich eine Idee, wie ich vorgehen kann und arbeite mich mal durch.
 
  • Like
Reactions: news

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!