Convertire i dischi non gestiti di una VM Windows in dischi gestiti

Se si hanno macchine virtuali (VM) Windows che usano dischi non gestiti, è possibile convertire le VM all'uso di dischi gestiti mediante il servizio Azure Managed Disks. Questo processo consente di convertire sia il disco del sistema operativo che eventuali dischi dati collegati.

Questo articolo illustra come convertire le VM con Azure PowerShell. Se è necessario eseguirne l'installazione o l'aggiornamento, vedere Installare e configurare Azure PowerShell.

Prima di iniziare

  • La conversione richiede un riavvio della macchina virtuale, quindi pianificare la migrazione delle macchine virtuali in una finestra di manutenzione preesistente.

  • La conversione non è reversibile.

  • Assicurarsi di testare la conversione. Eseguire la migrazione di una macchina virtuale di test prima di eseguire la migrazione nell'ambiente di produzione.

  • Durante la conversione la macchina virtuale verrà deallocata. La macchina virtuale riceve un nuovo indirizzo IP quando viene avviata dopo la conversione. Se necessario, è possibile assegnare un indirizzo IP statico alla VM.

  • I dischi rigidi virtuali originali e l'account di archiviazione usato dalla macchina virtuale prima della conversione non verranno eliminati e i costi correlati continueranno a essere addebitati. Per evitare addebiti per questi elementi, eliminare i BLOB VHD originali dopo aver verificato che la conversione sia stata completata.

Convertire VM a istanza singola

Questa sezione descrive come convertire i dischi delle macchine virtuali di Azure a istanza singola da non gestiti a gestiti. Se le VM sono in un set di disponibilità, vedere la sezione successiva.

  1. Deallocare la VM mediante il cmdlet Stop-AzureRmVM. L'esempio seguente dealloca la macchina virtuale denominata myVM nel gruppo di risorse myResourceGroup:

    $rgName = "myResourceGroup"
    $vmName = "myVM"
    Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
    
  2. Convertire i dischi della VM in dischi gestiti mediante il cmdlet ConvertTo-AzureRmVMManagedDisk. Il processo seguente converte la macchina virtuale precedente, incluso il disco del sistema operativo ed eventuali dischi dati:

    ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $rgName -VMName $vmName
    
  3. Avviare la VM dopo la conversione ai dischi gestiti mediante Start-AzureRmVM. L'esempio seguente riavvia la VM precedente:

    Start-AzureRmVM -ResourceGroupName $rgName -Name $vmName
    

Convertire VM in un set di disponibilità

Se le macchine virtuali che si desidera convertire in dischi gestiti si trovano in un set di disponibilità, è innanzitutto necessario convertire il set di disponibilità in un set di disponibilità gestito.

  1. Convertire il set di disponibilità mediante il cmdlet Update-AzureRmAvailabilitySet. L'esempio seguente aggiorna il set di disponibilità denominato myAvailabilitySet nel gruppo di risorse myResourceGroup:

    $rgName = 'myResourceGroup'
    $avSetName = 'myAvailabilitySet'
    
    $avSet = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avSetName
    Update-AzureRmAvailabilitySet -AvailabilitySet $avSet -Sku Aligned 
    

    Se l'area in cui si trova il set di disponibilità ha solo 2 domini di errore gestiti, ma il numero di domini di errore non gestiti è 3, questo comando visualizza un errore di questo tipo: "Il conteggio del dominio di errore specificato 3 deve essere compreso nell'intervallo 1-2". Per correggere l'errore, impostare il dominio di errore su 2 e impostare Sku su Aligned come segue:

    $avSet.PlatformFaultDomainCount = 2
    Update-AzureRmAvailabilitySet -AvailabilitySet $avSet -Sku Aligned
    
  2. Deallocare e convertire le VM nel set di disponibilità. Lo script seguente dealloca ogni VM mediante il cmdlet Stop-AzureRmVM, la converte mediante ConvertTo-AzureRmVMManagedDisk e la riavvia mediante Start-AzureRmVM:

    $avSet = Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $avSetName
    
    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
      Start-AzureRmVM -ResourceGroupName $rgName -Name $vmName
    }
    

Convertire i dischi gestiti da standard a Premium

Dopo avere convertito i dischi della VM in dischi gestiti, è possibile passare da un tipo di archiviazione a un altro. È possibile anche avere una combinazione di dischi che usa sia l'archiviazione Premium che quella standard.

L'esempio seguente illustra come passare dall'archiviazione standard all'archiviazione Premium. Per usare i dischi gestiti Premium, la VM deve avere dimensioni tali da supportare l'archiviazione Premium. In questo esempio si passa anche a una dimensione che supporta l'archiviazione Premium.

$rgName = 'myResourceGroup'
$vmName = 'YourVM'
$size = 'Standard_DS2_v2'
$vm = Get-AzureRmVM -Name $vmName -resourceGroupName $rgName

# Stop and deallocate the VM before changing the size
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force

# Change the VM size to a size that supports premium storage
$vm.HardwareProfile.VmSize = $size
Update-AzureRmVM -VM $vm -ResourceGroupName $rgName

# Get all disks in the resource group of the VM
$vmDisks = Get-AzureRmDisk -ResourceGroupName $rgName 

# For disks that belong to the selected VM, convert to premium storage
foreach ($disk in $vmDisks)
{
    if ($disk.OwnerId -eq $vm.Id)
    {
        $diskUpdateConfig = New-AzureRmDiskUpdateConfig –AccountType PremiumLRS
        Update-AzureRmDisk -DiskUpdate $diskUpdateConfig -ResourceGroupName $rgName `
        -DiskName $disk.Name
    }
}

Start-AzureRmVM -ResourceGroupName $rgName -Name $vmName

Risoluzione dei problemi

Se si verifica un errore durante la conversione o se una VM si trova in uno stato di errore a causa di problemi in una conversione precedente, eseguire di nuovo il cmdlet ConvertTo-AzureRmVMManagedDisk. In genere è sufficiente riprovare per sbloccare la situazione.

Passaggi successivi

Eseguire una copia di sola lettura di una VM usando snapshot.