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 托管磁盘

Azure之批量创建虚拟机(托管磁盘)

为啥不能配置 Azure 诊断以通过新的 Azure 门户使用 Azure 表存储?

Azure 托管实例无法创建或还原数据库