将 Linux 虚拟机从非托管磁盘转换为托管磁盘

如果有使用非托管磁盘的现有 Linux 虚拟机 (VM),可以将这些 VM 转换为使用 Azure 托管磁盘。 此过程会同时转换 OS 磁盘和任何附加的数据磁盘。

本文介绍如何使用 Azure CLI 转换 VM。 如果需要安装或升级它,请参阅安装 Azure CLI

准备阶段

  • 该转换将重新启动 VM,因此请在预先存在的维护时段内规划 VM 迁移。

  • 转换是不可逆的。

  • 请注意,任何具有虚拟机参与者角色的用户将不能更改 VM 大小(因为它们可以预转换)。 这是因为包含托管磁盘的 VM 要求用户对 OS 磁盘具有 Microsoft.Compute/disks/write 权限。

  • 请务必测试转换。 在生产环境中执行迁移之前迁移测试性虚拟机。

  • 在转换期间,将解除分配 VM。 转换完成后,VM 在启动时会接收新的 IP 地址。 如果需要,可向 VM 分配静态 IP 地址

  • 查看 Azure VM 代理支持转换过程所需的最低版本。 有关如何检查和更新代理版本的信息,请参阅 Azure 中 VM 代理的最低版本支持

  • 不会删除在转换之前由 VM 使用的原始 VHD 和存储帐户。 它们会继续产生费用。 若要避免这些项目产生的费用,请在验证转换已完成后删除原始 VHD Blob。 如果需要找到这些未附加的磁盘以删除它们,请参阅我们的文章查找并删除未附加的 Azure 托管和非托管磁盘

转换单实例 VM

本节介绍如何将单实例 Azure VM 从非托管磁盘转换为托管磁盘。 (如果 VM 位于可用性集中,请参阅下一部分。)可通过此过程,将 VM 从高级 (SSD) 非托管磁盘转换为高级托管磁盘,或从标准 (HDD) 非托管磁盘转换为标准托管磁盘。

备注

请先运行 az cloud set -n AzureChinaCloud 更改云环境,然后才能在 Azure 中国世纪互联中使用 Azure CLI。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

  1. 使用 az vm deallocate 解除分配 VM。 以下示例在名为 myResourceGroup 的资源组中解除分配名为 myVM 的 VM:

    az vm deallocate --resource-group myResourceGroup --name myVM
    
  2. 使用 az vm convert 将 VM 转换为托管磁盘。 以下过程转换名为 myVM 的 VM,包括 OS 磁盘和任何数据磁盘:

    az vm convert --resource-group myResourceGroup --name myVM
    
  3. 使用 az vm start 在转换为托管磁盘后启动 VM。 以下示例启动名为 myResourceGroup 的资源组中名为 myVM 的 VM。

    az vm start --resource-group myResourceGroup --name myVM
    

转换可用性集中的 VM

如果要转换为托管磁盘的 VM 位于可用性集中,则需要先将可用性集转换为托管可用性集。

可用性集中的所有 VM 都必须在转换可用性集之前解除分配。 可用性集本身转换为托管可用性集后,计划将所有 VM 转换为托管磁盘。 然后,启动所有 VM,并继续照常操作。

  1. 使用 az vm availability-set list 列出可用性集中的所有 VM。 以下示例列出了名为 myResourceGroup 的资源组中名为 myAvailabilitySet 的可用性集中的所有 VM:

    az vm availability-set show \
        --resource-group myResourceGroup \
        --name myAvailabilitySet \
        --query [virtualMachines[*].id] \
        --output table
    
  2. 使用 az vm deallocate 解除分配所有 VM。 以下示例在名为 myResourceGroup 的资源组中解除分配名为 myVM 的 VM:

    az vm deallocate --resource-group myResourceGroup --name myVM
    
  3. 使用 az vm availability-set convert 转换可用性集。 以下示例转换名为 myResourceGroup 的资源组中名为 myAvailabilitySet 的可用性集:

    az vm availability-set convert \
        --resource-group myResourceGroup \
        --name myAvailabilitySet
    
  4. 使用 az vm convert 将所有 VM 转换为托管磁盘。 以下过程转换名为 myVM 的 VM,包括 OS 磁盘和任何数据磁盘:

    az vm convert --resource-group myResourceGroup --name myVM
    
  5. 使用 az vm start 在转换为托管磁盘后启动所有 VM。 以下示例在名为 myResourceGroup 的资源组中启动名为 myVM 的 VM:

    az vm start --resource-group myResourceGroup --name myVM
    

使用 Azure 门户进行转换

还可以使用 Azure 门户将非托管磁盘转换为托管磁盘。

  1. 登录到 Azure 门户
  2. 从门户的 VM 列表中选择 VM。
  3. 在 VM 的边栏选项卡中,从菜单中选择“磁盘”。
  4. 在“磁盘”边栏选项卡的顶部,选择“迁移到托管磁盘”。
  5. 如果 VM 位于可用性集中,则“迁移到托管磁盘”边栏选项卡上会出现“首先需要转换可用性集”的警告。 此警告应该有一个链接,单击该链接即可转换可用性集。 转换可用性集后,或者如果 VM 不在可用性集中,请单击“迁移”以启动将磁盘迁移到托管磁盘的过程。

VM 将会停止并在完成迁移后重新启动。

后续步骤

有关存储选项的详细信息,请参阅 Azure 托管磁盘概述