如何在 vSphere 5.5 java api 中获取 VirtualDisk 的 UUID?
How to get UUID for VirtualDisk in vSphere 5.5 java api?
在 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?
以下是我获取硬盘详细信息的方式
首先获取你VM的所有Devices
VirtualDevice[] device=vm.getConfig().getHardware().getDevice();
然后在获取的设备中找到硬盘,找到它们的支持信息并从那里获取 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);
}
}
VirtualDisk 对象有 2 个标识符(vmware documentation):
- diskObjectId:虚拟磁盘持久且不可变的标识符。虚拟磁盘有一个 UUID 字段,但可以通过 VirtualDiskManager API 进行设置。此标识符是不可设置的通用唯一标识符。 VirtualDisk 即使不与 VM 相关联也可以保持存在。
- uuid
但由于上述原因,我更喜欢使用'diskObjectId'。
我通过下面提到的方式获得唯一标识符:
VirtualMachineConfigInfo vmConfig = vm.getConfig();
VirtualDevice[] vds = vmConfig.getHardware().getDevice();
for(VirtualDevice vd : vds){
if(vd instanceof VirtualDisk){
System.out.println(vd.getDiskObjectId());
}
}
在 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?
以下是我获取硬盘详细信息的方式
首先获取你VM的所有Devices
VirtualDevice[] device=vm.getConfig().getHardware().getDevice();
然后在获取的设备中找到硬盘,找到它们的支持信息并从那里获取 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);
}
}
VirtualDisk 对象有 2 个标识符(vmware documentation):
- diskObjectId:虚拟磁盘持久且不可变的标识符。虚拟磁盘有一个 UUID 字段,但可以通过 VirtualDiskManager API 进行设置。此标识符是不可设置的通用唯一标识符。 VirtualDisk 即使不与 VM 相关联也可以保持存在。
- uuid
但由于上述原因,我更喜欢使用'diskObjectId'。
我通过下面提到的方式获得唯一标识符:
VirtualMachineConfigInfo vmConfig = vm.getConfig();
VirtualDevice[] vds = vmConfig.getHardware().getDevice();
for(VirtualDevice vd : vds){
if(vd instanceof VirtualDisk){
System.out.println(vd.getDiskObjectId());
}
}