Azure:在为azure创建新的UN管理的磁盘时无法指定存储帐户。

时间:2017-09-01 00:49:50

标签: azure azure-storage azure-java-sdk

我正在尝试创建一个非托管存储磁盘并将其附加到Azure。创建磁盘时,我无法指定存储帐户。

vm.update().defineUnmanagedDataDisk(diskLabel)
                    .withNewVhd(lun)
                    .withLun(lun)
                    .withCaching(CachingTypes.NONE)
                    .attach()
                    .apply();

2 个答案:

答案 0 :(得分:0)

根本原因是 Azure不支持将非托管磁盘附加到使用托管磁盘的VM。

如果您的VM使用托管磁盘,则只能附加其他托管数据磁盘。此外,您只能将非托管数据磁盘附加到使用存储帐户中的非托管磁盘的VM。换句话说,Azure不支持同时将托管磁盘和非托管磁盘附加到VM。

答案 1 :(得分:0)

如此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>)