libera spazio non utilizzato su un file di immagine qcow2 su kvm / qemu


23

stiamo usando kvm / qemu con qcow2-images per le nostre macchine virtuali.

qcow2 ha questa bella funzionalità in cui il file immagine alloca solo lo spazio effettivamente necessario dalla macchina virtuale. ma come posso ridurre il file di immagine, se lo spazio allocato della macchina virtuale si riduce?

esempio:

1.) creo una nuova immagine con formato qcow2, dimensioni 100 GB

2.) Uso questa immagine per installare Ubuntu. l'installazione richiede circa 10 GB, il file immagine cresce fino a circa 10 GB. niente di inaspettato finora.

3.) riempio l'immagine con circa 40 GB di dati aggiuntivi. il file di immagine cresce fino a 50 GB. Sono d'accordo con quello :-)

4.) qui diventa strano: elimino tutti i dati da 40 GB sull'immagine, ma le dimensioni dell'immagine continuano a consumare 50 GB.

domanda: come posso liberare quei 40 GB di dati e ridurre l'immagine ai soli 10 GB necessari?

grazie in anticipo, berni

Risposte:


26

L'immagine non si ridurrà automaticamente, poiché quando si eliminano i file, in realtà non si eliminano i dati (ecco perché funziona il ripristino). Qemu ha una funzione per ridurre le immagini di qcow2, ma ciò che fa l'utilità è davvero deduplicare gli zero dal disco, lasciando intatte tutte le altre informazioni. Quindi l'idea sarebbe di:

  1. Azzera il riempimento dell'unità ( dd if=/dev/zero of=/some/filefino a quando non esaurisci lo spazio)
  2. cancella / alcuni / file
  3. spegni la VM
  4. cd dove sono conservate ed eseguite le immagini per la VM qemu-img convert -O qcow2 original_image.qcow2 deduplicated_image.qcow2
  5. modificare le impostazioni della VM per utilizzare il nuovo deduplicated_image.qcow2, verificare che la VM funzioni e rimuovere la vecchia immagine

Questo, afaik, funzionerà solo con immagini qcow2, non ho testato altri formati.


3
Se hai un guest windows, esegui SDelete -z per azzerare tutto lo spazio libero (passaggi 1,2 sopra)
ndemou,

17

virt-sparsify può fare tutto questo con meno problemi da parte tua: http://libguestfs.org/virt-sparsify.1.html


Non sono sicuro che fosse lì nel 2011
dyasny il

2
@dyasny Se le risposte esistenti a vecchie domande sono diventate obsolete nel tempo, vale la pena scrivere una nuova risposta. Questa particolare nuova risposta potrebbe tuttavia non essere all'altezza degli standard di questo sito.
Kasperd,

4
@dyasny Se qualcuno vuole spendere gli sforzi per scrivere una nuova risposta di qualità, ogni volta che quella vecchia è obsoleta, dovrebbero essere incoraggiati a farlo. Una discussione più approfondita su come gestire risposte obsolete è più adatta per meta.
Kasperd,

1

virt-sparsify fileA fileBfarà tutto ciò, ma non ridurrà effettivamente la dimensione dell'immagine. Per questo è necessario aggiungere --compress.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.