我正在尝试创建一个非托管存储磁盘并将其附加到Azure。创建磁盘时,我无法指定存储帐户。
vm.update().defineUnmanagedDataDisk(diskLabel)
.withNewVhd(lun)
.withLun(lun)
.withCaching(CachingTypes.NONE)
.attach()
.apply();
答案 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>)