Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
适用于:✔️ Windows VM
2026 年 3 月 31 日,非托管磁盘即将停用。 如果使用非托管磁盘,请在该日期之前迁移到托管磁盘。 有关停用的详细信息,请参阅 在 2026 年 3 月 31 日之前迁移 Azure 非托管磁盘。
如果有使用非托管磁盘的现有 Windows 虚拟机 (VM),可通过 Azure 托管磁盘服务迁移 VM 以使用托管磁盘。 此过程同时转换操作系统 (OS) 磁盘和任何附加的数据磁盘。
在开始之前
请审查迁移到托管磁盘的计划。
请查看有关迁移到托管磁盘的常见问题。
在转换之前,请确保 VM 处于正常状态。
该迁移将重启 VM,因此请在预先存在的维护时段内规划 VM 迁移。
该迁移不可逆。
请务必测试迁移。 在生产环境中执行迁移之前,应先在测试环境中迁移虚拟机。
在迁移过程中,您需要解除分配该虚拟机。 迁移完成后,VM 在启动时会接收新的 IP 地址。 如果需要,可向 VM 分配静态 IP 地址。
查看 Azure VM 代理支持迁移过程所需的最低版本。 有关如何检查和更新代理版本的信息,请参阅 Azure 中 VM 代理的最低版本支持
- 不会删除在迁移之前由 VM 使用的原始 VHD 和存储帐户。 它们会继续产生费用。 若要避免这些项目产生的费用,请在验证迁移已完成后删除原始的 VHD Blob。 如果需要找到这些未附加的磁盘以删除它们,请参阅我们的文章查找并删除未附加的 Azure 托管和非托管磁盘。
迁移单实例虚拟机
本部分介绍如何将单实例 Azure VM 从非托管磁盘迁移到托管磁盘。 (如果虚拟机位于可用性集中,请参阅下一部分。)
使用 Stop-AzVM cmdlet 解除分配 VM。 以下示例将资源组名为
myResourceGroup中的 VM 名为myVM解除分配:$rgName = "myResourceGroup" $vmName = "myVM" Stop-AzVM -ResourceGroupName $rgName -Name $vmName -Force使用 ConvertTo-AzVMManagedDisk cmdlet 将 VM 迁移到托管磁盘。 以下过程转换之前的 VM,包括 OS 磁盘和任何数据磁盘,并启用虚拟机:
ConvertTo-AzVMManagedDisk -ResourceGroupName $rgName -VMName $vmName
迁移可用性集中的虚拟机 (VM)
如果要迁移到托管磁盘的虚拟机位于一个可用性集中,则需要先将该可用性集迁移到托管可用性集。
使用 Update-AzAvailabilitySet cmdlet 迁移可用性集。 以下示例在名为
myAvailabilitySet的资源组中更新名为myResourceGroup的可用性集:$rgName = 'myResourceGroup' $avSetName = 'myAvailabilitySet' $avSet = Get-AzAvailabilitySet -ResourceGroupName $rgName -Name $avSetName Update-AzAvailabilitySet -AvailabilitySet $avSet -Sku Aligned如果可用性集所在的区域只有 2 个托管容错域,但却有 3 个非托管容错域,则此命令会显示类似于“指定的容错域计数为 3,但该计数必须在 1 到 2 的范围内。”的错误消息。若要解决此错误,请将容错域更新为 2,并按如下所示将
Sku更新为Aligned:$avSet.PlatformFaultDomainCount = 2 Update-AzAvailabilitySet -AvailabilitySet $avSet -Sku Aligned解除分配 VM,并迁移可用性集中的 VM。 以下脚本使用 Stop-AzVM cmdlet 解除分配每个 VM,使用 ConvertTo-AzVMManagedDisk 进行转换,并在迁移过程结束后自动将其重启:
$avSet = Get-AzAvailabilitySet -ResourceGroupName $rgName -Name $avSetName foreach($vmInfo in $avSet.VirtualMachinesReferences) { $vm = Get-AzVM -ResourceGroupName $rgName | Where-Object {$_.Id -eq $vmInfo.id} Stop-AzVM -ResourceGroupName $rgName -Name $vm.Name -Force ConvertTo-AzVMManagedDisk -ResourceGroupName $rgName -VMName $vm.Name }
故障排除
- 在转换之前,确保所有 VM 扩展都处于“预配成功”状态,否则迁移将失败,并出现错误代码 409。
- 如果迁移过程中出现错误,或先前迁移中的问题导致 VM 处于“失败”状态,请再次运行
ConvertTo-AzVMManagedDiskcmdlet。 简单的重试通常可以解决问题。 - 如果要将 Linux VM 转换为托管磁盘,请使用最新版本的 Azure Linux 代理。 使用 Azure Linux 代理 2.2.0 及更低版本的操作可能会失败。 也不支持在通用 VM 或属于经典可用性集的 VM 上运行迁移。
- 如果迁移失败并出现“SnapshotCountExceeded”错误,请删除一些快照并重试该操作。
使用 Azure 门户进行迁移
还可以使用 Azure 门户将非托管磁盘迁移到托管磁盘。
- 登录到 Azure 门户。
- 从门户的虚拟机列表中选择虚拟机。
- 在 VM 的边栏选项卡中,从菜单中选择“磁盘”。
- 在“磁盘”窗格的顶部,选择“迁移到托管磁盘”。
- 如果 VM 位于可用性集中,那么在“迁移到托管磁盘”边栏选项卡上会出现警告,提示您需要首先迁移可用性集。 此警告应该有一个链接,单击该链接即可迁移可用性集。 转换可用性集后,或者如果 VM 不在可用性集中,请单击“迁移”以启动将磁盘迁移到托管磁盘的过程。
VM 将会停止并在完成迁移后重新启动。
后续步骤
通过使用快照来获取 VM 的只读副本。