venerdì 16 maggio 2008

VirtualBox snapshot (1a parte)

Nel post “VirtualBox 1.5.6: il suo presente, il suo futuro”, vi parlavo della versione 1.5.6 di VirtualBox segnalandovi la sua mancanza di compatibilità con gli snapshot realizzati dalle versioni precedenti.

Personalmente avevo lasciato perdere questa feature di VirtualBox dopo aver perso un'intera macchina virtuale proprio in occasione di un aggiornamento. Desideroso di verificare se nel frattempo ci fossero stati progressi nella loro affidabilità, ho rimesso alla prova gli snapshot; quanto state per leggere ne è il risultato.

Intanto: cosa sono gli snapshot?
Traducibile come “istantanea”, per chi viene dal mondo Windows sono l'analogo dei suoi “punti di ripristino”. Forniscono la possibilità di registrare un punto fermo, chiamiamolo così, della macchina virtuale, a cui poter tornare nel caso questa abbia problemi.

Ed ecco allora la seconda domanda: quando fare uno snapshot?
Prima appunto di una qualunque attività che temete possa compromettere il funzionamento della macchina virtuale. Per mostrarvi concretamente questa possibilità, vi farò vedere come utilizzare gli snapshot per metterci al sicuro da problemi durante l'aggiornamento di Ubuntu dalla versione 7.10 alla nuova 8.04. Creeremo insieme uno snapshot prima di procedere all'aggiornamento, così da poter tornare al punto pre-aggiornamento nel caso qualcosa andasse storto.

Prima di cominciare però una terza fondamentale domanda: quando NON utilizzare gli snapshot?
Per rispondere occorre capire prima come funzionano; tenete perciò a mente questa domanda, una possibile risposta la vedremo alla fine del post.

Ok, siamo pronti, solo un paio di raccomandazioni prima di iniziare:
- fate sempre il backup della macchina virtuale prima di seguire gli esempi del post;
- anche se sul momento vi sembra di non capire una parte del post, proseguite con la lettura fino in fondo e sopratutto, realizzate gli esempi, l'argomento infatti è “più difficile a dirsi che a farsi”.

Ricordate com'è la struttura dei file di una macchina virtuale? Noo? Allora rinfreschiamoci la memoria. Nella cartella

C:\Documents and Settings\nome utente\.VirtualBox\

trovate 2 sottocartelle, vediamole.

In Fig. 1 lato sinistro potete vedere la prima sottocartella, Machines, che contiene a sua volta tante sottocartelle quante sono le macchine virtuali. In questo caso ne sono visibili 3: CentOS 5.1, Ubuntu 7.10 che è selezionata e visualizzata a destra, e Ubuntu 8.10. In ognuna di queste è contenuto (Fig. 1, lato destro) il file NomeMacchinaVirtuale.xml di configurazione della macchina virtuale (memoria, dischi, USB, cartelle condivise e via dicendo), e la sottocartella Logs dei file di log della macchina virtuale (utili in caso di problemi con la macchina virtuale per capirne il motivo);

Fig 1 - VirtualBox snapshot - contenuto sottocartella Ubuntu 7.10 nella cartella Machines
Fig. 1


In Fig. 2 potete vedere la seconda sottocartella, VDI, contenente il file NomeMacchinaVirtuale.vdi del disco rigido della macchina virtuale.

Fig 2 - VirtualBox snapshot - cartella VDI con file disco rigido normale della macchina virtuale
Fig. 2


Abbiamo detto come lo scopo dello snapshot in questo esempio, è cautelarci da eventuali problemi di aggiornamento della distribuzione, pertanto lo snapshot lo faremo prima dell'aggiornamento, così da avere quel punto di ripristino a quando la macchina virtuale sicuramente funzionava ancora. Procediamo.

A macchina virtuale spenta, selezioniamola e clicchiamo in alto a destra sull'icona a forma di macchina fotografica (Fig. 3)

Fig 3 - VirtualBox snapshot - pulsante creazione snapshot
Fig. 3


Comparirà una finestra di dialogo (Fig. 4) nella quale inserire il Nome dello snapshot ed una Descrizione dello snapshot. Inserite quanto ritenete opportuno e per voi significativo, poi cliccate su OK per proseguire.

Fig 4 - VirtualBox snapshot - finestra di dialogo creazione snapshot
Fig. 4


In pochi istanti verrà creato lo snapshot (Fig. 5) e passandovi sopra il mouse, comparirà un tooltip con alcune utili indicazioni, compresi i dati che avete appena inserito in Fig. 4.

Fig 5 - VirtualBox snapshot - tooltip dello snapshot appena creato
Fig. 5


Potete però notare anche una seconda voce, Stato attuale (Fig. 6), con il suo relativo tooltip. Per ora prendiamo atto che non vi è nessuna differenza, così vi è scritto, con Snapshot attuale; a capire cosa sono entrambi ci torneremo tra poco.

Fig 6 - VirtualBox snapshot - tooltip stato attuale identico snapshot attuale
Fig. 6


Andiamo invece a vedere cosa è accaduto ai file della macchina virtuale dopo la creazione dello snapshot. Nella cartella VDI, quella che contiene il disco rigido della macchina virtuale, nulla è cambiato (Fig. 7), confrontate con Fig. 2 che è la situazione di partenza per rendervene conto.

Fig 7 - VirtualBox snapshot - nessun cambiamento al disco rigido virtuale normale
Fig. 7


Molto è cambiato invece nella cartella Machines\Ubuntu 7.10, quella che contiene i file di configurazione della macchina virtuale (Fig. 8). E' comparsa una nuova sottocartella, Snapshots, contenente un file con un nome strano e dimensioni davvero esigue... per ora!

Fig 8 - VirtualBox snapshot - nuova cartella Snapshots e nuovo file vdi al suo interno
Fig. 8


Ora che con lo snapshot abbiamo creato un punto sicuro a cui tornare in caso di problemi, procediamo con l'aggiornamento di Ubuntu 7.10 a Ubuntu 8.04 (in gergo si chiama “avanzamento di versione”), Fig. 9 e Fig. 10.


Fig 9 - VirtualBox snapshot - Gestore aggiornamenti di Ubuntu
Fig. 9


Fig 10 - VirtualBox snapshot - Avanzamento di versione di Ubuntu
Fig. 10


Terminato l'avanzamento di versione e riavviata la macchina virtuale per controllare che tutto sia andato bene, (controllate che l'integrazione guest-host funzioni, altrimenti reinstallate le VirtualBox Guest Additions), spegnetela pure. Ci accorgiamo così che ora Stato attuale risulta modificato (Fig. 11) e differisce da Snapshot attuale. Prendiamone atto e nulla più, non siamo ancora pronti per capire cosa sono, perciò andiamo avanti.

Fig 11 - VirtualBox snapshot - stato attuale modificato e diverso da snapshot attuale
Fig. 11


Vediamo allora i corrispondenti cambiamenti a livello di file. Controllate intanto la cartella VDI: potete notare che tutto è rimasto invariato come in Fig. 7: ma allora dov'è stato salvato tutto l'aggiornamento di Ubuntu fatto dopo lo snapshot? Date un'occhiata alla cartella Snapshots (Fig. 12). Il file che era di poche decine di kilobyte, ora è di quasi 6 GB!

Lo schema di funzionamento degli snapshot di VirtualBox a questo punto si è rivelato.

Normalmente VirtualBox usa il file nomeMacchinaVirtuale.vdi all'interno della cartella VDI come disco rigido della macchina virtuale. Quando viene creato lo snapshot, VirtualBox non aggiorna più questo file ma lo mette da parte come punto di ripristino dello snapshot appena creato: tutte le modifiche nella macchina virtuale (nel nostro caso l'aggiornamento di Ubuntu) da quel momento in poi vanno a finire nel nuovo file di Fig. 12.

Fig 12 - VirtualBox snapshot - file nella cartella Snapshots cresciuto di dimensioni
Fig. 12


Per capire ancora meglio il meccanismo creiamo un secondo snapshot (Fig. 13) e vediamo cosa accade ai file.

Fig 13 - VirtualBox snapshot - nuovo snapshot di nome Snapshot 2
Fig. 13


Come la prima volta, nuovamente i precedenti file .vdi, sia il primo nella cartella VDI che il successivo creato nella cartella Snapshots, non vengono più toccati ma fanno da punto di ripristino per il rispettivo snapshot. Viene invece creato un nuovo file .vdi (Fig. 14) nella cartella Snapshot in cui, da quel momento in poi, verranno memorizzate tutte le modifiche fatte all'interno della macchina virtuale.

Fig 14 - VirtualBox snapshot - nuovo file vdi relativo a Snapshot 2
Fig. 14


Bene, chiarito il meccanismo di funzionamento degli snapshot, direi di approfittarne per prenderci una pausa: vi voglio in forze quando nel prossimo post "VirtualBox snapshot (2a parte)" vedremo un utilizzo concreto di tutto ciò. :)

@:\>