Gestione degli snapshot in Microsoft Azure. Ripristino e clonazione delle VM

Una delle funzionalità più interessanti che riguardano i dischi gestiti delle macchine virtuali utilizzate in Azure è la possibilità di catturarne uno snapshot da poter poi successivamente riutilizzare. Ho già parlato dei dischi gestiti in un precedente articolo intitolato Migrazione dei dischi delle macchine virtuali in Azure a Managed Disks

Lo snaphost dei dischi gestiti (managed disks) può essere fatto sia per il disco del sistema operativo sia per gli eventuali dischi dei dati aggiunti alla VM e può essere catturato anche a macchina accesa.

La cattura dura pochissimi secondi e subito dopo lo snapshot potrà essere scaricato dal cloud per dei test oppure potrà essere riutilizzato per creare delle nuove VM o per riprisitnare la VM esistente.

Lo snapshot può anche essere riutilizzato per ricreare la stessa macchina virtuale. Basterà associare un nuovo disco gestito allo snapshot creato.

Creazione dello snapshot

In questa guida voglio mostrarvi come ripristinare il disco di sistema di una Azure VM accesa. Selezionate la VM nel portale di Azure e successivamente selezionate il ramo Disks. Selezionate il disco di cui volete catturare lo snapshot (nel mio caso è il disco del sistema operativo) e fate clic sul pulsante Create Snapshot. Nel blade che si aprirà date un nome allo snapshot, scegliete il Resource Group dove inserirlo e scegliete l’Account type.

Figura 1: Creazione dello snapshot del disco del sistema operativo

Figura 2: Configurazione del disco di snapshot

Dopo pochissimi secondi lo snapshot del disco sarà disponibile nel portale di Azure. Potete visualizzarlo tramite le risorse di tipo Snapshot.

Figura 3: Lo Snapshot è visibile e gestibile dal portale di Azure

Se volete esportare lo snapshot è sufficiente cliccare su Export e generare un URL per il download del disco, come mostrato in figura

Figura 4: Esportazione del disco di Snapshot

La creazione dello snapshot può ovviamente essere effettuata anche da PowerShell:

#Connessione ad Azure
Connect-AzureRmAccount

#Impostazione dei parametri
$resourceGroupName ‘NESTED’
$location ‘francecentral’
$vmName ‘TRAINER’
$snapshotName ‘OSbackup’

#Selezione della VM
$vm get-azurermvm -ResourceGroupName $resourceGroupName -Name $vmName

#Creazione della configurazione dello snapshot. In questo esempio verrà eseguito uno snapshot del disco del sistema operativo
$snapshot New-AzureRmSnapshotConfig -SourceUri $vm.StorageProfile.OsDisk.ManagedDisk.Id -Location $location -CreateOption copy

#Creazione dello snapshot
New-AzureRmSnapshot -Snapshot $snapshot -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName

Figura 5: Creazione dello snapshot del disco di sistema di una VM tramite PowerShell

Gli snapshot sono visibili dal portale di Azure visualizzando il nodo Snapshots.

Utilizzo degli Snapshot come hard disk secondari per le VM esistenti

Se volete collegare uno snapshot ad una VM per poter accedere al contenuto o per effettuare il troubleshooting o semplicemente perché si tratta di un disco dati che volete clonare, potete effettuare le seguenti operazioni:

  1. Collegarvi al nodo Disks della macchina virtuale
  2. Cliccare su Add data disk e selezionare un Managed disk esistente oppure crearne uno nuovo cliccando su Create Disk
  3. Se volete creare un nuovo Managed Disk, nel blade che vi si aprirà scegliete il Nome e mettete come Source
    Type Snapshot, scegliendo dal menù a tendina lo snapshot esistente

È importante ricordare che lo snapshot si deve trovare nella stessa sottoscrizione e nella stessa Region della VM

Figura 6: Aggiunta di un disco dati alla Azure VM accesa

Figura 7: Creazione di un Managed Disk partendo da uno Snapshot

Cliccate sul pulsante Save e in pochi secondi il disco sarà stato aggiunto alla vostra Azure VM accesa. Andando in Gestione Dischi vedrete che il disco è offline. Portatelo online e assegnategli una lettera, per poter accedere al contenuto del disco

Figura 8: Disco dati aggiunto alla VM

Figura 9: Il nuovo disco aggiunto è visibile all’interno della VM in gestione disco

Ripristino del disco del sistema operativo partendo da uno Snapshot

Può capitare che a volte torni utile ripristinare una VM ad uno stato precedente del sistema. Prima di fare delle operazioni rischiose molto spesso catturiamo dei checkpoint della VM, in modo tale da poter annullare modifiche che abbiano compromesso il sistema.

Purtroppo in Azure non abbiamo accesso all’Hyper-V e quindi non possiamo catturare un checkpoint della VM per poi farne il revert in caso di problemi. È possibile però avere lo stesso risultato utilizzando gli snapshot dei dischi.

I passaggi sono molto semplici:

  1. Catturare uno snapshot dei dischi da proteggere (a VM accesa)
  2. Creare un managed disk utilizzando lo snapshot catturato (tramite portale o tramite PowerShell)
  3. Applicare il managed disk creato come disco del sistema operativo della VM (tramite PowerShell) nel caso sia necessario tornare indietro nel tempo (revert)

L’operazione viene fatta senza dover cancellare la VM e ricrearla.

Prima di tutto ho catturato uno snapshot del disco di sistema della VM chiamata TRAINER (a VM accesa) e subito dopo ho creato dal Portale di Azure un disco gestito chiamato Snapshot Trainer collegato allo snapshot

Figura 10: Creazione del disco gestito associato allo snapshot

Ho effettuato alcune operazioni all’interno della VM, disinstallando dei programmi ed eliminando dei file.

Per ripristinare lo stato della VM (revert) ho eseguito lo script PowerShell che sostituisce il disco del sistema operativo della macchina TRAINER. Lo script è stato eseguito a macchina virtuale accesa, ma sarà necessario un riavvio della VM per il suo completamento. L’operazione è durata meno di un minuto.

#Connessione ad Azure
Connect-AzureRmAccount

#Impostazione dei parametri
$resourceGroupName ‘NESTED’
$location ‘westeurope’
$vmName ‘TRAINER’
$diskName ‘SnapshotTrainer’
$vm Get-AzureRmVM -ResourceGroupName $resourceGroupName -Name $vmName
$disk Get-AzureRmDisk -ResourceGroupName $resourceGroupName -Name $diskName

Set-AzureRmVMOSDisk -VM $vm -ManagedDiskId $disk.Id -Name $disk.Name

Update-AzureRmVM -ResourceGroupName $resourceGroupName -VM $vm

Figura 11: Ripristino del disco di sistema partendo da uno snapshot

Ripristino della VM effettuato!!!

Clonazione di una Azure VM partendo dallo snapshot di un disco di sistema

Se avete necessità di clonare una macchina virtuale in Azure, perché avete bisogno di fare dei test oppure dovete fare troubleshooting senza voler toccare la macchina in produzione è possibile utilizzare questi semplici passaggi:

  1. Catturare uno snapshot del disco di sistema da clonare (a VM accesa o spenta)
  2. Creare un managed disk utilizzando lo snapshot catturato (tramite portale o tramite PowerShell)
  3. Utilizzare il managed disk creato come disco del sistema operativo di una nuova (tramite portale o tramite PowerShell)

Come prima operazione quindi catturate lo snapshot del disco di sistema. Come ho già detto, per poter utilizzare uno snapshot è necessario associarlo ad un disco gestito (Managed Disk). Create una nuova risorsa dal portale di Azure e scegliete Managed Disks. Dal blade che si aprirà date un nome al disco e come Source type scegliete Snapshot, selezionando dal menù a tendina il Source Snapshot che desiderate associare.

Figura 12: Creazione di un disco gestito (managed disk) associato allo snapshot creato

Il disco gestito creato è adesso nello stato Unattached. Per poter visualizzare i dischi non collegati potete aggiungere la colonna Disk State dopo aver visualizzato i dischi nel portale di Azure, come mostrato nelle 2 figure sotto:

Figura 13: Visualizzazione della colonna Disk State

Figura 14: Il disco creato ha il disk state Unattached

Creazione di una nuova VM partendo da un disco Unattached

Dopo aver selezionato il disco creato è possibile creare una nuova macchina virtuale facendo clic sul pulsante Create VM. Completate le informazioni richieste per la creazione della VM e attendete l’avvio. Avrete clonato la macchina di partenza 😊

Figura 15: Creazione della VM partendo da un disco gestito

Figura 16: L’immagine da cui parte la VM è il disco gestito da cui abbiamo creato dallo snapshot

Nel giro di pochi minuti la vostra VM sarà avviata e vi potrete loggare. Trattandosi di una macchina clonata, prestate attenzione a quale virtual network la collegate, per non avere problemi di nomi duplicati nella rete.

Figura 17: La macchina virtuale clonata è avviata

Conclusioni

La clonazione di una VM in Azure è un’operazione veramente semplice. Gli snapshot dei dischi gestiti ci permettono di poter clonare un disco del sistema operativo o un disco dati in pochissimi secondi, dandoci la possibilità anche di esportarli e di collegarli alle nostre VM. In questo modo abbiamo la possibilità di fare troubleshooting o test sulle nostre VM, senza toccare la produzione e senza dare downtime. Se invece abbiamo bisogno di ripristinare velocemente uno stato precedente del sistema, possiamo sfruttare la stessa funzionalità offerta dai checkpoint creati con gli hypervisor on-premises.