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à:
- 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" - 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
Potrebbero interessarti anche:
- Virtualismi avanzati
- Installazione di Ubuntu 6.10 su un Virtual PC
- Il cerbiatto e il topo
- Virtualizzazione ed appcompat
- VirtualPC mania


Facebook,
Wikio,
Segnalo.

lunedì 19 marzo 2007 alle 3:58 PM -
Fichissimo!
avessi un po' di spazio lo farei... Ora come ora non ho spazio per nulla...
Permalink
lunedì 19 marzo 2007 alle 6:56 PM -
Io faccio la stessa cosa VMWare e mi trovo benissimo con questo metodo, però sfrutto un accorgimento in più per risparmiare ulteriormente spazio. Dal momento che a questo punto penso sia attuabile anche con VPC 2007 e che magari potrebbe tornarti utile, te lo riporto (riducendo all'indispensabile).
Una volta installato il sistema guest nella macchina virtuale che verrà usata come template, creo un secondo disco virtuale impostandolo come indipendente e non persistente (ovvero non viene calcolato per gli snapshot e una volta spenta la VM il contenuto del disco viene resettato), in seguito nelle impostazioni del sistema guest faccio puntare il file di swap su quel secondo disco. Fatto ciò deframmento, compatto il disco principale e finalizzo la VM come template da usare per creare le VM "figlie". A questo punto nelle VM figlie, che lavoreranno in modalità differenziale, importo manualmente (per paranoie di VMWare) quel secondo disco di pochi MB e il gioco è fatto: il risultato è una VM padre priva di svariate centinaia di MB occupati inutilmente e una seconda unità usata per lo swap che viene azzerata istantaneamente ogni volta che si spegne il sistema guest.
Permalink
martedì 20 marzo 2007 alle 12:25 AM -
Caruccia, l'idea.. Domanda, ma dopo aver visto tutto sto popo' di roba... Mi sai anche dire per caso quanti gigatoni di ram mi servono per far girare due macchine virtuali sullo stesso sistema?
Permalink
martedì 20 marzo 2007 alle 12:38 AM -
Le macchine virtuali non le faccio girare quasi mai contemporaneamente. Il sistema è multitasking, io no.
Xp 'castrato' in VPC gira bene con 128MB di RAM (ci gioco a Catan e sono in grado pure di hostare le partite!!)
Permalink
martedì 20 marzo 2007 alle 12:39 AM -
NRK: davvero interessante. Farò il giochino anche io del file di swap!
Permalink
martedì 20 marzo 2007 alle 12:49 AM -
Hosti pure? 'zzarola... Sono quasi basito... mi aspettavo una risposta tipo rinunciaci
Permalink