LaoBlog

Backup e ripristino macchine virtuali con VMWare ESX Server


Macchine virtuali create con versione VMWare ESX Server 3.x.x non possono essere ripristinate su servers della versione 2.x.x Il problema di compatibilità delle vm tra prodotti vmware diversi e versioni diverse è piuttosto rilevante. Informarsi sempre prima in caso di spostamento di una vm da un prodotto ad un altro o tra stesso prodotto ma di versioni diverse. I dischi da migrare DEVONO ESSERE SCSI!Test effettuato su VMWare ESX Server 2.5.5Nel nostro esempio, intendiamo backuppare la macchina "foobar" con SO ubuntu su srv02 e ripristinarla sul pc srv01. Le operazioni di backup e riristino sono state effettuate utilizzando il servizio nfs.La macchina server nfs si chiama "katrame", ed ha 2 partizioni messe a disposizione:-image-prova per il backup-restore-prova per il restoreNotare che:Il file di backup della macchina virtuale occupa meno spazio richiesto a quello allocato, ma quando questa viene ripristinata, è richiesto tutto lo spazio disco che era stato allocato all'atto della creazione della vm.Da root, eseguiamo:mkdir /image-provamount -t nfs katrame:/image-prova /image-provaalternativamente, inserite la seguente riga in /etc/fstab, e poi montate /image-provakatrame:/image-prova /image-prova nfs rsize=8192,wsize=8192,timeo=14,intrScompattare il pacchetto vmbk.tar.gz. prelevato da http://www.vmts.net/download.htm Noi lo scompattiamo in /rootEseguiamo install.sh., che serve ad importare un modulo perl contenuto nel pacchetto. All'interno della cartella vmbk appena creata, troviamo lo script vmbk.pl che serve per effettuare l'immagine della vm. Oltre a questo script troviamo anche il manuale, lo script vmbk-default.conf, che può essere utilizzato per una configurazione di default del backup, da richiamare con l'opzione -C dello script principale. Per esempio:./vmbk.pl -C wmbk-default.confTroviamo anche vmbk-cron.sh, per schedulare la creazione dell'immagine. Nel nostro esempio, non li usiamo.Per creare l'immagine, dalla shell scriviamo:/root/vmbk/./vmbk.pl -i -d /image-prova/backup/ /image-prova/ -l logcopia -1 -4 -cSpiegazione:-i modalità interattiva, per scegliere quale macchina backuppare-d /.../... cartella dove viene scritta la copia della vm-l nomelog crea un file di log nella dir corrente-1 usa estensione vmdk per esportare la vm (o meglio, il suo disco)-4 effettua un backup del file di configurazione e CMOS-c crea uno script di restore della macchina, che può essere lanciato per ripristinare la vmLe ultime 4 opzioni possono anche non essere utilizzate.NB: le opzioni (soprattutto "-i") devono essere inserite PRIMA di "-d /.../.../ ecc" altrimenti pare che non riesca a leggerle tutte.Nella finestra della shell, compare un menu che vi chiede di inserire una lettera corrispondente al numero della vm che vedete nell'elenco. Beh, a me dà un errore... A me funziona solo se inserisco il numero, forse è un baco che verrà corretto nelle prossime versioni, o cambieranno le istruzioni.Una volta inserito il numero, a video si dovrebbe vedere in successione, un check dello spazio disponibile nella cartella di destinazione, lo Start Time, e poi il nome della vm che state per backuppare. Se non fosse quella giusta, interrompete con CTRL+c e rilanciate lo script.La creazione dell'immagine richiede un po' di tempo. Una volta teminata, nella cartella /image-prova/backup ci sarà una nuova dir col nome della vm, ed al suo interno una serie di files con estensione vmdk, che rappresentano frazioni del file immagine. Il primo di questi, grande meno di 1 KB, è in realtà un file di testo contenente la configurazione della vm, ed è anche quello che viene richiesto in fase di restore. Tra le altre cose, esso contiene i dati relativi al disco (tipo di bus, settori, cilindri ecc.) che se non corrispondenti, causeranno il mancato funzionamento della vm una volta rispristinata.Una volta terminato il processo di copia, per comodità trasferiamo con un semplice "cp" la cartella contenente l'immagine, all'interno dell'altra condivisione nfs, cioè su katrame:/restore-prova/ (se possibile eseguite questa operazione direttamente loggati sulla macchina katrame, dovrebbe essere più veloce).Spostiamoci ora sul pc srv01 dove dobbiamo ripristinare (o anche migrare) la nostra vm.Da root digitate:mkdir /restore-provamount -t nfs katrame:/restore-prova /restore-provaProcediamo col ripristino, utilizzando vmkfstools, un potente strumento presente in VMWare ESX Server:vmkfstools -i /restore-prova/nomecartellavm/foobar.vmdk /vmfs/vmhba0:1:0:2/foobar2.vmdkSpiegazione:-i importa (formato -i /FROM /TO); l'opzione "-e" esporta, era stata invece utilazzata dallo script vmbk.pl per "esportare" la vmfoobar.vmdk è il primo dei files che compongono l'img, non ha "s00x" nel nome, ed è l'unico richiamato nella linea del comando, perché al suo interno ci sono i nomi di tutti gli altri files immagine/vmfs cartella di default di ESX Server ove si trovano i dischi virtuali/vmhba:x:x:x:x possono essercene diverse, all'interno ci sono i files immagine vmdk completi delle vm installate. Sceglietene una dove ripristinare la vostra vm. La notazione numerica corrisponde a quella di un dispositivo SCSI, ovvero il disco di ESX Server.foobar2.vmdk è il nome che VOI date alla copia della vm; può anche essere uguale alla precedenteIl ripristino impiega più tempo rispetto al backup. La percentuale di avanzamento è indicata nella riga sotto. Una volta terminato il procedimento, è possibile caricare la nuova immagine del disco attraverso la console di ESX Server.Loggatevi, cliccate sul pulsante in basso a destra "Add virtual machine", effettuare la configurazione secondo le solite procedure, e quando richiesto, aggiungere il disco creato, cioè foobar2.vmdk.Nota:Può essere che all'avvio della nuova vm, la scheda di rete non appaia o non sia configurata. La scheda dovrebbe essere eth1 (controllare perché su ubuntu /etc/network/interfaces aveva configurato eth0 (non esiste) invece di eth1). Provare con ifconfig ethx up, ed eventualmente utilizzare lo script vmware-install.pl (sotto /usr/local/src/vmware-tools-distrib/ o da un'altra parte) per riconfigurare la rete (occhio che sono necessari compilatore C e headers del kernel in uso). Le nuove versioni di vmware utilizzano il modulo vmxnet per la rete emulata, potrebbero sorgere conflitti se avevate una versione differente dei tools.E buon lavoro!