Migrazione dei dischi delle macchine virtuali in Azure a Managed Disks

Da qualche giorno ho notato che nella pagina Overview delle macchine virtuali in Azure appare un messaggio che invita a migrare i dischi della VM da Unmanaged a Managed. Le macchine virtuali interessate in effetti sono state create diversi anni fa, quando gli Azure Managed Disks non esistevano. I dischi delle diverse macchine virtuali sono infatti conservati in uno Storage Account e sono stati progettati per il 99,999% di disponibilità. Per maggiori informazioni sui dischi che vengono collegati alle Azure VM vi rimando alla lettura dell’articolo Informazioni sull’archiviazione su dischi per le VM Windows di Azure

Se create una nuova VM dal portale di Azure vi viene chiesto se volete che i dischi siano Managed o Unmanaged e a dirla tutta la selezione su Managed Disk è attiva di default.

Il vantaggio dell’uso dei Managed Disk è offerto dalla gestione automatica che Azure fa dei dischi, senza necessariamente associarli ad uno Storage Account e senza subirne i limiti. Infatti i dischi avranno la massima tolleranza ai guasti offerta da Azure e saranno disponibili in modalità ridondata, esattamente come avviene per tutte le funzionalità offerte da Azure. I dischi verranno inseriti in differenti Storage Scale Units (stamps) che servono a limitare l’impatto che si avrebbe sulle VM nel momento in cui avvenisse un guasto hardware o software sullo storage.

Figura 1: Durante la creazione di una nuova Azure VM vengono utilizzati di default i Managed Disks

Migrazione dei dischi delle VM esistenti

È possibile eseguire la migrazione delle macchine virtuali di Azure esistenti a Managed Disks per trarre vantaggio dalla maggiore affidabilità delle macchine virtuali in un set di disponibilità. Dalla pagina Overview della VM sarà infatti sufficiente cliccare sul link Migrate to Managed Disks to get more benefits, come mostrato in figura:

Figura 2: Invito alla migrazione ai Managed Disks nella pagina di Overview della Azure VM

È importante notare che la conversione degli Unmanaged Disks a Managed Disks NON sarà reversibile e che una volta completata la conversione non sarà più possibile collegare dischi Unmanaged alla VM. Se la macchina non è accesa, verranno prima convertiti i dischi e successivamente la VM verrà automaticamente avviata per completare la migrazione e successivamente sarà possibile spegnerla. Se la Azure VM fa parte di un set di disponibilità, sarà necessario prima convertire il Virtual Machine Availability Set a Managed Availability Set e successivamente sarà possibile migrare i dischi, come mostrato in figura:

Figura 3: Conversione dell’Availabilty Set esistente a Managed Availability Set

Completata la migrazione dell’Availability Set basterà cliccare sul pulsante Migrate per migrare i dischi della VM. Terminata la migrazione dei dischi la macchina virtuale verrà automaticamente accesa.

Figura 4: Migrazione dei dischi della VM a Managed Disks

Figura 5: Operazione di migrazione dei dischi in corso

Figura 6: Migrazione dei dischi completata

Considerate che i dischi originali della VM NON verranno cancellati dallo Storage Account e che quindi continuerete a pagarli. Dopo la conversione vi conviene quindi cancellare i VHD originali dallo Storage Account.

Conversione tramite Azure Powershell

È possibile eseguire la procedura di conversione dei dischi di una singola VM utilizzando un paio di comandi di Azure PowerShell. Assicuratevi di avere almeno la versione 6.0.0 del modulo Azure PowerShell (verificatelo con il comando Get-Module -ListAvailable AzureRM) e se necessario aggiornate il modulo con il comando Update-Module AzureRM , come mostrato in figura:

Figura 7: Aggiornamento del modulo PowerShell di AzureRM

Connettetevi a Microsoft Azure con il comando Connect-AzureRmAccount e lanciate i seguenti comandi:

#Spegnimento della VM con deallocazione del disco
$rgName “mioResourceGroup” $vmName “miaVM”

Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force

#Conversione dei dischi e successiva riaccensione della VM
ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $rgName -VMName $vmName

Figura 8: Conversione dei dischi tramite PowerShell

Se volete convertire tutte le VM all’interno di un Availability Set allora potete usare i seguenti comandi:

#Aggiornamento dell’Availability Set a Managed Availiability Set
$rgName ‘mioResourceGroup’

$avSetName ‘mioAvailabilitySet’

$avSet Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avSetName

Update-AzureRmAvailabilitySet -AvailabilitySet $avSet -Sku Aligned

#Migrazione di tutte le VM contenute nell’Availability Set
foreach($vmInfo in $avSet.VirtualMachinesReferences)

{

$vm Get-AzureRmVM -ResourceGroupName $rgName Where-Object {$_.Id -eq $vmInfo.id}

Stop-AzureRmVM -ResourceGroupName $rgName -Name $vm.Name -Force

ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $rgName -VMName $vm.Name

}

Figura 9: Conversione di tutte le VM di un Availability Set

Problematiche nella migrazione

Durante la migrazione di una delle VM ho riscontrato un errore, che indicava che l’operazione di conversione a Managed Disks non era possibile a causa di una problematica relativa ad un’estensione della VM. Nel mio caso l’estensione era IaaSDiagnostics. Ho provveduto quindi a rimuovere l’estensione direttamente dal portale di Azure, cliccando sul nodo Extensions della VM e scegliendo la voce Uninstall, e a rilanciare la migrazione dei dischi, che si è svolta senza ulteriori intoppi. Successivamente ho reinstallato l’estensione che avevo rimosso.

Figura 10: l’estensione IaaSDiagnostics è in failed state ed impedisce la migrazione a Managed Disks

Figura 11: Rimozione dell’estensione effettuata a macchina accesa

Conclusioni

La migrazione dei dischi a Managed Disks è un’operazione molto semplice, che però richiede un certo downtime in quanto le macchine devono essere arrestate. Prima di iniziare vi consiglio di leggere due articoli: Plan for the migration to Managed Disks e the FAQ about migration to Managed Disks. Avete ancora macchine virtuali con Azure Service Manager (ASM) create con il vecchio portale? Allora seguite la guida Eseguire manualmente la migrazione di una macchina virtuale classica a una nuova macchina virtuale con disco gestito ARM

Buon lavoro!

Nic