Azure:在为 azure 创建新的联合国托管磁盘时无法指定存储帐户。
Posted
技术标签:
【中文标题】Azure:在为 azure 创建新的联合国托管磁盘时无法指定存储帐户。【英文标题】:Azure: Cannot specify storage account while creating a new UN - managed disk for azure. 【发布时间】:2018-02-10 00:41:01 【问题描述】:我正在尝试创建非托管存储磁盘并将其附加到 Azure。创建磁盘时无法指定存储帐户。
vm.update().defineUnmanagedDataDisk(diskLabel)
.withNewVhd(lun)
.withLun(lun)
.withCaching(CachingTypes.NONE)
.attach()
.apply();
【问题讨论】:
【参考方案1】:正如official document中提到的:
在非托管磁盘中,您可以管理用于 存储与您的 VM 对应的虚拟硬盘 (VHD) 文件 磁盘。 VHD 文件作为页 blob 存储在 Azure 存储帐户中。
您可以按照tutorial将VHD文件上传到您的存储帐户,然后使用.storeAt(storageAccount.name(), "diskvhds", "datadisk1vhd.vhd")
指定存储帐户。请参考here的源代码。
VirtualMachine virtualMachine = computeManager.virtualMachines()
.define(VMNAME)
.withRegion(REGION)
.withExistingResourceGroup(RG_NAME)
.withNewPrimaryNetwork("10.0.0.0/28")
.withPrimaryPrivateIPAddressDynamic()
.withoutPrimaryPublicIPAddress()
.withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
.withRootUsername("Foo12")
.withRootPassword("abc!@#F0orL")
.withUnmanagedDisks()
.defineUnmanagedDataDisk("disk1")
.withNewVhd(100)
.withLun(2)
.storeAt(storageAccount.name(), "diskvhds", "datadisk1vhd.vhd")
.attach()
.defineUnmanagedDataDisk("disk2")
.withNewVhd(100)
.withLun(3)
.storeAt(storageAccount.name(), "diskvhds", "datadisk2vhd.vhd")
.attach()
.withSize(VirtualMachineSizeTypes.STANDARD_DS2_V2)
.withOSDiskCaching(CachingTypes.READ_WRITE)
.create();
请注意
.storeAt(storageAccount.name(), "diskvhds", "datadisk1vhd.vhd")
表示.storeAt(<your account name>, <container name>, <blob name>)
【讨论】:
【参考方案2】:根本原因是 Azure 不支持将非托管磁盘附加到使用托管磁盘的 VM。
如果您的 VM 使用托管磁盘,则您只能附加其他托管数据磁盘。此外,您只能将非托管数据磁盘附加到在存储帐户中使用非托管磁盘的 VM。换句话说,Azure 不支持同时将托管磁盘和非托管磁盘附加到 VM。
【讨论】:
以上是关于Azure:在为 azure 创建新的联合国托管磁盘时无法指定存储帐户。的主要内容,如果未能解决你的问题,请参考以下文章
Azure Active Directory 如何支持将 Okta 作为 IDP 进行联合?
在为 ARM 模板部署创建的 Azure DevOps Pipeline 中找不到 JSON 文件路径
如何使用 Powershell 中的快照创建 Azure 托管磁盘