适用于:✔️ Linux VM ✔️ Windows
Azure 托管磁盘有五种磁盘类型:Azure 超级磁盘、高级 SSD v2、高级 SSD、标准 SSD 和标准 HDD。 可以根据性能需求轻松在高级 SSD、标准 SSD 和标准 HDD 之间进行切换。 高级 SSD 和标准 SSD 也可用于 区域冗余存储。 在大多数情况下,目前无法切换超级磁盘,必须部署具有现有磁盘快照的新磁盘。 但是,你可以从现有磁盘切换到高级 SSD v2。 有关详细信息,请参阅 “转换高级 SSD v2 磁盘 ”。
非托管磁盘不支持此功能。 但是,可以使用 CLI 或 PowerShell 轻松地将非托管磁盘转换为托管磁盘,以便能够在磁盘类型之间进行切换。
开始之前
由于转换需要重启虚拟机 (VM),因此请在预先存在的维护时段内计划磁盘迁移。
限制
- 每天只能更改两次磁盘类型。
- 只能更改托管磁盘的磁盘类型。 如果磁盘不受管理,请使用 CLI 或 PowerShell 将其转换为托管磁盘,以在磁盘类型之间进行切换。
- 如果原始磁盘是从 Azure Compute Gallery 映像创建的,则无法将磁盘迁移到高级 SSD v2。
更改单个托管磁盘的类型
对于开发/测试工作负荷,可以混合使用标准磁盘和高级磁盘来降低成本。 可以选择仅升级需要更高性能的磁盘。 本示例演示如何将单个 VM 磁盘从标准存储转换为高级存储。 但是,通过在此示例中更改 $storageType 变量,可以将 VM 的磁盘类型转换为标准 SSD 或标准 HDD。 若要使用高级托管磁盘,VM 必须使用支持高级存储的 VM 大小 。 还可以使用这些示例将磁盘从 本地冗余存储(LRS) 磁盘更改为 区域冗余存储(ZRS) 磁盘,反之亦然。 此示例还展示了如何切换到支持高级存储的大小:
注意
你可以像针对其他磁盘类型一样,将现有磁盘的类型更改为高级 SSD v2 磁盘。 若要了解此功能,请参阅 高级 SSD v2 迁移。
$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
将 VM 的所有托管磁盘从一个帐户切换到另一个帐户
此示例演示如何将某 VM 的所有磁盘转换为高级存储。 但是,通过在此示例中更改 $storageType 变量,可以将 VM 的磁盘类型转换为标准 SSD 或标准 HDD。 若要使用高级托管磁盘,VM 必须使用支持高级存储的 VM 大小 。 此示例还切换到了支持高级存储的大小:
# 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, Premium_LRS, and PremiumV2_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
转换高级 SSD v2 磁盘
你可以像对其他磁盘类型一样将现有磁盘切换到高级 SSD v2 磁盘。 高级 SSD v2 磁盘存在一些限制,请参阅其文章中的 “高级 SSD v2 限制 ”部分以了解详细信息。
切换到高级 SSD v2 磁盘时有一些额外的限制:
- 无法将 OS 磁盘切换到高级 SSD v2 磁盘。
- 现有磁盘只能直接切换到 512 扇区大小的高级 SSD v2 磁盘。
- 每个区域每个订阅只能同时执行 50 次转换。
- 如果现有磁盘是共享磁盘,请在更改为高级 SSD v2 之前分离所有 VM。
- 如果现有磁盘正在使用主机缓存,请在更改为高级 SSD v2 之前 将其设置为无 。
- 如果现有磁盘正在使用突发,请在更改为高级 SSD v2 之前将其禁用。
- 如果现有磁盘使用双重加密,请在更改为高级 SSD v2 之前 切换到单个加密选项之一 。
- 无法直接从高级 SSD v2 切换到其他磁盘类型。 如果要将高级 SSD v2 更改为其他磁盘类型,请使用 快照进行迁移。
- 不能直接从超级磁盘切换到高级 SSD v2 磁盘,可以使用 快照进行迁移。
- 如果在磁盘上配置了 Azure Site Recovery,请在更改为高级 SSD v2 之前将其禁用。
- 如果磁盘连接到启用了 Azure 备份的 VM,请在转换为高级 SSD v2 之前切换到增强备份策略。
- 如果使用其余 API,请对计算资源提供程序和磁盘资源提供程序使用 API 版本
2020-12-01
或更高版本。 - 在完成从以前的磁盘类型到高级 SSD v2 的转换过程之前,磁盘的性能会降低,如果磁盘的客户管理的密钥正在使用中,则无法更改或轮换它们。
- 可以使用以下命令检查转换过程,将
$diskName
和$resourceGroupName
替换为你的值:az disk show -n $diskName -g $resourceGroupName --query [completionPercent] -o tsv
- 可以使用以下命令检查转换过程,将
注意
如果使用 Azure 备份并将磁盘转换为高级 SSD v2,则会生成新磁盘的完整快照。 此为计费事件,你需要为此快照付费。
禁用主机缓存
如果磁盘正在使用主机缓存,则必须在转换为高级 SSD v2 之前将其禁用。 你将需要想在其上禁用主机缓存的磁盘的 LUN。 以下脚本输出附加到 VM 的磁盘的名称及其 LUN。 可以使用此项标识磁盘的 LUN。 将 yourResourceGroup
和 nameOfYourVM
替换为自己的值,然后再运行脚本。
myRG="yourResourceGroup"
myVM="nameOfYourVM"
az vm show -g $myRG -n $myVM --query "[storageProfile.dataDisks[].name, storageProfile.dataDisks[].lun]"
获取磁盘的 LUN 后,请将 LunHere
替换为 LUN,并运行以下命令来禁用主机缓存:
lun=LunHere
az vm update --resource-group $myRG --name $myVM --disk-caching $lun=None
禁用突发
如果磁盘正在使用突发,则必须在转换为高级 SSD v2 之前将其禁用。 如果在 12 小时内启用了突发,则必须等到第 13 小时或更高版本才能禁用它。
可以使用以下命令禁用磁盘突发:az disk update --name "yourDiskNameHere" --resource-group "yourRGNameHere" --enable-bursting false
禁用双重加密
如果磁盘正在使用双重加密,则必须在转换为高级 SSD v2 之前将其禁用。 可以使用以下命令通过客户管理的密钥将磁盘从双重加密更改为静态加密:
az disk-encryption-set update --name "nameOfYourDiskEncryptionSetHere" --resource-group "yourRGNameHere" --key-url yourKeyURL --source-vault "yourKeyVaultName" --encryption-type EncryptionAtRestWithCustomerKey
使用快照迁移到高级 SSD v2 或超级磁盘
注意
你可以像针对其他磁盘类型一样,将现有磁盘的类型更改为高级 SSD v2 磁盘。 若要了解此功能,请参阅 高级 SSD v2 迁移。
高级 SSD、标准 SSD 和标准 HDD 磁盘支持增量快照和完整快照。 但是,这些磁盘类型不支持使用完整快照进行迁移。 若要从快照创建高级 SSD v2 或超级磁盘,必须使用增量快照。
高级 SSD v2 磁盘和超级磁盘都有各自的一组限制。 例如,两者都不能用作 OS 磁盘,并且并非在所有区域中都可用。 有关详细信息,请参阅其文章中的高级 SSD v2 限制和超级磁盘 GA 范围和限制部分。
重要说明
将标准 HDD、标准 SSD 或高级 SSD 迁移到超级磁盘或高级 SSD v2 时,逻辑扇区大小必须为 512。
以下脚本将标准 HDD、标准 SSD 或高级 SSD 的快照迁移到超级磁盘或高级 SSD 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
后续步骤
使用 快照创建 VM 的只读副本。