Gemirrorte Proxmox-Installation von HDDs auf kleinere SSDs umziehen, wie?

maze-m

Member
Nov 26, 2024
40
4
8
Hallo zusammen!

Ich habe von einiger Zeit mein ProxmoxVE gemirrort auf HDDs (aka. "Blech") mit je 838.36 GiB installiert.

Nun würde ich gerne - um das Setup ein wenig zu "entzerren" und ProxmoxVE auf meinem doch betagten RX300 S8 schneller zu booten - die eigentliche ProxmoxVE-Installation auf SSDs umziehen wollen (jeweils 186.31 GiB).

Mein Setup sieht also Plattentechnisch gerade so aus:

Output von 'lsblk':
Code:
root@pve:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda       8:0    0 838.4G  0 disk
├─sda1    8:1    0  1007K  0 part
├─sda2    8:2    0     1G  0 part
└─sda3    8:3    0 837.4G  0 part
sdb       8:16   0 838.4G  0 disk
├─sdb1    8:17   0  1007K  0 part
├─sdb2    8:18   0     1G  0 part
└─sdb3    8:19   0 837.4G  0 part
sdc       8:32   0 186.3G  0 disk
sdd       8:48   0 186.3G  0 disk

(/dev/sda und /dev/sdb sind die momentan gemirrorten HDDs, /dev/sdc und /dev/sdd die SSDs die es werden sollen)

Ich hab mir von Copilot eine Anleitung zusammenschreiben lassen, wie ich Platten (HDDs) Schritt für Schritt durch die SSDs ersetzen kann:

1767044985702.png
1767045018720.png
1767045054491.png
1767045095653.png



Jetzt kommt allerdings mein Problem!

Wenn ich mit dem Punkt 'Partitions Layout kopieren' anfange, bekomme ich die folgende Meldung:


Code:
root@pve:~# sgdisk /dev/sda -R /dev/sdc
Caution! Secondary header was placed beyond the disk's limits! Moving the
header, but other problems may occur!

Warning! Secondary partition table overlaps the last partition by
1367452800 blocks!
You will need to delete this partition or resize it in another utility.

Problem: partition 3 is too big for the disk.
Aborting write operation!
Aborting write of new partition table.
root@pve:~#

Es scheint wohl leider keine gute Idee zu sein, den Inhalt meiner größeren HDDs auf die kleinen SSDs kopieren zu wollen :(....

Gibt es trotzdem Möglichkeiten, die Migration durchzuführen, ohne mein ProxmoxVE auf den SSDs komplett neu aufsetzen zu müssen?

Ich danke euch für eure Tipps :)
 
Du kannst eine neue (kleinere) Partition nicht an eine vorhandene, größere, ankleben. Das ist doch klar, oder?

Aber: seit langer Zeit kann man Mirrors entfernen. Also: ausgehend von dem einzigen Blech-Mirror ein neues vdev mit den kleineren SSDs hinzufügen. Dann den alten Mirror entfernen (man zpool-remove). Abwarten, das dauert etwas! Fertig. :-)

Voraussetzungen: die real genutzte Kapazität muss natürlich hinreichend klein sein. Und die Vorbereitungen der Partitionen hinsichtlich Bootfähigkeit sind essentiell, das hast du oben ja schon erkannt.
 
  • Like
Reactions: news
1767081680868.png
q.e.d. steht ganz oben. Direkt in der zweiten Zeile [.....]

Darüber hinaus dauert das re-setup wrsl. weniger lange als ein möglicher Umzug.
 
Last edited:
  • Like
Reactions: Johannes S and news
Du kannst eine neue (kleinere) Partition nicht an eine vorhandene, größere, ankleben. Das ist doch klar, oder?

Danke! Ja, dem bin ich mit bewusst und das macht ja auch Sinn .

Aber: seit langer Zeit kann man Mirrors entfernen. Also: ausgehend von dem einzigen Blech-Mirror ein neues vdev mit den kleineren SSDs hinzufügen. Dann den alten Mirror entfernen (man zpool-remove). Abwarten, das dauert etwas! Fertig. :-)

Hmm, wie mache ich das denn, dass ich meine Daten von dem Blech-Mirror dann auf die kleineren SSDs dann draufbekomme?

Voraussetzungen: die real genutzte Kapazität muss natürlich hinreichend klein sein. Und die Vorbereitungen der Partitionen hinsichtlich Bootfähigkeit sind essentiell, das hast du oben ja schon erkannt.

Blöde Frage, aber wie prüfe ich am einfachsten die real genutzte Kapazität auf den jetzigen Blech-Platten?

'df -h' müsste mir ja alles auf addiert den genutzten Plattenplatz so anzeigen, dass alles jeweils auf die neuen SSDs passt, oder?
 
Last edited:
Guten Morgen, es wird ja schon gesagt, deine Fähigkeiten reichen nicht aus; das mag jetzt schade sein, das zu hören. Aber installiert das System neu auf deine SSDs, nutze die Daten die du vorher Backup hast und das ganze System zurückzuspielen.
Die HDDs bleiben die erhalten und auf einem anderen System kannst du dir dann auch Daten daraus im Nachhinein nutzbar machen. Aber bedenke, da auf beiden, dem neuen und dem alten System, ein rpool existiert wird ein Mischbetrieb, ohne zu wissen wie, sehr schwierig sein.
 
Hmm, wie mache ich das denn, dass ich meine Daten von dem Blech-Mirror dann auf die kleineren SSDs dann draufbekomme?
Naja, der "remove mirror-0" Befehl ist "schlau" genug ;-)

Hast du einen Blick in die man page geworfen? "The specified device will be evacuated by copying all allocated space from it to the other devices in the pool."

Was auch immer du tust: bitte erst ein Backup anlegen - das beruhigt die Nerven im Problemfall ungemein ;-)

aber wie prüfe ich am einfachsten die real genutzte Kapazität auf den jetzigen Blech-Platten?
Schau mal: zpool list -v an. Meinst du so etwas? Ansonsten ist zfs list -o space die Referenz auf "oberer" Ebene, und zpool get all rpool verrät weitere Details zum Pool.
 
Last edited:
'df -h' müsste mir ja alles auf addiert den genutzten Plattenplatz so anzeigen, dass alles jeweils auf die neuen SSDs passt, oder?
Nein. "df" berücksichtigt keine Snapshots und keine "ZVOL" (virtuelle Disks); "df" zeigt nur Informationen zu Dateisystemen an, die momentan gemountet sind - also einer Untermenge der relevanten Daten. (Also nicht einmal alle ZFS-Datasets - die können ja auch existieren und nicht gemountet sein...)

Beim hantieren mit ZFS bitte immer zpool -h und zfs -h verwenden, alles andere ist möglicherweise schlicht falsch.
 
Last edited:
ich würde einfach den Inhalt von /etc/pve und dann noch die Datei /etc/vzdump.conf auf einen USB Stick im laufenden Betrieb sichern/kopieren.
Dann die zwei HDDs rausmachen die neuen SSD rein.
Proxmox dann frisch installieren, Netzwerk ist ja schnell eingerichtet.
Danach von der Sicherung einfach folgende Ordner und Dateien wieder in /etc/pve/ kopieren


Code:
jobs.cfg
storage.cfg
die Ordner qemu-server und lxc

und die Datei vzdump.conf wieder in den Ordner /etc kopieren falls diese geändert wurde
 
Last edited:
ich würde einfach den Inhalt von /etc/pve und dann noch die Datei /etc/vzdump.conf auf einen USB Stick im laufenden Betrieb sichern/kopieren.
Dann die zwei HDDs rausmachen die neuen SSD rein.
Proxmox dann frisch installieren, Netzwerk ist ja schnell eingerichtet.
Danach von der Sicherung einfach folgende Ordner und Dateien wieder in /etc/pve/ kopieren


Code:
jobs.cfg
storage.cfg
die Ordner qemu-server und lxc

und die Datei vzdump.conf wieder in den Ordner /etc kopieren falls diese geändert wurde

Vielen lieben Dank dir für die ausführliche Erklärung :)!

Wenn ich den Inhalt von '/etc/pve' und '/etc/vzdump.conf' wegsichere, habe ich dann auch meine Definitionen für meine drei LXC-Container und die VM mit weggesichert?

Sowohl die LXC-Container als auch die VMs liegen bei mir auf einem zweiten ZFS-Pool 'Datengrab', welchen ich am liebsten nach der Neuinstallation wieder einfach eingebunden hätte:


Code:
root@pve:~# zpool status
  pool: Datengrab
 state: ONLINE
  scan: scrub repaired 0B in 23:08:06 with 0 errors on Sun Dec 14 23:32:07 2025
config:

    NAME                        STATE     READ WRITE CKSUM
    Datengrab                   ONLINE       0     0     0
      raidz1-0                  ONLINE       0     0     0
        scsi-35000c5006b366a6f  ONLINE       0     0     0
        scsi-35000c500742eac17  ONLINE       0     0     0
        scsi-35000c5004843be53  ONLINE       0     0     0
        scsi-35000c50048437067  ONLINE       0     0     0

errors: No known data errors

Ginge das damit :)?
 
ja in den Ordnern lxc und qemu-server im Ordner /etc/pve liegen die Konfig Files der VM und lxc drin da ist dann alles drin was man benötigt.
Nach dem neu aufsetzen einfach den pool wieder importieren, die Konfig dazu steht ja in der storage.cfg drin das dann einfach entweder händisch eintragen oder die storage.cfg wieder in den Ordner /etc/pve kopieren sofern der pool vom pve genauso heißt wie vorher.
 
  • Like
Reactions: maze-m
ja in den Ordnern lxc und qemu-server im Ordner /etc/pve liegen die Konfig Files der VM und lxc drin da ist dann alles drin was man benötigt.
Nach dem neu aufsetzen einfach den pool wieder importieren, die Konfig dazu steht ja in der storage.cfg drin das dann einfach entweder händisch eintragen oder die storage.cfg wieder in den Ordner /etc/pve kopieren sofern der pool vom pve genauso heißt wie vorher.

Vielen vielen Dank nochmal für deine und eure Hilfe!

Ich habe jetzt PVE neu aufgesetzt, den Pool importiert und die folgenden drei Dateien (welche ich vorher gesichert hatte) in den Ordner '/etc/pve/qemu-server/' bzw. '/etc/pve/lxc' kopiert:
Code:
'/etc/pve/lxc/':
100.conf
101.conf
104.conf

'/etc/pve/qemu-servcer/':
104.conf

'/etc/pve/storage.cfg'

Nachdem ich die 'storage.cfg' auf die neue PVE-Installation kopiert hatte, musste ich den Pool 'Datengrab' noch mit
Code:
zpool import -f Datengrab
und konnte dann direkt meine LXC-Container hochfahren und die VM starten :).

Eine OT-Frage habe ich noch :).... Wie kann ich prüfen, ob ich nun wirklich eine gemirrorte Installation (sprich über meine beiden SSDs) habe?
Ich habe bei der Installation Raid-1 angegeben, aber will nur sichergehen, dass ich beim Ausfall einer SSD notfalls noch die Andere habe :)....
 
Via zpool status in der CLI oder via node > Disks > ZFS > Detail in der GUI.
 
Last edited:
  • Like
Reactions: maze-m