本文说明如何在 Azure 中上传自定义的虚拟硬盘 (VHD) 或复制现有 VHD,并从自定义磁盘创建 Linux 虚拟机 (VM)。 可以根据要求安装并配置 Linux 分发版,并使用该 VHD 快速创建新的 Azure 虚拟机。
如果想要从自定义磁盘创建多个 VM,则应该从 VM 或 VHD 创建映像。 有关详细信息,请参阅使用 CLI 创建 Azure VM 的自定义映像。
可以使用两个选项:
上传 VHD
复制现有的 Azure VM
快速命令
Note
在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行az cloud set -n AzureChinaCloud来改变云环境。如果想切回国际版 Azure,请再次运行az cloud set -n AzureCloud。
使用az vm create从自定义或专用的磁盘创建新 VM 时,请附加该磁盘 (--attach-os-disk),而不要指定自定义映像或 Marketplace 映像 (--image)。 以下示例使用从自定义 VHD 创建的、名为myManagedDisk的托管磁盘,创建名为myVM的 VM:
Azure CLI复制
azvmcreate--resource-groupmyResourceGroup--locationchinaeast--namemyVM \--os-typelinux--attach-os-diskmyManagedDisk
要求
若要完成以下步骤,需要:
已准备好在 Azure 中使用的 Linux 虚拟机。 本文的准备 VM部分介绍了如何查找有关安装 Azure Linux 代理 (waagent) 的特定于分发版的信息。要使 VM 在 Azure 中正常工作,以及要通过 SSH 连接到 VM,需要用到该代理。
用于将Azure 认可的 Linux 分发版(或参阅关于未认可分发版的信息)安装到采用 VHD 格式的虚拟磁盘的 VHD 文件。 可使用多种工具创建 VM 和 VHD:
安装并配置QEMU或KVM,并注意使用 VHD 作为映像格式。 如果需要,可以使用qemu-img convert转换映像。
也可以在Windows 10或Windows Server 2012/2012 R2上使用 Hyper-V。
Note
Azure 不支持更新的 VHDX 格式。 创建 VM 时,请将 VHD 指定为映像格式。 如果需要,可以使用qemu-img convert或Convert-VHDPowerShell cmdlet 将 VHDX 磁盘转换为 VHD。 此外,Azure 不支持上传动态 VHD,因此,上传之前,需要将此类磁盘转换为静态 VHD。 可以使用Azure VHD Utilities for GO等工具在上传到 Azure 的过程中转换动态磁盘。
确保已安装了最新的Azure CLI 2.0并已使用az login登录到 Azure 帐户。
在以下示例中,请将示例参数名称替换成自己的值。 示例参数名称包括myResourceGroup、mystorageaccount和mydisks。
准备 VM
Azure 支持各种 Linux 分发(请参阅认可的分发)。 以下文章指导用户准备 Azure 上支持的各种 Linux 分发版:
基于 CentOS 的分发版
Debian Linux
Oracle Linux
Red Hat Enterprise Linux
SLES 和 openSUSE
Ubuntu
其他 - 非认可分发版
另请参阅Linux 安装说明,获取更多有关如何为 Azure 准备 Linux 映像的一般提示。
Note
只有在使用某个认可的分发的时候也使用Azure 认可的分发中的 Linux中“支持的版本”下指定的配置详细信息时,Azure 平台 SLA才适用于运行 Linux 的 VM。
选项 1:上传 VHD
可以上传本地计算机上运行的或者从另一个云导出的自定义 VHD。 若要使用 VHD 创建新的 Azure VM,需要将 VHD 上传到存储帐户,并从该 VHD 创建托管磁盘。
创建资源组
在上传自定义磁盘和创建 VM 之前,首先需要使用az group create创建一个资源组。
以下示例在chinaeast位置创建名为myResourceGroup的资源组:Azure 托管磁盘概述
Azure CLI复制
azgroupcreate\--namemyResourceGroup \--locationchinaeast
创建存储帐户
可以使用az storage account create为自定义磁盘和 VM 创建存储帐户。
以下示例在前面创建的资源组中创建名为mystorageaccount的存储帐户:
Azure CLI复制
azstorageaccountcreate\--resource-groupmyResourceGroup \--locationchinaeast \--namemystorageaccount \--kindStorage \--skuStandard_LRS
列出存储帐户密钥
Azure 为每个存储帐户生成两个 512 位的访问密钥。 在向存储帐户进行身份验证以执行操作(例如执行写入操作)时,会使用这些访问密钥。 从此处了解有关管理对存储的访问的详细信息。 可以使用az storage account keys list查看访问密钥。
查看创建的存储帐户的访问密钥:
Azure CLI复制
azstorageaccountkeyslist\--resource-groupmyResourceGroup \--account-namemystorageaccount
输出类似于:
Azure CLI复制
info: Executing commandstorageaccountkeyslist+ Gettingstorageaccountkeysdata: Name Key Permissionsdata:-------------------------------------------------------------------------------------------------------data: key1 d4XAvZzlGAgWdvhlWfkZ9q4k9bYZkXkuPCJ15NTsQOeDeowCDAdB80r9zA/tUINApdSGQ94H9zkszYyxpe8erw== Fulldata: key2 Ww0T7g4UyYLaBnLYcxIOTVziGAAHvU+wpwuPvK4ZG0CDFwu/mAxS/YYvAQGHocq1w7/3HcalbnfxtFdqoXOw8g== Fullinfo:storageaccountkeyslistcommand OK
记下key1,因为在后续步骤中需要使用它来与存储帐户交互。
创建存储容器
在存储帐户中创建用于整理磁盘的容器的方式,与创建各种目录以便有条理地整理本地文件系统的方式相同。 一个存储帐户可以包含任意数目的容器。 可以使用az storage container create创建容器。
以下示例创建名为mydisks的容器:
Azure CLI复制
azstoragecontainercreate\--account-namemystorageaccount \--namemydisks
上传 VHD
现在,使用az storage blob upload上传自定义磁盘。 可以页 Blob 的形式上传和存储自定义磁盘。
指定访问密钥、在上一步中创建的容器,以及自定义磁盘在本地计算机上的路径:
Azure CLI复制
azstorageblobupload--account-namemystorageaccount \--account-keykey1 \--container-namemydisks \--typepage \--file/path/to/disk/mydisk.vhd \--namemyDisk.vhd
上传 VHD 可能需要一些时间。
创建托管磁盘
使用az disk create从 VHD 创建托管磁盘。 以下示例从已上传到命名存储帐户和容器的 VHD 创建名为myManagedDisk的托管磁盘:
Azure CLI复制
azdiskcreate\--resource-groupmyResourceGroup \--namemyManagedDisk \--sourcehttps://mystorageaccount.blob.core.chinacloudapi.cn/mydisks/myDisk.vhd
选项 2:复制现有 VM
也可以在 Azure 中创建自定义的 VM,并复制 OS 磁盘并将其附加到新 VM 以创建另一个副本。 这种做法在测试中不会有任何问题,但若要将现有 Azure VM 作为多个新 VM 的模型,则必须改为创建映像。 有关从现有 Azure VM 创建映像的详细信息,请参阅使用 CLI 创建 Azure VM 的自定义映像
创建快照
此示例在资源组myResourceGroup中创建名为myVM的 VM 的快照,并创建名为osDiskSnapshot的快照。
azure-cli复制
osDiskId=$(azvmshow-gmyResourceGroup-nmyVM--query"storageProfile.osDisk.managedDisk.id"-otsv)azsnapshotcreate\-gmyResourceGroup \--source"$osDiskId"\--nameosDiskSnapshot
创建托管磁盘
从快照创建新的托管磁盘。
获取快照的 ID。 在此示例中,快照名为osDiskSnapshot,位于myResourceGroup资源组中。
azure-cli复制
snapshotId=$(azsnapshotshow--nameosDiskSnapshot--resource-groupmyResourceGroup--query[id]-otsv)
创建托管磁盘。 在此示例中,我们会在标准存储中从快照创建大小为 128GB、名为myManagedDisk的托管磁盘。
azure-cli复制
az disk create \ --resource-group myResourceGroup \--name myManagedDisk \--sku Standard_LRS \--size-gb128\--source $snapshotId
创建 VM
现在,使用az vm create创建 VM,并将托管磁盘附加为 OS 磁盘 (--attach-os-disk)。 以下示例使用基于上传的 VHD 创建的托管磁盘创建名为myNewVM的 VM:
Azure CLI复制
azvmcreate\--resource-groupmyResourceGroup \--locationchinaeast \--namemyNewVM \--os-typelinux \--attach-os-diskmyManagedDisk
现在,应该可以使用凭据通过 SSH 从源 VM 连接到该 VM。
后续步骤
准备好并上传自定义虚拟磁盘之后,可以阅读有关使用 Resource Manager 和模板的详细信息。 可能还需要向新 VM添加数据磁盘。 如果需要访问在 VM 上运行的应用程序,请务必打开端口和终结点。
立即访问http://market.azure.cn