Shrinking a Dynamic VirtualBox Disk Image

From Ability
Jump to: navigation, search

Quando liberiamo spazio sul disco rigido virtuale, il corrispondente file vdi che lo contiene sull'host non si ridimensiona di conseguenza: occorre forzarne il ridimensionamento con un apposito comando, modifyhd. Purtroppo però ciò non è sufficiente, occorre che sia soddisfatto un pre-requisito: lo spazio libero sul guest deve essere marcato a zero prima che il comando possa agire su di esso compattandolo. Questo perché quando cancellate un file, questo non viene realmente cancellato: semplicemente lo spazio che occupa viene dichiarato libero in una apposita tabella, in questo modo lo si può riutilizzare per scriverci nuovi file. I settori del disco rigido quindi, contengono ancora i dati, ed è per questo che il comando modifyhd non riesce a fare il suo lavoro: può infatti agire solo su spazio realmente vuoto e non su quello dichiarato semplicemente come tale. Occorre un programma che svuoti per davvero lo spazio dichiarato libero.

Steps

  • Install zerofree on your virtualbox guest machine.
$apt-get install zerofree
  • Boot to safe mode (recovery mode) where you can access your partition (reboot and hold "shift", then select "recovery mode").
  • Mount the partition as read-only
$mount -o ro /dev/sdb1 /mnt/tmp
  • Run zerofree on the right partition
 $zerofree /dev/sdb1
  • Shutdown the virtual machine and run
$VBoxManage modifyhd --compact /yourpath/diskimage.vdi 

Fonti

www.stenoweb.it[1]

www.thelinuxdaily.com[2]