A Ovest Di Paperino

Welcome to the dark side.

Virtual PC, HD differenziali e undo disks

Ho già parlato in passato di usi convenienti di Virtual PC con Windows XP: per l'appcompat, per la "paranoia" (ovvero un PC virtuale intero su cui scaricare allegramente tutto il malware possibile) e per nostalgia (vuoi mettere far girare windows 3.1 in una VM?). Io stesso ne ho creati per ora due, uno appunto per l'appcompat, l'altro per la mia personale paranoia. Il motivo per avere due VPC separati, sta nella sicurezza aggiuntiva di poter installare qualche applicazione più importante in quello destinato all'appcompat. Per non sprecare quintalate di bytes sull'HD, si possono usare un paio di features di Virtual PC: gli HD differenziali e gli undo disks.

Gli HD differenziali sono HD virtuali collegati ad un HD virtuale padre. Nel file dell'HD differenziale verranno scritte solo le differenze tra il disco padre e il disco figlio. L'idea è di creare un disco padre comune a tutte le VPC e tanti dischi figlio contenenti solo il delta in modo da avere una occupazione di spazio inferiore.

Gli undo disks sono molto simili agli HD differenziali: quello che fa VPC in questo caso è creare un drive differenziale temporaneo per tutta la durata d'uso del virtual PC. Durante qualsiasi momento sarà possibile decidere se tenere eventuali modifiche (merge) oppure buttare tutte queste modifiche temporanee e ricomiciare da capo (discard). Questo è molto utile nel lancio di software sospetto: si fa il merge, si lancia il software e poi si decide se tenere le modifiche o buttarle via; molto comodo anche in caso di debug per "memorizzare uno stato del PC"

Nel mio caso, quello che voglio implementare è una cosa del genere:

In questa figura XP "Vanilla" - azzurro - rappresenta l'HD virtuale padre (e che alla fine non sarà associato a nessuna virtual machine), mentre i due HD a destra  -rossi - rappresentano due HD differenziali entrambi derivati da Vanilla. L'asterisco sta ad indicare l'uso dell'undo disks feature.

La prima cosa da fare, supponendo di avere appena installato Virtual PC 2007, è quella di creare una macchina virtuale temporanea per installarci XP. Al momento della creazione di tale macchina, si crea un HD virtuale chiamato Vanilla; ci si installa XP da CD, magari dopo aver snellito il CD di installazione attraverso nlite, e il software che sarà il massimo comun denominatore tra tutte le macchine virtuali (roba tipo acrobat reader, Virtual Machine Additions, etc.). In caso di dubbi si può seguire questo wizard (in inglese).

La seconda cosa da fare, se si vuole fare davvero i tirchi sullo spazio, è quella di deframmentare/pre-compattare/compattare l'hd Virtuale prima di usarlo come "padre".

Per deframmentare qualsiasi tool va benissimo. Questo step è opzionale ma garantisce ottimi risultati. Io in passato ho usato questo (come suggerito pure da codinghorror.com)

Per pre-compattare ci sono due possibilità:

  1. usare il tool gratuito incluso nel pacchetto; questo porta ad una compressione un po' minore, ma è gratis.
    Per fare ciò basta installare l'immagine CD (via menù CD nella virtual machine) contenuta in:
    <Program Files>\Microsoft Virtual PC\Virtual Machine Additions\Virtual Disk Precompactor.iso
    Questo farà partire all'interno della VM un software di precompattamento che riempe lo spazio vuoto nell'HD virtuale di "zeri"
  2. usare il tool Invirtus VM Optimizer; demo gratuita scaricabile presso il loro sito (la demo è ottima allo scopo ma richiede codice di abilitazione, registrazione online, ecc.)

Io ho semplicemente usato il tool in 1. e alla fine della precompattazione è apparso questo messaggio:

Appena finita la precompattazione è consigliabile fare shutdown della VM (pena mandare a monte il lavoro di precompattazione).

Passo successivo è la compattazione vera e propria. Per compattare l'HD virtuale bisogna scegliere l'opzione edit Virtual Disk Wizard nel pannello di controlo di Virtual PC:

e poi l'opzione Edit an existing virtual disk:

A termine di tutta questa fase preparativa si avrà un HD virtuale già utilizzabile da cui differenziare.

Per creare un HD differenziale bisogna rifare lo stesso wizard scegliendo stavolta "Create a new virtual disk". Cliccando poi next si arriverà in questa schermata:

Scegliendo differencing il wizard ci guiderà nella creazione del primo HD differenziale (da chiamare APPCOMPAT). A questo punto la stessa procedura sarà seguita per creare un secondo HD differenziale (PARANOIA).

Allo stato iniziale questi drive differenziali occuperanno solo una manciata di KB.

Infine, una volta creati i tre drive virtuali, possiamo cancellare la prima VM (VANILLA). Cancellare la VM non vuol dire cancellare l'HD associato (infatti Virtual PC ci avvisa che l'operazione è completamente indolore):

Rimossa Vanilla, possiamo creare ora le due VM necessarie: APPCOMPAT e PARANOIA che utilizzando come dischi virtuali i rispettivi file .VHD

Infine, prima di passare a godere delle due VM, attivo l'opzione di Undo Disks nella VM PARANOIA (altrimenti che paranoia sarebbe?):

A questo punto ho due (o più) VM che occupano uno spazio molto inferiore della somma di tutte le VM.

Happy VM'ing!

-quack

Technorati tags: