通过Azure CLI从存储容器中的VHD创建NVA虚拟机
先把概念讲明白,避免踩坑
- 托管磁盘:Azure托管的磁盘服务,无需自行维护存储账户,自带高可用性,支持快照、备份等功能,是当前创建VM的首选方案。
- 临时OS磁盘:与VM实例绑定的本地磁盘,性能优异但数据不持久,VM停止或删除时数据会丢失,仅适合存储临时缓存类数据。
- 你的VHD属于非托管磁盘:存储在你自己的存储账户页Blob中,需自行管理存储的冗余策略、访问权限等,Azure不推荐直接用它创建VM,需先转换为托管磁盘。
正确的Azure CLI操作流程
az vm create确实没有--source选项,正确的操作是先将你的VHD导入为托管磁盘,再用该磁盘创建VM:
第一步:将VHD转换为托管OS磁盘
执行以下命令,注意匹配对应参数:
az disk create \ --name NVA-OS-Disk \ --resource-group RG1 \ --sku Standard_LRS \ # 可根据性能需求替换为Premium_LRS --source https://sdwan-nva.blob.core.windows.net/os21/cpe-image-577a81b21.vhd \ --os-type Linux # 若为Windows系统,替换为Windows
第二步:用托管磁盘创建VM
修正你原有的命令,移除多余参数并关联托管磁盘:
$vmsize="Standard_F8s_v2" $tags="Engineer=ME" az vm create \ --name AZURE-NVA1 \ --resource-group RG1 \ --size $vmsize \ --tags $tags \ --zone 1 \ --admin-username cpeadmin \ --authentication-type ssh \ --generate-ssh-keys \ --accelerated-networking false \ --nic-delete-option Detach \ --nics SDWAN-CPE-1-IF1 SDWAN-CPE-1-IF2 SDWAN-CPE-1-IF3 \ --attach-os-disk NVA-OS-Disk \ --os-type Linux # 需与上述磁盘的系统类型保持一致
关键修正说明:
- 移除
--accept-term:该参数仅针对市场镜像,自定义VHD无需使用。 - 移除
--subnet:你已指定现成的NIC,NIC本身已绑定子网,重复指定会导致报错。 - NIC列表用空格分隔,不要加逗号。
额外提醒
- 确认你的VHD是通用化状态(已执行sysprep或
waagent -deprovision等命令清理系统专属信息),若为专用化VHD,创建VM时不要添加--admin-username这类认证参数,因为VHD内已包含账户信息。 - 存储账户与VM必须处于同一区域,否则无法导入磁盘。
内容的提问来源于stack exchange,提问作者Aravind S
相关产品推荐
相关产品推荐

