Hyper-V: merge manuale dei dischi differenzali (AVHD/AVHDX)

Hyper-V Server

Dall’introduzione del ruolo Hyper-V, in Windows Server, è sempre stato presente la funzionalità di snapshot, ovvero una copia di una macchina virtuale, congelata in un determinato istante di tempo, che contiene tutte le informazioni necessarie per ripristinare i dati. Con l’uso delle snapshot in Hyper-V, è possibile ripristinare la VM in un punto in cui è stato acquisito. Le snapshot possono essere acquisite in qualsiasi stato (Off, In esecuzione, In pausa e Salvato) e l’operazione viene in genere completata in pochi secondi.

Perchè Usare le Snapshot?

Le snapshot, o checkpoint, consentono di salvare lo stato della VM prima di applicare le modifiche alla configurazione, installare nuovo software, eseguire eventuali aggiornamenti del sistema operativo, aggiornare le patch di sicurezza, ecc. Se si sta per eseguire un’operazione che potrebbe cambiare la propria infrastruttura virtuale o c’è un alto rischio di fallimento, creare prima un checkpoint . Funzionerà come una rete di sicurezza nel caso in cui qualcosa vada storto e sia necessario ripristinare il sistema allo stato precedente.

Tipi di Snapshot Hyper-V

Microsoft Hyper-V offre due tipi di snapshot:

Snapshot di produzione – applicano la tecnologia di backup all’interno del sistema operativo guest per creare delle snapshot coerenti con i dati della VM. A tale scopo vengono utilizzati il ​​servizio VSS (Volume Shadow Copy Service) o il Linux System Freeze. Le snapshot di produzione possono essere utilizzate per acquisire lo stato dell’ambiente di produzione in quanto migliorano la coerenza dei dati delle applicazioni e del sistema operativo guest. Le snapshot di produzione non acquisiscono lo stato della memoria della VM, le informazioni sull’attività della CPU o la configurazione hardware.

Nelle nuove versioni del sistema operativo (Windows Server 2016 e Windows 10), i checkpoint di produzione sono l’opzione predefinita per il tipo di checkpoint. Tuttavia, è possibile modificarlo in Hyper-V Manager o da Windows PowerShell.

Snaphost standard – acquisiscono lo stato della macchina virtuale, compresa l’attività della CPU e la memoria, e la configurazione hardware in un determinato momento. Pertanto, una snapshot standard consente di acquisire lo stato corrente delle applicazioni e di ripristinare la VM su uno stato o una condizione point-in-time specifico. Sono principalmente applicabili negli scenari di sviluppo e test. La creazione di snapshot standard non può essere considerata una strategia di backup affidabile in quanto potrebbe causare alcuni problemi di incoerenza dei dati in applicazioni che non sono “VSS-aware”.

Come funzionano le Snapshot

Le VM Hyper-V vengono “archiviate” nei dischi virtuali, nel formato file .vhd o .vhdx per le versioni più recenti. Allo stesso tempo, i file di snapshot creati su tali VM vengono archiviati nel formato file .avhd o .avhdx per le versioni più recenti e mantenuti nella stessa cartella del file immagine del disco rigido (vhd). Le snapshot stanno sostanzialmente differenziando i dischi virtuali e ognuno di essi ha una relazione genitore-figlio con il disco rigido virtuale principale corrispondente. È possibile creare fino a 50 Snapshot per ogni macchina virtuale. Tutte le snapshot sono organizzate in un ordine gerarchico, costituendo così un checkpoint subtree.

Tuttavia i file .avhd(x), possono essere generati anche dai software di backup e hanno la tendenza ad accumularsi e occupare molto spazio su disco, il che influisce di conseguenza sulle prestazioni della VM. Se si desidera rimuovere file .avhd(x), è necessario eliminare le snapshot. Eliminare non implica che si sta effettivamente eliminando le snapshot mentre in realtà si stanno semplicemente unendo e con loro i dati che contengono, in un disco principale o in un altro disco virtuale. Non è consigliabile eliminare le snapshot direttamente dal computer. Dopo aver unito le snapshot, tutti i file .avhd(x) verranno eliminati dal disco. In questo modo, è possibile creare spazio aggiuntivo sull’host Hyper-V.

Figura 1 – Elenco Checkpoints per VM

Come Unire (manualmente) le Snapshot

Per unire le snapshot di Hyper-V, è necessario utilizzare Hyper-V Manager o PowerShell.

Utilizzo di Hyper-V Manager

Prima di iniziare a descrivere come unire le snapshot, dovremmo prima determinare quali istantanee verranno unite. Le istantanee di Hyper-V devono essere unite in un ordine specificoda figlio a genitore. Pertanto, è importante stabilire la struttura dell’albero del checkpoint stabilendo l’ordine della loro creazione: dal più recente al più vecchio.

Come accennato in precedenza, ogni snapshot ha una relazione genitore-figlio con un’altra snapshot creata prima di essa. Il loro accorpamento può essere rappresentato sotto forma di una catena. Ad esempio, se sono state create 3 snapshot per 1 disco rigido virtuale, su cui è in esecuzione la VM, esso funge da genitore del primo checkpoint, questo checkpoint funge da genitore del secondo checkpoint e il secondo checkpoint funge da genitore del terzo checkpoint.

Per stabilire la struttura del checkpoint, procedere come segue:

  1. Aprire Hyper-V Manager
  2. Selezionare la VM di cui si desidera unire le snapshot
  3. Nella sezione Action sulla destra, fare clic su Inspect Disk
  4. Selezionare il file avhd(x) – figura 2
  5. Visualizzare la catena dei dischi, ripendendo l’operazione per tutti i dischi collegati – figura 3 e 4
Figura 2 – Elenco Dischi
Figura 3 – Proprietà AVHDX Child
Figura 4 – Proprietà AVHDX Child

Successivamente, è possibile avviare il processo di unione delle snapshot. Si noti che la VM deve essere spenta per evitare problemi durante l’operazione di merge (unione).

Per unire le snapsho, procedere come segue:

  1. Aprire Hyper-V Manager
  2. Selezionare la VM richiesta
  3. Fare clic su Edit Disk e nella schermata successiva seleziona Merge – figura 5
  4. Selezionare il file .avhdx più recente – figura 6
Figura 5 – Merge Dischi
Figura 6 – Selezione Disco da Unire

Per completare completamente il processo di unione delle snapshot, ripetere i passaggi 1-4 per ciascun file .avhd(x), fino a quando tutte le modifiche non sono state unite nel disco principale originale. Una volta completato, sarà possibile avviare nuovamente la macchina virtuale.

Utilizzando PowerShell

Prima di poter iniziare a unire le snapshot, assicurarsi che il computer abbia il cmdlet Merge-VHD abilitato. In caso contrario, installare la feature attraverso il seguente cmdlet: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell

Per unire le snapshot di Hyper-V, eseguire questo cmdlet: Merge-VHD Path “C:\Hyper-V\VM01\W10-lab.avhdx” DestinationPath C:\Hyper-V\VM01\W10-lab.vhdx”

Figura 7 – Merge via PowerShell

Al termine dell’operazione, arrestare la VM guest e riavviarla. A differenza di Hyper-V Manager, che richiede di unire separatamente ogni livello della catena del disco, PowerShell consente di eseguire un’operazione così complessa con un singolo comando.

Conclusioni

In pochi passaggi abbiamo visto come consolidare le snapshot all’interno di Hyper-V. E’ necessario tenere presente che le istantanee di Hyper-V non possono essere considerate come un backup effettivo e non è consigliabile utilizzarle nell’ambiente di produzione.