Alterar o tipo de disco de um disco gerenciado do Azure

Aplica-se a: ✔️ Linux VMs ✔️ Windows

Existem cinco tipos de disco de discos geridos pelo Azure: Azure Ultra Disks, Premium SSD v2, Premium SSD, Standard SSD e Standard HDD. Pode alternar facilmente entre SSD Premium, SSD Standard e HDD Standard com base nas suas necessidades de desempenho. SSD Premium e SSD padrão também estão disponíveis com armazenamento com redundância de zona. Ainda não é possível alternar de ou para um Ultra Disk ou um SSD Premium v2, você deve implantar um novo com um instantâneo de um disco existente. Consulte Migrar para SSD Premium v2 ou Ultra Disk para obter detalhes.

Esta funcionalidade não é suportada para discos não geridos. Mas você pode facilmente converter um disco não gerenciado em um disco gerenciado com CLI ou PowerShell para poder alternar entre tipos de disco.

Antes de começar

Uma vez que a conversão requer que a máquina virtual (VM) seja reiniciada, agende a migração do disco durante uma janela de manutenção pré-existente.

Restrições

  • Só é possível alterar o tipo de disco duas vezes por dia.
  • Só pode alterar o tipo de disco dos discos geridos. Se o disco não for gerenciado, converta-o em um disco gerenciado com CLI ou PowerShell para alternar entre os tipos de disco.

Alternar todos os discos gerenciados de uma VM de uma conta para outra

Este exemplo mostra como converter todos os discos de uma VM num armazenamento premium. No entanto, ao alterar a variável $storageType neste exemplo, pode converter o tipo de discos da VM em SSD standard ou HDD standard. Para utilizar os discos geridos Premium, a VM tem de utilizar um tamanho de VM que suporte o armazenamento Premium. Este exemplo também muda para um tamanho que suporta o armazenamento premium:

# Name of the resource group that contains the VM
$rgName = 'yourResourceGroup'

# Name of the your virtual machine
$vmName = 'yourVM'

# Choose between Standard_LRS, StandardSSD_LRS, StandardSSD_ZRS, Premium_ZRS, and Premium_LRS based on your scenario
$storageType = 'Premium_LRS'

# Premium capable size
# Required only if converting storage from Standard to Premium
$size = 'Standard_DS2_v2'

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

$vm = Get-AzVM -Name $vmName -resourceGroupName $rgName

# Change the VM size to a size that supports Premium storage
# Skip this step if converting storage from Premium to Standard
$vm.HardwareProfile.VmSize = $size
Update-AzVM -VM $vm -ResourceGroupName $rgName

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

# For disks that belong to the selected VM, convert to Premium storage
foreach ($disk in $vmDisks)
{
	if ($disk.ManagedBy -eq $vm.Id)
	{
		$disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new($storageType)
		$disk | Update-AzDisk
	}
}

Start-AzVM -ResourceGroupName $rgName -Name $vmName

Alterar o tipo de um disco gerenciado individual

Relativamente à sua carga de trabalho de dev/test, poderá querer uma combinação de discos Standard e Premium, para reduzir os custos. Pode optar por atualizar apenas os discos que precisam de um desempenho melhor. Este exemplo mostra como converter um disco de VM individual do armazenamento Standard em Premium. No entanto, ao alterar a variável $storageType neste exemplo, pode converter o tipo de discos da VM em SSD standard ou HDD standard. Para utilizar os discos geridos Premium, a VM tem de utilizar um tamanho de VM que suporte o armazenamento Premium. Você também pode usar esses exemplos para alterar um disco de disco de armazenamento com redundância local (LRS) para um disco de armazenamento com redundância de zona (ZRS) ou vice-versa. Este exemplo também mostra como mudar para um tamanho que suporte o armazenamento Premium:


$diskName = 'yourDiskName'
# resource group that contains the managed disk
$rgName = 'yourResourceGroupName'
# Choose between Standard_LRS, StandardSSD_LRS, StandardSSD_ZRS, Premium_ZRS, and Premium_LRS based on your scenario
$storageType = 'Premium_LRS'
# Premium capable size 
$size = 'Standard_DS2_v2'

$disk = Get-AzDisk -DiskName $diskName -ResourceGroupName $rgName

# Get parent VM resource
$vmResource = Get-AzResource -ResourceId $disk.ManagedBy

# Stop and deallocate the VM before changing the storage type
Stop-AzVM -ResourceGroupName $vmResource.ResourceGroupName -Name $vmResource.Name -Force

$vm = Get-AzVM -ResourceGroupName $vmResource.ResourceGroupName -Name $vmResource.Name 

# Change the VM size to a size that supports Premium storage
# Skip this step if converting storage from Premium to Standard
$vm.HardwareProfile.VmSize = $size
Update-AzVM -VM $vm -ResourceGroupName $rgName

# Update the storage type
$disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new($storageType)
$disk | Update-AzDisk

Start-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name

Migrar para Premium SSD v2 ou Disco Ultra

Atualmente, só é possível migrar um disco existente para um Ultra Disk ou para um SSD Premium v2 através de instantâneos armazenados no Armazenamento Standard (Incremental Standard HDD Snapshot). Não há suporte para migração com snapshots armazenados no armazenamento Premium e outras opções.

Tanto os discos SSD Premium v2 como os Ultra Disks têm o seu próprio conjunto de restrições. Por exemplo, nenhum deles pode ser usado como um disco do sistema operacional e também não estão disponíveis em todas as regiões. Consulte as seções Limitações do SSD Premium v2 e Escopo e limitações do Ultra Disk GA de seus artigos para obter mais informações.

Importante

Ao migrar um HDD padrão, SSD padrão ou SSD Premium para um disco Ultra ou SSD Premium v2, o tamanho do setor lógico deve ser 512.

O script a seguir migra um instantâneo de um HDD padrão, SSD padrão ou SSD Premium para um disco Ultra ou um SSD Premium v2.

$diskName = "yourDiskNameHere"
$resourceGroupName = "yourResourceGroupNameHere"
$snapshotName = "yourDesiredSnapshotNameHere"

# Valid values are 1, 2, or 3
$zone = "yourZoneNumber"

#Provide the size of the disks in GB. It should be greater than the VHD file size.
$diskSize = '128'

#Provide the storage type. Use PremiumV2_LRS or UltraSSD_LRS.
$storageType = 'PremiumV2_LRS'

#Provide the Azure region (e.g. westus) where Managed Disks will be located.
#This location should be same as the snapshot location
#Get all the Azure location using command below:
#Get-AzLocation

#Select the same location as the current disk
#Note that Premium SSD v2 and Ultra Disks are only supported in a select number of regions
$location = 'eastus'

#When migrating a Standard HDD, Standard SSD, or Premium SSD to either an Ultra Disk or Premium SSD v2, the logical sector size must be 512
$logicalSectorSize=512

# Get the disk that you need to backup by creating an incremental snapshot
$yourDisk = Get-AzDisk -DiskName $diskName -ResourceGroupName $resourceGroupName

# Create an incremental snapshot by setting the SourceUri property with the value of the Id property of the disk
$snapshotConfig=New-AzSnapshotConfig -SourceUri $yourDisk.Id -Location $yourDisk.Location -CreateOption Copy -Incremental 
$snapshot = New-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName -Snapshot $snapshotConfig

$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Copy -SourceResourceId $snapshot.Id -DiskSizeGB $diskSize -LogicalSectorSize $logicalSectorSize -Zone $zone
 
New-AzDisk -Disk $diskConfig -ResourceGroupName $resourceGroupName -DiskName $diskName

Próximos passos

Faça uma cópia somente leitura de uma VM usando um instantâneo.