Zum Inhalt springen

Speicherplatz aus Image automatisch wieder freigaben (linux kvm qcow2)

  • von

Legt man unter kvm eine virtuelle Maschine mit virtuellen Laufwerken qcow2-Format an, so wachsen diese, logischerweise, je mehr Daten sich in ihnen befinden.
Löscht man jedoch große Mengen an Dateien wird der Speicherplatz nicht wieder an das Hostsystem freigeben.

Das ist schade, da so Backups ganzer virtueller Maschinen oft unnötig groß sind und auch im produktiven Betrieb unnötig Speicherplatz blockiert wird.

Dem kann jedoch mit einigen Änderungen an den virtuellen Maschinen Abhilfe geschaffen werden.

Das genaue vorgehen davon hängt davon ab was jeweils in der virtuellen Maschine installiert ist.

Grundsätzlich ersetzt man den Controller für die Festplatten durch einen vom Typ „scsi-virtio“ und hängt an die Definitiv der Festplatte folgenden Parameter an „discard=’unmap'“.

Konkret sieht das jeweils wie folgt aus:

Controller:

<controller type='scsi' index='0' model='virtio-scsi'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</controller>

und für die Imagedatei

  <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' discard='unmap'/>
      <source file='/var/lib/libvirt/images/bloy_webseiten/bloy_webseiten-customers.qcow2'/>
      <target dev='sdb' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>

Um nun den Speicherplatz freizugeben führt man in der virtuellen Maschine

fstrim -v /

aus, wobei man / durch den Pfad ergänzen sollte, an dem die Imagedatei/Partition in das Betriebssystem der virtuellem Maschine eingehangen wird.
Unter Windows sollte ein Durchlauf der Defragmentierung ebenso wirken.

***

Hinweis: Bei der Sicherung ist es praktisch rsync mit dem Paramter –sparse zu verwenden, sodass nur der wirklich belegte Teil des Images übertragen wird.

Schlagwörter: