如果有使用非托管磁盘的现有 Windows 虚拟机 (VM),可通过Azure 托管磁盘服务将 VM 转换为使用托管磁盘。 此过程会同时转换 OS 磁盘和任何附加的数据磁盘。
本文介绍如何使用 Azure PowerShell 转换 VM。 如需进行安装或升级,请参阅安装和配置 Azure PowerShell。
开始之前
请查看计划迁移到托管磁盘。
该转换需要重启 VM,因此请在预先存在的维护时段内计划 VM 迁移。
该转换是不可逆的。
请务必测试转换。 在生产环境中执行迁移之前迁移测试性虚拟机。
在转换期间,会解除分配 VM。 转换完成后,VM 在启动时会接收新的 IP 地址。 如果需要,可向 VM分配静态 IP 地址。
不会删除在转换之前由 VM 使用的原始 VHD 和存储帐户。 它们会继续产生费用。 若要避免这些项目产生的费用,请在验证转换已完成后删除原始 VHD Blob。
转换单实例 VM
本节介绍如何将单实例 Azure VM 从非托管磁盘转换为托管磁盘。 (如果 VM 位于可用性集中,请参阅下一节。)
使用Stop-AzureRmVMcmdlet 解除分配 VM。 以下示例在名为myResourceGroup的资源组中解除分配名为myVM的 VM:
PowerShell复制
$rgName="myResourceGroup"$vmName="myVM"Stop-AzureRmVM-ResourceGroupName$rgName-Name$vmName-Force
使用ConvertTo-AzureRmVMManagedDiskcmdlet 将 VM 转换为托管磁盘。 以下过程转换之前的 VM,包括 OS 磁盘和任何数据磁盘:
PowerShell复制
ConvertTo-AzureRmVMManagedDisk-ResourceGroupName$rgName-VMName$vmName
使用Start-AzureRmVM在转换为托管磁盘后启动 VM。 以下示例重启之前的 VM:
PowerShell复制
Start-AzureRmVM-ResourceGroupName$rgName-Name$vmName
在可用性集中转换 VM
如果要转换为托管磁盘的 VM 位于可用性集中,则需要先将可用性集转换为托管可用性集。
使用Update-AzureRmAvailabilitySetcmdlet 转换可用性集。 以下示例在名为myResourceGroup的资源组中更新名为myAvailabilitySet的可用性集:
PowerShell复制
$rgName='myResourceGroup'$avSetName='myAvailabilitySet'$avSet=Get-AzureRmAvailabilitySet-ResourceGroupName$rgName-Name$avSetNameUpdate-AzureRmAvailabilitySet-AvailabilitySet$avSet-SkuAligned
如果可用性集所在的区域只有 2 个托管容错域,但却有 3 个非托管容错域,则此命令会显示类似于“指定的容错域计数 3 必须在 1 到 2 这个范围内”的错误消息。 若要解决此错误,请将容错域更新为 2,并按如下所示将Sku更新为Aligned:
PowerShell复制
$avSet.PlatformFaultDomainCount =2Update-AzureRmAvailabilitySet-AvailabilitySet$avSet-SkuAligned
解除分配 VM,并转换可用性集中的 VM。 以下脚本使用Stop-AzureRmVMcmdlet 解除分配每个 VM,使用ConvertTo-AzureRmVMManagedDisk进行转换,并使用Start-AzureRmVM重启:
PowerShell复制
$avSet=Get-AzureRmAvailabilitySet-ResourceGroupName$rgName-Name$avSetNameforeach($vmInfoin$avSet.VirtualMachinesReferences){$vm=Get-AzureRmVM-ResourceGroupName$rgName|Where-Object{$_.Id-eq$vmInfo.id}Stop-AzureRmVM-ResourceGroupName$rgName-Name$vm.Name-ForceConvertTo-AzureRmVMManagedDisk-ResourceGroupName$rgName-VMName$vm.NameStart-AzureRmVM-ResourceGroupName$rgName-Name$vm.Name}
故障排除
如果转换过程中出现错误,或先前转换中的问题导致 VM 处于“失败”状态,请再次运行ConvertTo-AzureRmVMManagedDiskcmdlet。 通常只需简单的重试即可解决这一问题。
后续步骤
使用快照获取 VM 的只读副本。立即访问http://market.azure.cn