Questa funzionalità, apparentemente semplice, nasconde non poche insidie e viene spesso fraintesa.
Da questo nasce l'idea di questo articolo il cui obiettivo è di fare maggiore chiarezza sull'argomento.
Se vi annoiano i discorsi troppo tecnici e vi interessa solo il succo potete saltare direttamente alle conclusioni nel paragrafo finale: Avvertenze sugli snapshot.
Introduzione Terminologica
VHD
Un Disco Fisso Virtuale è un file fornisce spazio disco ad una macchina virtuale (e non solo).
All'interno della macchina virtuale è visto e trattato come un normale disco fisico.
Disco Differenziale
Un disco differenziale virtuale è un un disco fisso virtuale associato ad un altro disco fisso virtuale in una realazione di titpo padre-figlio.
Il disco differenziale (figlio) memorizza tutte le modifiche fatte sul disco padre, consentendone quindi il salvataggio senza che alcuna modifica sia effettivamente eseguita sul disco padre. In altre parole, utilizzando i dischi differenziali, ci assicuriamo che le modifiche siano riportate sul disco differenziale e non sul disco vhd originale.
Successivamente è possibile, se lo desideriamo, unire il disco differenziale con il disco padre al fine di avere un solo VHD contenente tutte le modifiche.
Gli Snapshot
Gli Snapshot sono una funzionalità dell' Hyper-V di Windows Server 2008 R2 che ci consente di creare una versione ad un determinato momento della nostra macchina virtuale.
Il vantaggio dal punto di vista amministrativo e che ci consentono di create gerarchie di modifiche e di poter tornare facilmente indietro.
Gli snapshot non apportano alcuna modifica allo stato delle macchine virtuali cui fanno riferimento.
Come Funzionano
Hyper-V segue i seguenti passi per la creazione di uno snapshot:
- Mette in pausa la maccina virtuale
- Crea un disco differenziale per ogni vhd configurato sulla macchina virtuale
- Fa una copia del file di configurazione della macchina virtuale
- Fa ripartire la macchina virtuale
- Se la macchina era in esecuzione viene salvato il contenuto della memoria sui nuovi dischi differenziali
I file degli snapshot
Uno snapshot consiste di diversi file che vengono memorizzati in una directory degli snapshot associata alla macchina virtuale.
Nel dettaglio avremmo:
- Un file di configurazione della macchina virtuale (.xml)
- Dischi differenziali dello snapshot (.avhd)
- File di salvataggio di stato della macchina virtuale (.vsv)
- Contenuto della memoria (.bin)
Azioni possibili sugli snapshot
Tramite lo snap-in di gestione di Hyper-V, ed in buona parte anche tramite SCVMM (System Center Virtual Machine Manager) che li chiama però Checkpoint, è possibile eseguire le seguenti azioni relaitve agli snapshot delle macchine virtuali:
- Creare uno nuovo
- Rinominare
- Applicare (SCVMM:Ripristinare) uno snapshot, ossia riportare la macchina virtuale allo stato dello snapshot.
- Cancellare uno snapshot: se lo snapshot non è quello corrente viene semplicemente cancellato, se invece è quello attivo tutte le modifiche verranno riportate (merge) sul VHD originale al momento dello spegnimento della macchina virtuale. Attenzione questa operazione può portare via parecchio tempo in fase di riavvio!
Gestione tramite Hyper-V
Gestione tramite SCVMM
Avvertenze sugli snapshot
A questo punto possediamo elementi sufficienti per trarre alcune importantissime conclusioni:
- Evitate di usare gli Snapshot in ambienti di produzione. Si potrebbero avere seri problemi con servizi ed applicazioni sensibili ai tempi di risposta, tipo l'autenticazione di Active Directory, o che usano meccanismi di replica tipo Exchange ed SQL Server.
- Gli snapshot possono consumare molto velocemente lo spazio disco, soprattuto se abbiamo più snapshot della stessa macchina virtuale.
- Fate attenzione alle conseguenze della cancellazione degli snapshot.
- Non considerate assolutamente gli snapshot un'alternativa al backup.
Le avvertenze che dici sono esatte, ma in un ambiente di produzione può essere molto utile utilizzare gli snapshot quando si deve effettuare un aggiornamento significativo di un sistema (indipendentemente da Hyper-V, anche con vSphere). Basta fare attenzione ai servizi attivi nel sistema da aggiornare e a ciò che si deve aggiornare, un po' come per un server fisico dove non si dovrebbe applicare un nuovo service pack a "caso" ma solo dopo un'attenta pianificazione del tutto...
RispondiEliminaciao,
Matteo
Assolutamente si, come giustamente suggerisci a fronte di modifiche consistenti tenere una "rete sotto" può essere molto utile, certo dipende dai servizi con AD o Exchange se non pianifichi attentamente rischi di fare guai. E' mia intenzione evitarne l'abuso, non scoraggiarne in assoluto l'uso ;)
RispondiEliminaSalve, vi chiedo se avete mai provato ad eseguire snapshot di domain controller, e quali accorgimenti bisogna adottare. Se non mi sbaglio questa funzionalità non è consigliata da microsoft per i si sitemi 2003 e 2008. Vi risulta...
RispondiEliminaSauti
Mariano
Ciao Mariano,
RispondiEliminaallora diciamo che MS consiglia di non usarli perché non tutti comprendonobene le implicazioni. In realtà l'avviso non è solo sui DC ma su tutte i server sensibili al fattore tempo (per esempio Exchange).
Personalmente non uso praticamente mai gli snapshot in ambienti di esercizio, fatta eccezione di qualche rarissimo caso, per mettere una rete sotto se devo fare delle modifiche consistenti.
Comunque il problema non è certo fare uno snapshot, ma applicarlo e rimuoverlo (che fino al 2012 richiedeva lo spegnimento della macchina).
Adesso con Hyper-V 2012 e la clonazione dei DC la cosa cambia abbastanza, anche se logicamente continuo a non vedere l'utilità di prendere uno snapshot di un DC. Magari se porti un caso pratico ci possiamo ragionare meglio.
Ciao
Ruggiero
Buonasera,
RispondiEliminaho un file da 100gb di snapshot che è l'unico che cresce, piu' altri 2 piu piccoli che non aumentano, se cancello i due file AVHD piu' piccoli danneggio il server virtuale oppure no?
Grazie per l'aiuto.
Giuseppe
Assolutamente non cancellare i file AVHD (ammesso che te lo faccia fare), devi cancellare gli snapshot, spegnere la macchina (dipende dalla versione di Windows che stai usando), lui fa un merge ed i file avhd spariscono da soli.
RispondiEliminaGrazie Ruggero,
RispondiEliminadi snapshot ne ho solo uno, non ho un albero,quindi l'operazione corretta è cancellare lo snapshot dalla console di hyper-v, spegnere la macchina,a quel punto devo attendere il merge prima di riaccenderla?Non perdo nessuna configurazione e/o modifica?
Esatto, quando cancelli lo snapshot praticamente consolidi le modifiche e quindi viene tutto riportato sul vhd originale della macchina
RispondiEliminaCiao Ruggero! Grazie delle info! Ti chiedo una cosa: é possibile che in ambiente 2012 r2 il merge avvenga immediatamente alla cancellazione dello snapshot senza necessariamente spegnere la macchina virtuale? Grazie
RispondiEliminaSi Nicola è così, in Windows server 2012 R2 MS ha introdotto il Live Merge, quindi i dischi mergiano senza la necessità di spegnere la macchina virtuale. Davvero un bel passo in avanti!
RispondiEliminaCiao Ruggiero, ho un problema con gli snapshot di una MV. Abbiamo un server fisico con il Windows Server Backup attivo che effettua il backup della macchina virtuale e dei componenti Hyper-v ogni un'ora. Ora, il 17 Ottobre si è bloccato qualcosa sul server backup ed ha iniziato a creare snapshot che hanno saturato lo spazio della macchina fisica con conseguente sospensione della stessa. Ora: 1) non mi fa eliminare il CheckPoint ne a macchina accesa ne spenta, 2) l'unico snapshot eliminabile è quello del 17 ottobre gli altri non sono selezionabili, e ovviamente non me lo fa eliminare.
RispondiEliminaPensi che facendo la procedura di rinominare i file avhd in vhd ed avviare la funzione impostazione disco--> merge ad uno ad uno sarò in grado di ripristinare la normalita del server?
Ciao Andrea, onestamente questo approccio così "manuale" mi spaventa abbastanza. Se non riesci a risolvere con procedure supportate, ti suggerirei qualcosa del tipo esportare e reimportare lo snapshot della VM ( dipende dalla versione di Hyper-V che stai usando)
RispondiEliminaCiao Ruggero,
RispondiEliminaio ho un file avhd senza avere però snapshot all'interno della console HV di un 2008 R2... come posso unire i due file e liberare spazio?
Grazie,
Alessandro
Ciao Alessandro, dai un occhio qui:
Eliminahttps://social.technet.microsoft.com/Forums/windowsserver/en-US/03fc01f5-5428-4f4f-b86a-98ead7d72740/mystery-avhd-file-and-no-snapshots-lists-in-hyperv?forum=winserverhyperv
Salve Ruggiero, non sono un sistemista, né un programmatore. Ho un server fisico Windows server 2012 standard, che a sua volta ha configurato in Hyper-V un server virtuale sempre con sistema operativo Windows server 2012 standard (non R2). Il server virtuale è quello che fa da controller del dominio.
RispondiEliminagli utenti accedono ai gestionali aprendo l'utenza sul server "fisico". scusi per i termini caserecci...
Avevo un problema di capienza sulla partizione dove era salvato il server virtuale e il tecnico, avendo ha "spostato" il server virtuale su un'altra partizione. Il problema è che ora devo cambiare hardware e mi serve il backup che però segna errore nella copia del server virtuale:
rrori processo di scrittura
ID processo di scrittura: {66841CD4-6DED-4F4B-8F17-FD23F8DDC3DE}
ID istanza: {404C910A-D626-4E00-A14D-98F02119C1B5}
Nome processo di scrittura: Microsoft Hyper-V VSS Writer
Stato processo di scrittura: 5
Risultato negativo: 80042336
Risultato applicazione: 80004005
Messaggio applicazione: (null)
Componente: A421CC6C-D5DB-4C33-BFB2-EFE5752E8FE5
Percorso logico: (null)
Risultato componente: 800423F3
Messaggio componente: Impossibile correggere i percorsi assoluti dei dischi rigidi virtuali nella configurazione della macchina virtuale 'SRVSERVIZI': Impossibile trovare il file specificato. (0x80070002). ID macchina virtuale: A421CC6C-D5DB-4C33-BFB2-EFE5752E8FE5.
'Saved State': impossibile trovare il collegamento 'H:\Server Virtuali\SERVERSRV_DED1538E-79FF-4ACD-A63C-3F409D3AE66A.avhdx'. Errore: 'Impossibile trovare il file specificato.' (0x80070002). (ID macchina virtuale 4D5661EB-DEEE-4BC8-93AC-C8C50FFC0059.............
Backup applicazione
ID processo di scrittura: {66841CD4-6DED-4F4B-8F17-FD23F8DDC3DE}
Componente: A421CC6C-D5DB-4C33-BFB2-EFE5752E8FE5
Didascalia : Backup Using Child Partition Snapshot\SRVSERVIZI
Percorso logico:
Errore : 80780175
Messaggio di errore : Componente ignorato dalla copia shadow del volume.
Dettagli errore : 800423F3
Messaggio di errore dettagliato : Errore temporaneo nel processo di scrittura. Se si prova a eseguire nuovamente il processo di backup,
è possibile che l'errore non si verifichi più.
secondo me dovrebbe essere un problema del file dei vari snapshot del server virtuale, il cui percorso non può essere cambiato, o meglio, controllando nelle impostazioni del server virtuale da Hyper-V, su Gestione\percorso file snapshot vedo che il pulsante sfoglia è grigio (come pure il percorso) e sotto vi è la dicitura che non è possibile modificare il percorso del file di snapshot perché la macchina virtuale ha almeno uno snapshot. fatalità il percorso coincide con quello incriminato che viene escluso dal backup.
ha consigli in merito?
Grazie.
Ciao Simone,
RispondiEliminasembrerebbe in effetti esserci un problema di referenzazione dei dischi, probabilmente relativo all'operazione di spostamento sul nuovo volume. Anche gli snapshot non andrebbero presi, se non in via del tutto temporanea, in ambienti di produzione (questa potrebbe essere una delle cause del riempimento).
Quindi il primo step sarebbe di eliminare lo snapshot (se va tutto bene e non è quindi più necessaria la differenzazione), aspettare il merge dei dischi e dopo provare a sistemare le cose. Mi è difficile aiutare più di tanto da remoto...
grazie.
RispondiElimina