在virtualDisk对象中,我可以找到diskObjectId,它是持久且不可变的标识符(根据VMware文档:https://pubs.vmware.com/vsphere-55/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.device.VirtualDisk.html)。但是,如果我分离虚拟硬盘并将其再次附加到实例,那么该虚拟硬盘的diskObjectId仍然与分离前相同。例如,diskObjectId是" 2086-2001"甚至在分离硬盘之后,我创建了一个新硬盘,并为其分配了相同的diskObjectId(" 2086-2001")。
我想识别具有唯一标识符(uuid)的虚拟硬盘。我如何获得虚拟磁盘的uuid?
答案 0 :(得分:0)
以下是我如何获取硬盘详细信息
首先获取VM的所有设备
VirtualDevice[] device=vm.getConfig().getHardware().getDevice();
然后在获取的设备中查找HardDisk,查找其备份信息并从那里获取UUID
示例代码
VirtualDevice[] device=vm.getConfig().getHardware().getDevice();
for (VirtualDevice disk : device)
{
if(disk.getDeviceInfo().getLabel().contains("Hard disk"))
{
VirtualDiskFlatVer2BackingInfo backing = (VirtualDiskFlatVer2BackingInfo) disk.getBacking();
System.out.println(backing.uuid);
}
}
答案 1 :(得分:0)
VirtualDisk对象有2个标识符(vmware documentation):
但由于上述原因,我更喜欢使用'diskObjectId'。
我通过下面提到的方式获得唯一标识符:
VirtualMachineConfigInfo vmConfig = vm.getConfig();
VirtualDevice[] vds = vmConfig.getHardware().getDevice();
for(VirtualDevice vd : vds){
if(vd instanceof VirtualDisk){
System.out.println(vd.getDiskObjectId());
}
}