lunedì 29 ottobre 2007

VirtualBox: compattare dischi virtuali ad espansione dinamica - guest Linux (2a parte)

Aggiornamento: attualmente per compattare file VDI è più semplice e ricco di opzioni l'uso di CloneVDI. ____________________________________________________________________

Come dicevo? “Ok, è tutto...”? E invece no. La soluzione proposta nella 1a parte del post era infatti si molto immediata, usava direttamente comandi Linux disponibili in tutte le distribuzioni, ma scarsamente efficiente, soprattutto nella gestione dello spazio disco sull'host. Vediamo questa volta una soluzione che usa un programma dedicato, zerofree: non può rivaleggiare in facilità con la precedente soluzione ma è estremamente più efficiente.

Zerofree ed è il frutto del lavoro di Ron Yorston e di un successivo miglioramento di the_camel; colgo l'occasione per ringraziarli entrambi. Proprio come SDelete per i guest Windows, anche zerofree va a cercare tutti i blocchi liberi del disco rigido virtuale e lì riempie con il valore zero. Funziona su filesystem EXT2 ed EXT3 (un filesystem è il tipo di organizzazione dei file sul disco rigido, Windows usa NTFS) che è la scelta di default della stragrande maggioranza delle distribuzioni Linux, e sicuramente della Ubuntu e della Mandriva che useremo come esempio.

In questo post ci occuperemo in particolare di Ubuntu; Mandriva la vedremo successivamente come esempio valido per qualunque distribuzione. Salvate le vostre macchine virtuali e iniziamo.

Andate sulla pagina di Ron Yorston e scaricate il file zerofree-1.0.1.tgz. Potete farlo direttamente dal guest dove lo dovremo usare, oppure dall'host e poi tramite la condivisione cartelle copiarlo nel guest Linux. Portate per comodità il file sul desktop e osservate (fig. 1): si tratta di un file .tgz, un formato compresso tipico di Linux (simile ai file jar di Java per fare un esempio) contenente il sorgente del programma: dobbiamo decomprimerlo e compilarne il contenuto.

Fig. 1 - Compattazione disco virtuale con zerofree - file tgz zerofree
fig. 1

Aprite la shell (Applicazioni --> Accessori --> Terminale) e portatevi nella directory del Desktop con il comando

cd Desktop

Attenzione al fatto che tutte le distribuzioni più recenti hanno tradotto Desktop con Scrivania, perciò se il comando non funziona verificate che non sia il vostro caso. Ora date il comando:

tar xvzf zerofree-1.0.1.tgz

Verrà creata la directory zerofree-1.0.1 come sottodirectory di Desktop (fig. 2), ed infatti comparirà la relativa icona sul Desktop.

Fig. 2 - Compattazione disco virtuale con zerofree - decompressione file tgz
fg. 2

Ora entriamo nella nuova directory con il comando:

cd zerofree-1.0.1.

Se date il comando ls per vederne il contenuto, troverete i due file che ci interessano: zerofree.c, il sorgente C del programma che dovremo compilare, e Makefile, contenente le istruzioni per il compilatore (il programma che a partire dal sorgente del programma crea il file eseguibile).

Ubuntu però (ed anche altre distribuzioni), nella sua installazione di default non ha gli strumenti essenziali alla compilazione di un programma. No problem: provvediamo subito. Visto che siamo già nella shell, approfittiamone per fare da qui l'installazione del pacchetto build essential che contiene ciò che cerchiamo:

sudo apt-get install build-essential

Accettate gli ulteriori pacchetti che eventualmente vi indicherà come necessari e proseguite. Se non amate lavorare dalla shell, o magari volete dare un'occhiata all'installer grafico di Ubuntu, Synaptic, allora Sistema --> Amministrazione --> Gestore pacchetti Synaptic (fig. 3).

Fig. 3 - Compattazione disco virtuale con zerofree - Ubuntu Synaptic
fig. 3


Con il comando Cerca in alto a destra (fig. 4) usate la stringa "build-essential" per cercare e selezionare il pacchetto d'installazione corrispondente, poi cliccate su Applica per installare il tutto. Accettate l'eventuale software aggiuntivo che vi verrà segnalato (le cosidette dipendenze) e proseguite.

Fig. 4 - Compattazione disco virtuale con zerofree - Ubuntu installa build essential
fig. 4


Ma non basta: manca ancora una libreria, la ext2fs, usatela come stringa in ricerca nel comando Cerca ed installate anche questa (il nome esatto è e2fslibs-dev, fig. 5).

Fig. 5 - Compattazione disco virtuale con zerofree - Ubuntu installazione libext2fs
fig. 5


Ok, ora siamo davvero pronti alla compilazione di zerofree. Dalla shell date il comando:

make

Tutto qua; pochi istanti ed il programma sarà compilato. Se date un ls nella shell, lo vedrete nella lista dei file contenuto all'interno della directory in cui vi trovate, oppure potete vederne l'icona dal file manager (fig. 6).

Fig. 6 - Compattazione disco virtuale con zerofree - compilato su Ubuntu
fig. 6


Benissimo, non ci resta che copiarlo nella cartella root dell'amministratore visto che è appunto uno strumento di amministrazione:

sudo cp zerofree /root

Che dite, ci vogliamo fermare un pò a riprendere fiato? Il prossimo post sull'argomento sarà davvero molto intenso... e tutto da linea di comando. ;-)


@:\>