Condividire...

Condividere ha il suo costo, ma alla fine finisce per arricchire tutti


Sharing has its cost, but at the end leads everyone to a better knowledge

martedì 15 marzo 2011

Gli Snapshot in ambito Microsoft Windows Hyper-V

Una delle cose che affascina molto nei progetti di virtualizzazione è la possibilità di creare delle fotografie (snapshot) delle macchine virtuali.
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:
  1. Mette in pausa la maccina virtuale
  2. Crea un disco differenziale per ogni vhd configurato sulla macchina virtuale
  3. Fa una copia del file di configurazione della macchina virtuale
  4. Fa ripartire la macchina virtuale
  5. Se la macchina era in esecuzione viene salvato il contenuto della memoria sui nuovi dischi differenziali
Tutte queste operazioni si svolgono in maniera trasparente per gli utenti che non dovrebbero riscontrare alcun rallentamento o indisponibilità della macchina virtuale. In pratica la macchina durante la sua fase di pausa trattiene in memoria tutte le modifiche effettuate, per salvarle nel passo 5.



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)
Nel caso in cui la macchina virtuale al momento dello snapshot era attiva o salvata:
  • File di salvataggio di stato della macchina virtuale (.vsv)
  • Contenuto della memoria (.bin)
Non operate mai direttamente sui file degli snapshot! ( a meno che non sappiate esattamente cosa state facendo)

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:
  1. Creare uno nuovo
  2. Rinominare
  3. Applicare (SCVMM:Ripristinare) uno snapshot, ossia riportare la macchina virtuale allo stato dello snapshot.
  4. 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:

  1. 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.
  2. Gli snapshot possono consumare molto velocemente lo spazio disco, soprattuto se abbiamo più snapshot della stessa macchina virtuale.
  3. Fate attenzione alle conseguenze della cancellazione degli snapshot. 
  4. Non considerate assolutamente gli snapshot un'alternativa al backup.
L'utilizzo degli snapshot che la Microsoft consiglia è per ambienti di test o di formazione.





17 commenti:

  1. 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...

    ciao,
    Matteo

    RispondiElimina
  2. 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 ;)

    RispondiElimina
  3. Salve, 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...
    Sauti
    Mariano

    RispondiElimina
  4. Ciao Mariano,
    allora 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

    RispondiElimina
  5. Buonasera,
    ho 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

    RispondiElimina
  6. 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.

    RispondiElimina
  7. Grazie Ruggero,
    di 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?

    RispondiElimina
  8. Esatto, quando cancelli lo snapshot praticamente consolidi le modifiche e quindi viene tutto riportato sul vhd originale della macchina

    RispondiElimina
  9. Ciao 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

    RispondiElimina
  10. Si 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!

    RispondiElimina
  11. Ciao 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.
    Pensi 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?

    RispondiElimina
  12. 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)

    RispondiElimina
  13. Ciao Ruggero,
    io 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

    RispondiElimina
    Risposte
    1. Ciao Alessandro, dai un occhio qui:
      https://social.technet.microsoft.com/Forums/windowsserver/en-US/03fc01f5-5428-4f4f-b86a-98ead7d72740/mystery-avhd-file-and-no-snapshots-lists-in-hyperv?forum=winserverhyperv

      Elimina
  14. 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.
    gli 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.

    RispondiElimina
  15. Ciao Simone,
    sembrerebbe 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...

    RispondiElimina