Come posso ridurre un disco VDI a crescita dinamica da VirtualBox?


35

I miei dischi virtuali (VDI) in crescita dinamica provenienti da varie installazioni di Ubuntu in Virtual Box stanno effettivamente "crescendo" costantemente.

L'eliminazione di file nella macchina virtuale non libera lo spazio che il mio file VDI ha preso dallo spazio sul disco rigido dell'host.

Come posso ridurre questi file per restituire lo spazio su disco rigido non utilizzato all'host?

Risposte:


34

Un file di disco rigido virtuale Virtual Box a crescita dinamica è in grado di crescere su richiesta della macchina virtuale fino alla dimensione massima definita nell'impostazione di questo file. Tuttavia, non libera lo spazio dei file che abbiamo eliminato nel sistema operativo guest.

Nel caso in cui il disco fosse cresciuto troppo, possiamo compattarlo nuovamente, purché lo spazio inutilizzato sia pieno di zeri e l'unità sia in formato VDI.

Per un filesystem ext2 to ext 4 questo può essere fatto dal guest Ubuntu con l'utilità da riga di comando zerofree * .Installa zerofree

zerofree /dev/sdxX

Ciò richiede che l'unità non sia in uso e sia smontata . Pertanto, potrebbe essere necessario collegarlo temporaneamente a un'altra macchina virtuale creata a tale scopo oppure è necessario avviare un ambiente live Ubuntu su questa macchina virtuale.

Sostituire /dev/sdxXcon la partizione formattata ext2, ext3 o ext4 in questione.

Su più di una partizione dobbiamo ripetere zerofreeper ciascuna partizione. Tieni presente che riempiendo di zeri il file virtuale crescerà temporaneamente fino alla dimensione massima.

Una volta che tutto lo spazio dell'unità inutilizzata è pieno di zeri, ridimensioniamo l'unità con

VBoxManage modifyhd <name>.vdi --compact

Ciò ridurrà considerevolmente le dimensioni del nostro file VDI.

* In un guest Windows possiamo sostituire lo spazio inutilizzato con l'utilità sdelete.


Funzionerà anche per un filesystem crittografato all'interno del guest?
Smichak,

Sicuro. Se stai usando ecryptfs, i file crittografati sembrano normali file su utilità del disco e questo funzionerà. Se stai utilizzando la crittografia dell'intero disco, non verrà comunque riconosciuta come una partizione formattata ext :)
chronospoon

Sto usando la partizione ext4 su un dispositivo a blocchi dm-crypt ... Ho provato il metodo e non vedo il file .vdi più piccolo dopo la compattazione. Penso che i blocchi zero siano salvati come blocchi diversi da zero sul dispositivo a blocchi sotto la dm-crypt.
Smichak,

2
@smichak: questo è il punto di crittografia. Cifrerà tutto il tuo disco per assicurarti anche che non possiamo vedere i confini dei file.
Takkat,

3
Se non si desidera collegare il VDI a un altro computer, è possibile avviare la modalità di ripristino e montare il disco in sola lettura mount -n -o remount,ro -t ext4 /dev/sda1e quindi zerofree -v /dev/sda1.
Hamid Nazari,

1

Ecco alcuni modi alternativi per azzerare lo spazio libero su disco (che può essere la parte che richiede più tempo). Successivamente, sarà comunque necessario eseguire VBoxManage modifyhd <disk> --compactper compattare il file del disco effettivo.


Questo comando può azzerare il disco mentre è smontato:

apt-get install zerofree
zerofree -v /dev/sdxN


Ecco un esempio di come ottenere dd per stampare periodicamente l'output:

dd if=/dev/zero of=temp-file-on-disk bs=20M

# run this to get the process ID of the dd command
pgrep -l '^dd$'
# then put the process ID on the command line to "kill -USR1"
# this will tell dd to print the current status (in another terminal)
kill -USR1 $(pgrep -l '^dd$' | awk '{print $1}')


Ecco un ddprogramma simile che stampa automaticamente l'output periodicamente:

apt-get install dcfldd
dcfldd if=/dev/zero of=temp-file-on-disk bs=20M

1
L'ho visto zerofreeusato su un filesystem montato, ma quando è stato montato di sola lettura. Anche per il root FS: sudo mount -o remount,ro /- ma in una sessione della GUI il root sarà occupato, quindi fallirà. Ma è possibile in runlevel 1 ( telinit 1), quindi non è necessario eseguire l'avvio da un CD live per farlo.
Tomasz Gandor,
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.