Lavorando su una infrastruttura di virtualizzazione basata su Windows Server 2008 Hyper-V, soprattutto in presenza di molte macchine virtuali create magari a scopo di test ci si renderà presto conto che lo spazio disco rappresenta una criticità. Immaginiamo infatti di aver bisogno di diversi virtual server, ad esempio delle installazioni di Windows Server 2008 Web Edition, per effettuare dei test pre-produzione. Il disco virtuale di ogni singola installazione peserà sul nostro storage per una dozzina di GB circa, nonostante l’installazione di base sia la stessa per ogni server virtuale creato. Avremo infatti il nostro Windows Server e i relativi aggiornamenti e service pack su ciascuna macchina virtuale.
In ambienti come quello descritto, o anche in ambienti di produzione particolare, esiste la possibilità di utilizzare una tipologia particolare di vhd detto vhd differenziale (o differencing vhd). Questa tipologia di dischi virtuali si basa sulla creazione di un disco contenente solo le differenze rispetto ad un virtual disk padre, che può essere comune a diversi vhd legate a differenti virtual machine garantendo quindi una notevole economia di storage. Ci sarò di contro da considerare anche un calo prestazionale tale da rendere l’utilizzo di questi dischi sconsogliato in presenza di alcune applicazioni ad alta richiesta di I/O disco.
Innanzitutto abbiamo bisogno di un disco di partenza. Per questo cominciamo con la creazione di una virtual machine ed installiamo su di essa Windows Server 2008 R2 Web Edition, partendo dalla console di gestione di Hyper-V del nostro server fisico.
Assegniamo un nome alla macchina virtuale. Nell’esempio la chiameremo VMTEST1.
Assegniamo 2GB di RAM alla virtual machine
Configuriamo quindi la scheda di rete che in questa fase lasceremo non connessa
Assegniamo il nome e la dimensione al vhd principale della macchina. Configureremo un disco di nome VMTEST1.vhd con una dimensione di 50GB
Connettiamo l’immagine ISO del disco di installazione di Windows Server al CD della virtual machine
Avviamo quindi la macchina virtuale ed eseguiamo l’installazione standard di Windows Server 2008 R2 Web Edition. A fine installazione connettiamo la scheda di rete della virtual machine così da connettere ad internet la nuova macchina ed eseguiamo gli aggiornamenti tramite Windows Update.
Una volta conclusa la procedura di aggiornamento eseguiamo il comando Sysprep sulla VM e spegniamo. Dobbiamo infatti utilizzare il disco vhd con l’installazione appena conclusa come disco di base per le macchine basate su vhd differenziali. Lanciamo quindi il comando
Sysprep /oobe /generalize /shutdown
Terminata l’operazione di spegnimento della macchina apriamo le proprietà della virtual machine e accediamo alla sezione Unità disco rigido.
Cliccando su Nuovo avviamo la procedura di creazione di un nuovo vhd da agganciare al virtual server.
Selezionamo la voce Differenze che, come spiegato nella didascalia, genera un disco differenziale
Assegniamo un nome al nuovo virtual disk. Nell’esempio chiameremo il disco WebServer1.vhd
Nel successivo passaggio dobbiamo selezionare il disco padre da legare al disco differenziale. Selezioniamo quindi il disco VMTEST1.vhd contentente l’installazione di Windows sulla quale abbiamo eseguito il sysprep.
Confermiamo i passaggi finali e attendiamo l’applicazione delle modifiche alla configurazione della virtual machine
A procedimento ultimato possiamo quindi avviare la VM per verificare che il sistema si avvii regolarmente.
Possiamo vedere che l’esecuzione di Sysprep fa si che la macchina si avvii come se fosse la prima esecuzione. Accedendo allo storage dall’host fisico possiamo vedere il disco differenziale appena creato e lo spazio occupato dalle modifiche
Ed ecco l’avvio della macchina con la richiesta delle informazioni iniziali
A questo punto è possibile avviare la creazione di nuove macchine virtuali alle quali potremo assegnare un disco rigido di tipo differenziale a partire dal nostro VMTEST1.vhd, ottenendo un notevole risparmio di spazio sullo storage.
1 Comment