使用 Azure CLI 和托管磁盘创建 Azure Linux VM 的副本

本文说明如何使用 Azure CLI 创建运行 Linux 的 Azure 虚拟机 (VM) 副本。 若要大规模复制、创建、存储和共享 VM 映像,请参阅共享映像库

还可以上传 VHD 并从中创建 VM

先决条件

  • 安装 Azure CLI

  • 使用 az login 登录到一个 Azure 帐户。

  • 使用一个 Azure VM 作为副本的来源。

停止源 VM

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

az vm deallocate \
    --resource-group myResourceGroup \
	--name myVM

复制源 VM

若要复制 VM,请创建基础虚拟硬盘的副本。 此过程将一个专用虚拟硬盘 (VHD) 创建为托管磁盘,其中包含与源 VM 相同的配置和设置。

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

  1. 使用 az vm list 列出每个 VM 及其 OS 磁盘的名称。 以下示例列出了名为 myResourceGroup 的资源组中的所有 VM:

    az vm list -g myResourceGroup \
         --query '[].{Name:name,DiskName:storageProfile.osDisk.name}' \
    	 --output table
    

    输出类似于以下示例:

    Name    DiskName
    ------  --------
    myVM    myDisk
    
  2. 通过使用 az disk create 创建新的托管磁盘来复制磁盘。 以下示例基于名为 myDisk 的托管磁盘创建名为 myCopiedDisk 的磁盘:

    az disk create --resource-group myResourceGroup \
         --name myCopiedDisk --source myDisk
    
  3. 现在请使用 az disk list 验证资源组中的托管磁盘。 以下示例列出了名为 myResourceGroup 的资源组中的托管磁盘:

    az disk list --resource-group myResourceGroup --output table
    

设置虚拟网络

以下可选步骤可创建新的虚拟网络、子网、公共 IP 地址和虚拟网络接口卡 (NIC)。

在复制 VM 来完成故障排除或其他部署操作时,用户可能不希望使用现有虚拟网络中的 VM。

如果希望为复制的 VM 创建虚拟网络基础结构,请按后续几个步骤操作。 如果不希望创建虚拟网络,请跳到创建 VM

  1. 使用 az network vnet create 创建虚拟网络。 以下示例创建一个名为 myVnet 的虚拟网络和一个名为 mySubnet 的子网:

    az network vnet create --resource-group myResourceGroup \
        --location eastus --name myVnet \
    	--address-prefix 192.168.0.0/16 \
    	--subnet-name mySubnet \
    	--subnet-prefix 192.168.1.0/24
    
  2. 使用 az network public-ip create 创建公共 IP。 以下示例创建一个名为 myPublicIP 的公共 IP,其 DNS 名称为 mypublicdns。 (由于 DNS 名称必须唯一,因此请提供唯一名称。)

    az network public-ip create --resource-group myResourceGroup \
        --location eastus --name myPublicIP --dns-name mypublicdns \
    	--allocation-method static --idle-timeout 4
    
  3. 使用 az network nic create 创建 NIC。 以下示例创建一个附加到 mySubnet 子网且名为 myNic 的 NIC:

    az network nic create --resource-group myResourceGroup \
        --location eastus --name myNic \
    	--vnet-name myVnet --subnet mySubnet \
    	--public-ip-address myPublicIP
    

创建 VM

使用 az vm create 创建 VM。

指定复制的托管磁盘,将其用作 OS 磁盘(--attach-os-disk),如下所示:

az vm create --resource-group myResourceGroup \
    --name myCopiedVM --nics myNic \
	--size Standard_DS1_v2 --os-type Linux \
    --attach-os-disk myCopiedDisk

后续步骤

了解如何使用共享映像库管理 VM 映像。