vCenter Server データベースから、親(実体)なし仮想マシンレコードを削除する方法
search cancel

vCenter Server データベースから、親(実体)なし仮想マシンレコードを削除する方法

book

Article ID: 429499

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

免責事項: これは英文の記事Removing an orphaned(stale) virtual machine record from the vCenter Server databaseの日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事を参照してください。

  • 仮想マシン(VM)が vCenter 上で親なしとして表示されているが、ESXi ホスト上には存在しない。.
  • 「インベントリから削除」オプションがグレーアウトしており、vCenter から削除できない。

Environment

VMware vCenter Server 8.0.x
VMware vCenter Server 7.0.x
VMware vCenter Server 6.7

Resolution

注意:以下の手順を実行する前に、vCenter Server Appliance (VCSA) が停止した状態で、最新のバックアップまたはオフラインスナップショットが作成されていることを確認してください。VCSA が 拡張リンクモード (ELM) 構成の一部である場合、問題発生時の切り戻しを成功させるために、すべての ELM ノードのオフラインスナップショットが必要です。

この問題に対処するには、2 つのオプションがあります。

オプション 1:vSphere Client でダミーの VM フォルダを使用する

  1. vSphere Client で、「仮想マシンおよびテンプレート」ビューに切り替えます。
  2. 新しい仮想マシンフォルダを作成します。
  3. 親なし仮想マシンをそのフォルダにドラッグ&ドロップします。
  4. そのフォルダを削除します。

オプション 2:vCenter vPostgres データベースから仮想マシン関連のエントリを手動で削除する

  1. vCenter Server Appliance に SSH で接続し、root アカウントでログインします。
  2. vCenter Server サービスを停止します。:
    service-control --stop vpxd
  3. vCenter vPostgres データベースに接続します。:
    /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres
  4. 仮想マシンの ID を特定します。vCenter GUI で対象のオブジェクトを選択し、URL に表示される vm-### を確認します。この ### を <id_from_url> として使用し、vpx_entity テーブルに存在することを確認します。:
    select * from vpx_entity where id = '<id_from_url>';
      または
    vCenter データベースにあるVM ID を以下のコマンドで特定します(<vm name> を実際の仮想マシン名に置き換えてください)。:
    select * from vpx_entity where name like '%<vm name>%'; 
  5. 出力例:
    VCDB=# select * from vpx_entity where id = '0000';
      id  |   name   | type_id | parent_id
    ------+----------+---------+-----------
     #### |  vm-name |       0 |      ####

     

    VCDB=# select * from vpx_entity where name like '%vcsa%';
    id   |   name      | type_id  | parent_id
    ------+----------+---------+-----------
    8 | vcsa           |        0 |     2
    9 | vcsa(orphaned) |        0 |     2
  6. 上記の出力から削除対象の VM の ID をメモし、以下のステートメントを使用してデータベースから削除します。
    重要: データベースの制約に違反しないよう、必ず以下の順序で実行してください(例では ID を 9 としています)。:
    delete from  VPX_COMPUTE_RESOURCE_DAS_VM where VM_ID=9;
    delete from  VPX_COMPUTE_RESOURCE_DRS_VM where VM_ID=9;
    delete from  VPX_COMPUTE_RESOURCE_ORC_VM where VM_ID=9;
    delete from  VPX_VM_SGXINFO where VM_ID=9;
    delete from  VPX_GUEST_DISK where VM_ID=9;
    delete from  VPX_VM_VIRTUAL_DEVICE where ID=9;
    delete from  VPX_VM_DS_SPACE where VM_ID=9;
    delete from  VPX_NON_ORM_VM_CONFIG_INFO where ID=9;
    delete from  VPX_NORM_VM_FLE_FILE_INFO where VM_ID=9;
    delete from  VPX_VDEVICE_BACKING_REL where VM_ID=9;
    delete from  VPX_VIRTUAL_DISK_IOFILTERS where VM_ID=9;
    delete from  VPX_VM_STATIC_OVERHEAD_MAP where VM_ID=9;
    delete from  VPX_VM_TEXT where VM_ID=9;
    delete from  VPX_VM where ID=9;
    delete from  VPX_ENTITY where ID=9;
    
    delete from VPX_DVPORT where connectee='vm-name';
  7. vCenter Server の vpxd サービスを起動し、データベースの変更を反映させます。
    service-control --start vpxd

Additional Information

Removing an orphaned(stale) virtual machine record from the vCenter Server database