Riduzione (shrink) dei file immagine disco Qcow2 (QEMU-KVM)
Nel tempo i file del disco *.qcow2 di un guest possono diventare più grandi dei dati effettivi archiviati al loro interno, ciò accade perché il sistema operativo guest normalmente contrassegna solo un file eliminato come zero, non viene effettivamente eliminato (motivi di prestazioni), quindi il relativo file qcow2 non è in grado di distinguere tra memoria allocata utilizzata e memoria allocata non utilizzata.
Per ridurre i file *.qcow2 hai due opzioni, abilitare il supporto TRIM, oppure azzerare tutto lo spazio libero delle partizioni contenute nel guest e quindi riconvertire l’immagine con qemu-img.
AVVISO IMPORTANTE: prima di procedere con qualsiasi comando fai sempre dei backup dei file *.qcow2; non si sa mai!
Preparazione del guest Linux
Questi passaggi vengono tutti eseguiti all’interno del GUEST.
Sul guest Linux utilizzare uno dei seguenti metodi per azzerare il disco.
Metodo 1
sudo fstrim -v /
Metodo 2
sudo dd status=progress if=/dev/zero of=/mytempfile
Al termine dell’esecuzione del comando, ci potrebbe volere del tempo, cancellare il file mytempfile precedentemente generato con “dd”.
sudo rm -f /mytempfile
Preparazione del guest Windows
- Deframmenta le unità del tuo guest Windows utilizzando il programma di deframmentazione integrato o uno di terze parti (es. Defraggler o UltraDefrag).
- Scarica SDelete e salvalo da qualche parte sul tuo sistema (es. C:\windows\system32).
- Azzera lo spazio libero usando SDelete.
Apri un prompt dei comandi ed esegui SDelete per azzerare lo spazio libero:
sdelete -z c:
Se hai più partizioni, per esempio E:\ usa:
sdelete -z e:
Shrink dei file immagine Disco
Questi passaggi vengono tutti eseguiti all’interno del HOST.
Spegnere la Virtual Machine ed aprite un terminale, eseguire i seguenti comandi.
Per ottenere un’immagine disco compressa utilizzate il seguente comando:
qemu-img convert -O qcow2 -c immagine.qcow2 immagine_compressa.qcow2
Opzione -c per la compressione dell’immagine.
Mentre se non si desidera comprimere l’immagine:
qemu-img convert -O qcow2 immagine.qcow2 nuova_immagine.qcow2
Nel caso sia stata creata un’immagine compressa, di dimensioni molto inferiori, pertanto più idonea ad essere archiviata o trasferita e la si voglia decomprimere usare il seguente comando:
qemu-img convert -O qcow2 immagine_compressa.qcow2 nuova_immagine.qcow2
Nella sottostante immagine i tre stati, normale, shrinkato compresso e per ultimo decompresso, con le relative dimensione espresse in Gigabyte dei dischi virtuali qcow2:
Avvia la tua Virtual Machine e verifica che tutto funzioni.
Quando hai verificato che tutto è a posto puoi anche eliminare il backup del disco originale, oppure spostarlo in un archivio di backup offline.