Ecco un breve tutorial per comprimere al massimo le imamgini qcow2.
Le fasi principali necessarie sono:
- Montare il filesystem in read-only oppure attivare il device sull’host
- Eseguire zerofree
- Ricomprimere l’immagine
I requisiti sono:
- zerofree (http://intgat.tigress.co.uk/rmy/uml/index.html oppure yum install zerofree)
- qemu-img (disponibili dal pacchetto qemu)
Opzionalmente
- qemu-nbd (disponibili dal pacchetto qemu)
- Modulo del kernel nbd
Il principio di funzionamento di zerofree sta nel sovrascrivere con zero tutti i blocchi del filesystem non utilizzati, così che si possa sfruttare al meglio la funzionalità compress del formato qcow2. Per maggiori dettagli vi rimando al stito di zerofree (http://intgat.tigress.co.uk/rmy/uml/index.html) e qcow2 (http://people.gnome.org/~markmc/qcow-image-format.html).
Per utilizzare zerofree su un immagine qcow2 esistente si possono applicare due soluzioni:
- Eseguire zerofree all’interno del guest. Questo richiede che il filesystem su cui si vuole operare sia in read-only e che all’interno del guest sia disponibile il programma zerofree.
Per rimontare un filesystem in read-only normalmente è sufficiente, avendo un accesso locale alla VM e non via SSH, entrare nel runlevel 1 (init 1) ed eseguire il comandomount -o remount,ro /
- Eseguire zerofree dall’host. Le immagini qcow2 non possono essere montate direttamente nell’host tramite un offset di mount o tramite kpartx; per questo motivo ci server il supporto al Network Block Device alias nbd. Ha come vantaggio la possibilità di eseguire tutto dall’host senza avviare le VM e che è necessario avere il comando zerofree solo sull’host.
Nello specifico utilizzeremo la soluzione numero 2.
Continue reading