Oggi mi sono imbattuto in uno scenario particolare. Tempo addietro ho installato presso un cliente un server con Hyper-V e un paio di VM in esecuzione su di esso. Si trattava di una installazione provvisoria e le VM sarebbero poi state migrate su un nuovo hardware assieme ad alcune altre macchine virtuali. Essendo giunto il momento di eseguire la migrazione, per curiosità, ho controllato la dimensione dei file con i virtual disk (VHD) delle macchine da trasferire e mi sono reso conto che, per cause ignote, di una macchina sono presenti un file .vhd e due file .avhd, come se in passato fossero state eseguite delle snapshot. L’unico problema è che la console di Hyper-V non mostra alcuna snapshot e quindi non ho modo di consolidare i dischi in uno unico. Dramma? Forse no.
Esiste una procedura che consente di effettuare l’unione di file .avhd fino per ricostruire un unico VHD, senza utilizzare la console di gestione di Hyper-V per agire sulle snapshot.
Innanzitutto è necessario localizzare l’ultimo file differenziale .avhd della catena di snapshot, poichè il processo di merge va eseguito a ritroso a partire da questo. Il nome del file .avhd corretto è rintracciabile nel file .xml contenente la configurazione della virtual machine. Nel mio caso il file si trova in
C:\Virtual Machines\Configurations\Virtual Machines
Editando il file e ricercando la stringa “avhd” trovo subito il file corretto, dal quale iniziare la procedura di unione.
Mi posiziono quindi nel percorso contenente il file e ne modifico l’estensione da .avhd a .vhd.
Ora dalla console di management di Hyper-V seleziono la voce Modifica disco… nel pannello Azioni.
Il wizard di modifica del disco parte e mi richiede innanzitutto la posizione nel quale si trova il disco virtuale. Mi posiziono nella cartella dove risiede il file .avhd appena rinominato in .vhd.
Seleziono quindi Unisci per eseguire il merge del disco con il VHD padre che, in questo caso specifico, è a sua volta un file .avhd essendo generato da un concatenamento di snapshot.
Indico dunque al wizard che voglio eseguire il marge e salvare il contenuto direttamente nel file padre, e non generare un nuovo VHD.
Il processo si avvia.
A fine operazione posso verificare che nella cartella contenente il file .vhd originale e i due file .avhd delle snapshot ora è presente un solo file .vhd e un solo .avhd, generato dall’unione dei due file precedenti.
Sul nuovo file .avhd rieseguo il processo avviando quindi l’unione con il .vhd originario. Di seguito l’immagine dell’ultimo passaggio.
A questo punto la cartella conterrà solo un VHD, ottenuto dall’unione del .vhd originale e di tutti i dischi differenziali generati dalle snapshot.
Ora è possibile generare una nuova macchina virtuale alla quale connettere il disco così ottenuto. Riconfigurando gli indirizzi IP delle schede di rete installate sulla VM il server tornerà in produzione senza intoppi.
Articoli correlati
Hyper-V: Creazione di macchine virtuali basate su dischi differenziali
Io ho riscontrato un errore durante questa procedura mi da errore non riesce ad aprire la macchina virtuale a cui modifico l’estensione da avhd a vhd “errore nel server durante il tentativo di modificare il disco virtuale” Errore: accesso generale negato
Ciao, puoi descrivermi lo scenario nel quale ti trovi? Dopo la rinomina del file hai fatto l’unione con il disco padre? In caso di difficoltà scrivimi tramite la pagina facebook del blog http://www.facebook.com/andreamonguzzi.it.
Ciao
la mia situazione,purtroppo URGE, è la seguente: mi trovo a dover ricostruire un server virtuale partendo dal vhd e da uno degli snapshot (che però non è l’ultimo)..posso procedere fondendo il VHD più lo snapshot di mio interesse anche se questo non è l’ultimo(ma che so corrisponde al momento in cui il server era ancora pienamente funzionante)?
Grazie
Simone
Ciao, intanto grazie per la tua guida.
Una domanda: ma è necessario ricreare la macchina virtuale alla fine della procedura? Non si può lasciare il disco VHD unico così creato associato alla stessa macchina, senza ricrearne una di nuova (per carità, non sono mica mille passaggi, ma è più comodo 😉 )?
Inoltre, abbiamo bisogno di uno spazio libero su disco particolare per procedere con questa operazione? Io infatti dovrei farlo proprio per liberare spazio compattando poi il disco che altrimenti non riesco a compattare perchè mi da accesso negato…
Grazie, ciao
Alessandro
Ciao,
ho provato non avendo nulla da perdere essendomi trovato le macchine ferme :O
La macchina virtuale confermo che va ricreata a fine processo, immagino (nel mio caso almeno) perché nel file di configurazione c’era qualcosa che cercava ancora il merge, e quindi non mi lasciava far partire la macchina (oltre a puntare ancora ai file .avhd).
Ricreata comunque la macchina a fine processo è andato tutto liscio.
Per sicurezza ho fatto spazio temporaneo sul server, per non rischiare danneggiamenti dei vhd. Non so per il discorso spazio su disco, se sia effettivamente necessario un minimo di % di spazio libero o meno.
Ciao e grazie,
Alessandro