QCOW2 Images unter Proxmox verkleinern

In seltenen Fällen kann es vorkommen das man ein Image wieder verkleinern möchte. Da dies mit QCOW2 direkt nicht möglich ist, muss das Image in das RAW Format konvertiert werden. Der Speicher selbst wurde in der VM noch nicht zugeordnet. Folgende Schritte sind notwendig um das Image auf 55GB virtuelle Größe zu bekommen.

Bevor man mit dem eigentlichen Verkleinern am PVEhost beginnt muss man in der WindowsVM das Dateisystem Defragmentieren und dann das Volume verkleinern. Bei LinuxVM's genügt es Dateisystem zu verkleinern.
VM Images liegen (wenn diese lokal liegen) auf „var/lib/vz/images/<VMID>„.

1.) VM herunter fahren und Backup des Images erstellen

cp -a vm-209-disk-1.qcow2 vm-209-disk-1_backup.qcow2

2.) Konvertieren des Images in das RAW Format

qemu-img convert -O raw vm-209-disk-1.qcow2  vm-209-disk-1.raw

3.) Verkleinern des Images um 75GB

qemu-img resize vm-209-disk-1.raw -- -75G

4.) Zurück konvertieren in das QCOW2 Format

qemu-img convert -O qcow2 vm-209-disk-1.raw  vm-209-disk-1.qcow2

5.) VM-Größe auslesen und in der VM-Config richtig setzen

qemu-img info vm-209-disk-1.qcow2

image: vm-209-disk-1.qcow2
file format: qcow2
virtual size: 55G (59055800320 bytes)
disk size: 21G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    corrupt: false

Hier sieht die virtuelle Festplatte 21GB echten HDD Space verbraucht. Anwachsen kann sie bis 55GB (virtual size). Nun trägt man diesen Wert in die Config der VM ein.

nano /etc/pve/qemu-server/209.conf
...
virtio0: local:209/vm-209-disk-1.qcow2,format=qcow2,size=55G
...

6.) VM Starten, Checkdisk und Defrag ausführen.
7.) Backup des Images und RAWimage löschen.