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.