使用 Azure CLI 更改由 Azure VM 使用的 OS 磁盘

适用于: ✔️ Linux 虚拟机 ✔️ 灵活规模集

如果有现有 VM,但希望将磁盘交换为备份磁盘或其他 OS 磁盘,则可使用 Azure CLI 交换 OS 磁盘。 无需删除和重新创建 VM。 甚至可在另一资源组中使用托管磁盘,只要该磁盘尚未使用。

OS 磁盘交换要求

更换其 OS 磁盘之前,无需停止 VM。

交换 OS 磁盘之前,请确保当前磁盘和替换磁盘满足以下要求:

  • VM 大小支持替换磁盘的存储类型。 例如,高级存储中的替换磁盘需要支持高级存储的 VM 大小,例如 DS 系列大小。
  • 当前和替换 OS 磁盘的大小相同。
  • VM 和替换 OS 磁盘具有兼容的加密配置。 不支持将加密的 OS 磁盘交换到未加密的 VM。
  • 如果 VM 不使用Azure 磁盘加密,则替换 OS 磁盘不得使用Azure 磁盘加密。
  • 如果磁盘使用磁盘加密集,两个磁盘都属于同一个磁盘加密集。

本文需要 Azure CLI 2.0.25 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

使用 Azure CLI交换 OS 磁盘

设置 VM 资源组、替换 OS 磁盘资源组、VM 名称和完整替换 OS 磁盘资源 ID 变量。 将示例值替换为自己的值。

vmResourceGroup="myVMResourceGroup"
diskResourceGroup="myDiskResourceGroup"
vmName="myVM"
replacementDiskId="/subscriptions/<subscription ID>/resourceGroups/$diskResourceGroup/providers/Microsoft.Compute/disks/myDisk"

使用 az disk list 获取资源组中的磁盘列表。

az disk list \
   -g $diskResourceGroup \
   --query '[*].{diskId:id}' \
   --output table

(可选)交换磁盘之前,请使用 az vm stop 停止 VM。

az vm stop \
   -n $vmName \
   -g $vmResourceGroup

使用 az vm update 命令,并将新磁盘的完整资源 ID 用于 --os-disk 参数。

az vm update \
   -g $vmResourceGroup \
   -n $vmName \
   --os-disk $replacementDiskId

验证 VM 是否使用替换 OS 磁盘。 命令输出应与值 $replacementDiskId匹配 。

az vm show \
   -g $vmResourceGroup \
   -n $vmName \
   --query storageProfile.osDisk.managedDisk.id \
   --output tsv

如果在交换磁盘之前停止了 VM,请使用 az vm start 重启它。

az vm start \
   -n $vmName \
   -g $vmResourceGroup

后续步骤

要创建磁盘副本,请参阅拍摄磁盘快照