2017-02-13 3 views
0

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")が割り当てられました。vSphere 5.5のJava APIでVirtualDiskのUUIDを取得するには?

仮想ハードディスクを一意の識別子(uuid)で識別します。仮想ディスクのUUIDを取得するにはどうすればよいですか?以下は

答えて

0

VirtualDiskオブジェクトには2 idエンティティ(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()); 
     } 
    } 
0

あなたのVM

 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); 
      } 
     } 
+0

virtualDeviceのUUIDを取得する前にはvirtualdiskクラスのインスタンスであるかどうかを確認するために、常により良いです。ラベルに基づいてすべてのvirtualDeviceからvirtualDiskをフィルタリングするのは正しい方法ではありません。 'VirtualMachineConfigInfo vmConfig = vm.getConfig(); \t \t VirtualDevice [] vds = vmConfig.getHardware()。getDevice(); (VirtualDevice VD:VDS)のため \t \t { \t \t \t場合(はvirtualdisk instanceofのVD){ \t \t \t \tのSystem.out.println(vd.getDiskObjectId())。 \t \t \t} \t \t} –

関連する問題