ZFS SSD Migration Consumer zu Server SSD

neobiker

New Member
Jul 27, 2025
10
1
3
Hallo,
ich möchte meine Proxmox 8.4.14 installation (root system auf ZFS) von einem Consumer SSD Mirror (2x 512M) auf Server SSD Mirror (2x 950G) migrieren.
Testweise habe ich die neuen SSD in einem freien PC eingebaut und Proxmox 9.1.2 darauf neu auf einem ZFS-mirror installiert.
Einzelne VM mittels PBS auf diesen Test-Server umziehen geht soweit.

Jetzt ist die Frage: wie gehe ich am besten vor, um die neuen SSD im vorhandenem Ziel-Server zu verwenden?

Ich dachte ich baue die vielleicht einfach in den Ziel-Server zusätzlich ein, und boote dann im BIOS BootMenü den neuen Proxmox (neue SSD)
und nicht von den alten NVME-Riegeln.

Ich habe aber Zweifel, da ja auf beiden SSD-Mirror (Riegel und Server-SSDs) ein identisches Proxmox ZFS Layout ist:
rpool/ROOT/pve-1
rpool/data
rpool/encrypted_data

Kommen sich die 2x verschiedenen ZFS mirror da nicht ins Gehege - Zerstörungspotential der ZFS Daten?
Ich habe etwas von ZFS export / import gelesen, bevor man ZFS Disks in fremde Server einbaut.
Verstehe aber nicht ganz das Vorgehen, und befürchte wegen dem identischen logischen Layout Probleme.

Danke für Eure Tips

Gruss Neobiker
 
Praktisch: Nutzung einer HDD Copy Station (gleich gross) - vollkommen agnostisch. Funktioniert i.d.R. (Anmerkung: Sorry, bei Mirrors sicherlich auch, aber der zusätzliche Speicherplatz ist das "Hin") .... aber generell: HDD/SSD Copy Station)

[Virtualization Support for SME and NGOs | DLI Solutions ]
 
Last edited:
Praktisch: Nutzung einer HDD Copy Station (gleich gross) - vollkommen agnostisch. Funktioniert i.d.R. (Anmerkung: Sorry, bei Mirrors sicherlich auch, aber der zusätzliche Speicherplatz ist das "Hin") .... aber generell: HDD/SSD Copy Station)

[Virtualization Support for SME and NGOs | DLI Solutions ]
HDD Copy Station geht IMO nicht für nvme-SSD / U.2 SSDs
 
  • Like
Reactions: FrankList80
zpool export und zpool import anschauen.
Das openzfs wiki ist dein Freund.
inwiefern ist das jetzt eine neue Info
Ich habe etwas von ZFS export / import gelesen, bevor man ZFS Disks in fremde Server einbaut.
Verstehe aber nicht ganz das Vorgehen, und befürchte wegen dem identischen logischen Layout Probleme.

bzw. hilfreiche Antwort auf meine Frage? Diese Diskussion will ich gar nicht starten.
Bitte auf mein Problem antworten ;-)

Beispielweise mit Codeschnipseln, der Info ob man ein aktives zpool rpool exportieren kann (der Ast auf dem man sitzt) usw. etc. pp.
Danke.
 
Last edited:
von einem Consumer SSD Mirror (2x 512M) auf Server SSD Mirror (2x 950G) migrieren.
Ich habe einfach zunächst die dritte SSD wie in https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_zfs_change_failed_dev beschrieben angeklebt.

Nach diesem ersten Zwischenschritt (vor dem Wiederholen mit dem vierten Device) hat man einen dreifach-Mirror und kann dessen Funktion vollständig testen.

Der Vorteil im Vergleich zum oft dokumentierten Vorgehen "austauschen eines Devices eines Mirrors" ist, dass man während des Prozesses erhöhte Redundanz hat, nicht etwa verringerte.

Falls man keinen weiteren Steckplatz zur Verfügung hat, hilft (vorübergehend!) ein USB-Adapter.


Egal welches Vorgehen man wählt: ein Backup ist immer eine gute Idee, weil immer etwas schiefgehen kann. Konkret sind alle Manipulation an Partitions-Tabellen grundsätzlich "gefährlich".

Viel Erfolg!
 
  • Like
Reactions: neobiker
UdoBs Weg ist der sicherste, geht aber auch ohne zusätzliche SSD. einfach die erste SSD tauschen, resilver laufen lassen, dann die zweite SSD und anschließend die LVMs vergrößern. (edit: autoexpand für den Pool muss auf on sein)

Ich habs fürs tauschen den Guide von Thomas Krenn verwendet, damit hat es problemlos funktioniert:

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

Edit: siehe Johannes S post, LVM und ZFS is schwachsinn, my bad.
 
Last edited:
Hat jemand Erfahrung mit zpool export rpool auf proxmmox ?
Geht sowas überhaupt?
Da würde ich ja das aktive zpool mit ROOT exportieren ...
Vermutlich geht das nur mit Daten-Pools, aber nicht mit dem ROOT, oder?

Die Idee dahinter:
-> Einbau der neuen SSDs in anderen server
-> BIOS Bootmenü proxmox v9 booten (neue SSD) - sollte gehen denke ich (ZFS der alten SSD nicht sichtbar/aktiv ?!)
-> BIOS Bootmenü proxmox v8 booten (alte SSD) - sollte gehen denke ich (ZFS der neuen SSD nicht sichtbar/aktiv ?!)

Wenn das ginge, wäre denkbar:
-> Alte SSDs booten: zpool export rpool
-> BIOS Bootmenü proxmox v9 booten (neue SSD)
-> zpool import rpool rpool2 - ZFS rpool der alten SSDs als rpool2 importieren
Dann sollten alle ZFS volumes verfügbar sein, oder?
 
Rettungssystem... ja, indeed, da hätte ich auch drauf kommen können.

Wenn jetzt folgendes der Fall wäre, könnte man das einfach mal probieren:
- BIOS Bootmenü proxmox v9 booten (neue SSD) - ZFS der alten SSD nicht sichtbar / aktiv , stören den aktiven ZFSPOOL nicht?
 
Also:
Ich habe die VMs jetzt auf den neuen SSDs per PBS auf einen neuen PVE9 gezogen, auf einem Ersatz-Rechner. Da laufen die erstmal produktiv.

Den alten Server (PVE8) habe ich mittels Proxmox ISO im Debugmodus gebootet:
  1. CTRL-D bringt einen in eine Shell
  2. zpool import -a # zeigt mir den rpool an (Fremdsystem), importiert aber nicht
  3. zpool import -f rpool # importiert den zpool
  4. zpool list # zpool rpool (mirror) wird angezeigt
  5. zpool export
  6. zpool list # keine Anzeige
  7. reboot
Soweit die Theorie und Praxis.

Aber:
Den PVE8 kann ich trotz "exportierten" zpool rpool ganz normal starten (Initrd lädt den wohl mit -f).

Ich kann jetzt nur vermuten, dass wenn ich die neuen SSD (PVE9) parallel einbaue und über das BIOS die PVE9 Disk selektiere,
die initrd den richtigen zpool über die device-id und nicht über den namen rpool importiert.

Kann das irgendjemand bestätigen, kann ich das irgendwo nachlesen (RTFM)?

Gruss
Neobiker
 
Also, wenn ich diesen post hier lese (change zfs pool name), dann lädt die initrd doch wie befürchtet einfach root=ZFS=rpool/ROOT/pve-1 boot=zfs.
Damit würden beim booten mirror-0 und mirror-1 den rpool bilden, wobei in beiden mirrors jeweils ein volume ROOT/pve-1 enthalten ist.
Genau das hatte ich befürchtet.

Für mich in meinem Anwendungsfall (alte zfs volumes einbinden, aber das proxmox system wird nicht benötigt) ist es jetzt einfach:
a) Ich kann einfach das (alte) volume ROOT in ROOT_old umbenennen, dann finde ich alle volumes der alten SSD unter rpool/ROOT_old/xxx.
b) Ich kann den zpool umbenennen, wie in dem post beschrieben
c) Ich kann den zpool zerstören und einen neuen (leeren) anlegen

b) ginge so:
4) Reboot, boot the proxmox installer in debug mode (advanced - graphical debug), press Ctrl-D once to skip first stage
5) "zpool import" lists all your pool including rpool.
"zpool import -f rpool spool",
"zfs list" to verify, then
"zpool export spool".

Edit:
/etc/default/zfs lesen zeigt den Ausweg: ZPOOL_IMPORT_PATH und/oder ZFS_POOL_EXCEPTIONS
Code:
# By default, a verbatim import of all pools is performed at boot based on the
# contents of the default zpool cache file.  The contents of the cache are
# managed automatically by the 'zpool import' and 'zpool export' commands.
#
# By setting this to 'yes', the system will instead search all devices for
# pools and attempt to import them all at boot, even those that have been
# exported.  Under this mode, the search path can be controlled by the
# ZPOOL_IMPORT_PATH variable and a list of pools that should not be imported
# can be listed in the ZFS_POOL_EXCEPTIONS variable.
#
# Note that importing all visible pools may include pools that you don't
# expect, such as those on removable devices and SANs, and those pools may
# proceed to mount themselves in places you do not want them to.  The results
# can be unpredictable and possibly dangerous.  Only enable this option if you
# understand this risk and have complete physical control over your system and
# SAN to prevent the insertion of malicious pools.
ZPOOL_IMPORT_ALL_VISIBLE='no'

# Specify specific path(s) to look for device nodes and/or links for the
# pool import(s). See zpool(8) for more information about this variable.
# It supersedes the old USE_DISK_BY_ID which indicated that it would only
# try '/dev/disk/by-id'.
# The old variable will still work in the code, but is deprecated.
#ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:/dev/disk/by-id"

# List of pools that should NOT be imported at boot
# when ZPOOL_IMPORT_ALL_VISIBLE is 'yes'.
# This is a space separated list.
#ZFS_POOL_EXCEPTIONS="test2"

... und die Proxmox Doku selbst:

Editing the Kernel Commandline​

Systemd-boot
The kernel commandline needs to be placed as one line in /etc/kernel/cmdline. To apply your changes, run proxmox-boot-tool refresh, which sets it as the option line for all config files in loader/entries/proxmox-*.conf.
 
Last edited:
So, nun Murphys Law:
Die 2x neuen PLP SSDs laufen in meinem alten Asus Board beide (Core 6.Gen),
in meinem MSI Board (Core 12.Gen) lässt sich nur eine nutzen.
Soviel zum Thema Technik Standards :rolleyes: