Andrea Beggi

You can't start a fire without a spark.

Clonare una macchina virtuale su VMWare ESX

A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

Lo strumento canonico di VMWare per la creazione di macchine virtuali senza dover reinstallare tutto da zero ogni volta, sarebbero i template.
Lavorare con i template presuppone di averli preparati prima e di usarli spesso, altrimenti potrebbe non valere la pena di utilizzare tempo e spazio sullo storage per gestirli.
La necessità di clonare una macchina virtuale mi si presenta raramente, e di solito procedo in questo modo:
Come prima cosa creo una snapshot della macchina tramite VC Backup. Al termine del processo ho ottenuto un backup della macchina virtuale su una cartella di uno storage esterno, ad esempio i dischi del server Virtual Center. Rinomino la cartella con il nome che desidero per il clone che andrò a creare, e utilizzando VMConverter (quello fornito con ESX server), provvedo a reimportare la macchina, avendo cura di non farla avviare automaticamente al temine del processo di importazione.

Nel frattempo mi procuro Sysrep, un’utility gratuita di Microsoft, scaricabile da qui. Malgrado la pagina parli solo di Windows 2000, WMWare dice che va bene anche per XP Pro e Windows Server 2003 (è vero, uso questa e funziona benissimo).
Con i files di Sysprep è necessario creare un file ISO che va copiato insieme alle altre immagini ISO sul datastore, nella cartella /vmimages/tools-isoimages dei server ESX, tramite WinSCP oppure Veeam FastSCP.
Al termine dell’importazione edito la configurazione del clone, impostando l’avvio con la scheda di rete scollegata e mappando il CD-ROM virtuale sulla ISO di Sysprep residente sui server ESX.

A questo punto posso finalmente avviare la macchina clonata. Alla partenza copio i files di Sysprep dal CD-ROM virtuale a c:\sysprep e lancio il programma; un wizard mi guida nelle operazioni di cambiamento dell’hostname della macchina, dell’impostazione dell’indirizzo IP e nell’eventuale join al dominio. Importante: subito prima di confermare le proprità del TCP/IP bisogna ricollegare la scheda di rete. Al termine del processo il pulsante “Seal” applica le impostazioni e fa ripartire la macchina. Al riavvio il sistema operativo si comporta come se fosse stato appena installato, ma con le impostazioni da voi definite poco prima. Se joinate lo stesso dominio, il profilo utente è bello pronto che vi aspetta e non dovete modificare una virgola rispetto alla macchina di partenza.

Risultato finale dell’operazione: due macchine identiche dal punto di vista del software e della configurazione, ma comunque distinte e funzionanti contemporaneamente. Perché è importante il processo di customizzazione tramite Sysprep appena descritto?

Ciascuna macchina in un dominio Active Directory possiede un SID che deve necessariamente essere univoco. Clonando brutalmente la macchina, il SID non viene modificato, neppure se cambia l’hostname. Due SID uguali su una rete pongono problemi di sicurezza e di funzionamento, e non sono in alcun modo supportati.

La procedura descritta va bene se non deve essere utilizzata con troppa frequenza, poiché le fasi di snapshot e importazione sono abbastanza lunghe. Nel caso si dovesse produrre parecchie macchine virtuali è sempre meglio utilizzare i template.

8 Commenti

Cius | #

Io per cambiare l’id della macchina la avvio senza scheda collegata e con NewSid (http://www.microsoft.com/technet/sysinternals/Utilities/NewSid.mspx) cambio SID e nome (oltre a togliere l’indirizzo IP). Al successivo riavvio, con la scheda questa volta attiva, rifaccio il join a dominio manualmente bypassando la creazione dell’ISO.
Insomma una strada un po’ diversa.

Andrea | #

Cius è vero. Ma il cliente vuole soluzioni certificate e supportate. E Sysprep è l’unico che MS supporti.

Fulvio | #

Domanda (forse sciocca) e relativa richiesta di un tuo parere, da parte di un neofita che vorrebbe, ma a volte scopre che non può…
Questo sistema che ho letto qui sopra, potrebbe risolvere questo mio problema ?
Scenario: server HP Proliant ML110G4, con soli due Hdd SATA in RAID 1, e Win Server 2003 R2 Std Ed.
Per motivi di assistenza remota (troppo remota), volevo creare sul posto una macchina clone, da utilizzare in caso di crash della prima, in modo che l’utente potesse avere il minor fermo azienda possibile. Per il travaso dei dati funziona il restore dell’SQL Server 2005. Per il S.O. invece, su Win Server 2000 (adottato sino a qualche settimana fa) creavo un backup con True Image e lo “restoravo” sulla seconda macchina. Avendo ovviamente cura di non utilizzare mai i due server in contempoaranea, il tutto ha sempre funzionato. Con 2003 invece, pur essendo le due macchine identiche, al momento del bootstrap, appare per una frazione di secondo un msg di errore, bianco su sfondo blu, tipico di qualche driver o periferica in conflitto e resetta il tutto. Presumo che 2003 trovi una scheda lan, o una SID diversi e quindi si blocchi. La velocità con cui scompare, non permette di leggere purtroppo nulla del messaggio.
Qualche consiglio ?
Scusa il disturbo e la lungaggine del msg.
Grazie.

Fulvio

P.S. Pensi sia possibile aggiungere tra le invenzioni, oltre alla ruota ed alle trenette, anche una bella carbonara ? :o)

Cesare | #

Ciao, sono nuovo in questo ambiente, ma provo a proporvi iun problema. Ho un sistema esx 3.5 con una decina di server, tra i quali uno win2000 server sp4 che fa da terminale server. Vista l’esigenza di avere un nuovo server terminal ho pensato di clonare quello in produzione. Così ho fatto. Al termine della clonazione ho cambiato gli indirizzi ip, il nome del server, e ho applicato un nuovo sid random con newsid.exe. Al riavvio tutto funziona bene, pero’ dopo un po non si riesce piu’ ad andare nelle proprietà della rete, non si riesce piu’ a navigare con internet explorer, sembra quasi che ci sia un blocco sulla rete solo per explorer. Ho fatto mille prove ma non ho trovato la soluzione. Qualcuno è in grado di darmi un consiglio ?
Grazie !
Cesare

Andrea Bottari | #

quando clono una macchina virtuale io eseguo un procedimento molto semplice creo nel datastore una cartella col nome della nuova macchina virtuale. Compio l file vndk della macchina da clonare nella cartella appena creata, non la rinomino anche se alcuni dicono di farlo, da vsphere client procedo con la creazione di una nuova macchina virtuale, con procedura manuale e stesso nome cartella creata utilizzando utilizzando l’opzione disco vituale esistente e selezionando quello appena copiato nella cartella con nome della macchina virtuale creata. Avvio la macchina virtuale disabilitando la sceda di rete cambio nome e fine.