15.12.08

Shrink di macchine virtuali VMWare



Sul mio MacBook Pro, grazie a VMWare fusion 2.0.1, convivono diverse macchine virtuali. Una per le demo di Evo (W2K3 R2), una per le demo di Connect + IPP + ISF (W2K3 R2), ed infine una per le applicazioni mail/Back-Office su base Windows XP.

Il disco interno del MacBook e' di ~150Gb. Immaginerete quindi l'importanza di una buona gestione dei waste-data su tutte le piattaforme, per far si che queste sprechino il minor spazio possibile, e riescano a non litigare nei 150Gb a loro disposizione.

In particolare la macchina virtuale di Connect, dopo un recente aggiornamento, aveva raggiunto le eccezionali dimensioni di ~40Gb! Accidenti! dovevo ripulire un po il disco.
Detto fatto, mi metto a cancellare tutti i file temp, l'explorer cache, lo snapshop di Prinergy etc. Dopodiche' eseguo un Defrag del disco et voila' ora lo spazio occupato (dichiarato in Windows) e' crollato a soli ~10Gb. Chiudo la virtual-machine e... con disappunto scopro che lo spazio occupato dalla macchina virtuale sul disco del Mac, e' sempre di ~40Gb.

grrrr... cercando nelle impostazioni di VMWare trovo una bellissima utility per la pulizia dei dischi. "Ci sono!" - mi sono detto. La faccio partire ... dopo circa 10min di elaborazione termina la sua procedura, vado a vedere lo spazio occupato dalla
virtual-machine e... Acc! e' ancora ~40Gb! Non capisco.

Internet Help me!
Dopo una breve ricerca sul web trovo questa bellissima utiliy (SDelete 1.51) che, come spiega egregiamente Mark Russinovich (suo ideatore e sviluppatore), riempie di "zeri" tutto lo spazio non utilizzato in una partizione NTFS. Per farla breve, Mark ci spiega che quando cancelliamo dei files in un sistema Windows, questi non vengono realmente "eliminati", viene solamente rimossa la loro reale posizione dalla MFT (Master File Table) del disco rigido. Quindi quando cerchiamo poi di ottimizzare i dischi virtuali di una virtual-machine, con l'apposita utility, in effetti tali posizioni "cancellate", dal sistema operativo, contengono ancora i dati originali, da qui nasce l'inghippo; l'utility di pulizia di VMWare, non sa se i medesimi dati sono inutilizzati o meno dall'OS.
L'utility di Russinovich, rimpiazzando lo spazio inutilizzato con degli "zeri", da' modo all'utility di pulizia del disco di fare il suo dovere in maniera egregia.

Per far partire l'utility, basta lanciare da riga di comando:
c:\>sdelete -c disk: (dove disk rappresenta la partizione logica che vogliamo pulire)

Alla fine di questa operazione ho spento la virtual-machine ed eseguito l'utility di pulizia disco. Tadaaa, la dimensione e' crollata a ~10Gb!!!

Tecnically, i passi da effettuare sono:
-fare un backup dalla macchina virtuale (non si sa mai)
-avviare la macchina virtuale, ed eliminare tutto l'eliminabile
-eseguire una deframmentazione del disco
-lanciare il comando sdelete -c disk: (per ogni partizione logica presente sulla macchina virtuale)
-spegnere la macchina virtuale
-effettuare una pulizia del disco con l'utility VMWare

...fatto.

Oggi mi sento molto Geek...

Buon shrink!