Proxmox VE: Ändern der ID einer VM

Manchmal ist es ganz nützlich in nachhinein die ID einer VM zu ändern. In meinem Fall zum Beispiel, weil ich über die ID auch die Sortierung der VMs in Proxmox VE realisiere. Offiziell gibt es keine einfache Möglichkeit. Eine Lösung, die im englischsprachigen Support-Forum genannt wird, ist das Erstellen eine Backups der VM und anschließendes Zurückspielen des Backups mit der neuen ID. Das ist natürlich toll, da es über die Web-GUI gemacht werden kann, dauert aber auch (je nach Größe der vDisk) teilweise ewig.

Ich mache es daher meist direkt über die Shell auf dem Proxmox VE Host. Man muss dazu einige Dateien editieren, umbennen oder verschieben. Welche das im Detail sind, möchte ich anhand eines Beispiels erklären.


ACHTUNG: Bevor ihr eine Änderung vornehmt vergewissert euch bitte das ihr ein aktuelles und valides Backup aller eurer Dateien und Systeme habt. Abgsehen davon, dass ich keine Gewähr übernehme hier alles richtig beschriebenzu haben und auch keine Haftung für Schäden an euren Systmen übernehme, kann immer mal etwas schief gehen. Das System stürzt zwischendrin ab oder sonst irgendetwas dummes passiert.


Wir gehen davon aus, dass eine VM mit der ID 100 existiert und diese die neue ID 200 bekommen soll. In meinem Beispiel hat die VM eine virtuelle Festplatte im QCOW2 Format die in einem Storage vom Typ Directory abgelegt ist. Solltet ihr andere Storage Typen verwenden, wie zum Beispiel LVM Thin, Ceph oder ZFS kann natürlich ein abweichendes Vorgehen notwenig sein.

Als erstes sollte man natürlich sicherstellen, dass die ID nicht schon vergeben ist sonst zerstört man sich eventuell schon ein mal eine ganze VM und das wäre sicher weniger lustig. Dann legen wir eine (zusätzliche) Sicherung der VM Konfiguration an:

# als root auf dem Proxmox Host
cd /etc/pve/qemu-server/
cp -p 100.conf 100.conf.save

im Anschluss fahren wir die VM herunter und dann können wir die Konfigurations-Datei umbennen

mv 100.conf 200.conf

im Grunde haben wir die ID der VM jetzt schon geändert ABER die ID steht noch an anderen Stellen wie z.B. im Namen des Verzeichnisses in dem die virtuelle Festplatte liegt oder in Namen des QCOW2-Files. Da wir ja die ID 100 nun wieder benutzen können würde das zu totaler Verwirrung und Fehlern führen, wenn wir das nicht weiter anpassen.

Welche Dateien und Pfade im Einzelfall betroffen sind, hängt von der Konfiguration der virtuellen Festplatte und der Storages ab. Dazu einfach in die dazugehörige Datei schauen /etc/pve/qemu-server/200.conf

boot: scsi0
bootdisk: scsi0
cores: 8
cpu: host
ide0: none,media=cdrom
keyboard: de
memory: 12288
name: Random-VM
net0: virtio=AA:BB:CC:11:22:33,bridge=vmbr0
numa: 0
onboot: 1
ostype: l26
scsi0: local:100/vm-100-disk-1.qcow2,discard=on,size=250G
scsihw: virtio-scsi-pci
sockets: 1
startup: order=10
vga: qxl

Hier sehen wir nun, dass in meinem Beispiel eine einzelne virtuelle Festplatte mit 250GB zugewiesen ist. Die Festplatte wird über den Bus scsi0 angesprochen und liegt auf dem Storage local und hat noch die alte ID 100. Es können natürlich auch mehrere vDisks auf unterschiedlichen Storages betroffen sein.

Also bennene ich nun diese eine Datei und das übergeordnete Verzeichnis um. Wo euer Storage liegt, müsst ihr natürlich wissen. In meinem Fall ist es der Standardpfad des Standardstorages.

cd /var/lib/vz/images/
mv 100 200
cd 200
mv vm-100-disk-1.qcow2 vm-200-disk-1.qcow2

Handelt es sich nicht um QCOW2-Dateien sondern um logical volumes, kann man die Tools des LVM verwenden:

lvrename vg01 vm-100-disk1 vm-200-disk1 

Nun ändern wir noch die entsprechende Zeile in unserer Konfigurations-Datei ab

# Aus
scsi0: local:100/vm-100-disk-1.qcow2,discard=on,size=250G
# wird ein
scsi0: local:200/vm-200-disk-1.qcow2,discard=on,size=250G

und sind damit fertig.

Nun sollte die VM im Web-GUI die neue ID tragen und ihr solltet in der Hardware-Konfiguration sehen, dass die virtuelle Festplatte ebenfalls eine 200 im Namen trägt. Anschließend könnt ihr die VM wieder starten.