テンプレート VM の DVS ポート情報が残っているため、切断された ESXi ホストを vCenter インベントリから削除できない
search cancel

テンプレート VM の DVS ポート情報が残っているため、切断された ESXi ホストを vCenter インベントリから削除できない

book

Article ID: 425995

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

免責事項: これは英文の記事「Attempting to remove a disconnected ESXi host from the vCenter inventory fails due to DVS Port information leftovers for a template VM」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事を参照してください。

  • vSphere Client のインベントリ上で、ESXi ホストが「切断済み (disconnected)」ステータスのまま残っている。
  • 当該 ESXi ホストは物理的に廃止されており、再接続することができない。
  • 切断された ESXi ホストをインベントリから削除しようとすると、以下のエラーが発生して失敗する。
    ホスト ##### を同期できません。リモート ホストとの通信中にエラーが発生しました。

Environment

VMware vCenter Server 7.0.x

VMware vCenter Server 8.0.x

Cause

  • ESXi ホストが切断されると、その DVS 情報は削除されます。
    [ vpxd.log ]
    <time stamp> info vpxd[32695] [Originator@6876 sub=corehostCapsule opID=47e53a20] Host [[vim.HostSystem:host-####,#####]] left the DVS [## ## ## ## ## ## ## ##-## ## ## ## ## ## ## ##]
    <time stamp> info vpxd[32695] [Originator@6876 sub=corehostSync opID=47e53a20] Delete port [#####:########-####-####-####-##########01] for host [#####]
    <time stamp> info vpxd[32695] [Originator@6876 sub=corehostSync opID=47e53a20] Delete port [#####:########-####-####-####-##########02] for host [#####]

  • 切断された ESXi ホストに登録されたテンプレート仮想マシンには、DVS ポートに接続された NIC があります。
    vCenter は、ターゲット テンプレート仮想マシンに関する情報をデータベースに保存します。

    # select count(1) from vc.vpx_vm_virtual_device where device_text like '%########-####-####-####-##########01%';
     count 
    -------
         1
    (1 row)

  • その結果、ESXi ホストをインベントリから削除しようとすると、テンプレート VM によって保持されている DVS ポート情報が見つからず、エラーが発生します。
    [ vpxd.log ]
    <timestamp> info vpxd[06899] [Originator@6876 sub=Default opID=m6x0xap1-67050-auto-1fqj-h5:70016454-f1] [VpxLRO] -- ERROR task-11757 -- domain-##### -- vim.ManagedEntity.destroy: vim.fault.NotFound:
    --> Result:
    --> (vim.fault.NotFound) {
    -->    faultCause = (vmodl.MethodFault) null, 
    -->    faultMessage = (vmodl.LocalizableMessage) [
    -->       (vmodl.LocalizableMessage) {
    -->          key = "com.vmware.vim.vpxd.dvs.portNotFound.label", 
    -->          arg = (vmodl.KeyAnyValue) [
    -->             (vmodl.KeyAnyValue) {
    -->                key = "port", 
    -->                value = "########-####-####-####-##########01"
    -->             }
    -->          ], 
    -->          message = <unset>
    -->       }
    -->    ]
    -->    msg = ""
    --> }
    --> Args:
    --> 

Resolution

準備

以下の手順を実行して問題を解決する前に、vCenter Server Appliance のオフライン スナップショットを作成してください。

    • 緊急時に備えて、vCenter Server VM をシャットダウンし、リカバリ ポイントとしてスナップショットを作成します。
    • vCenter Server Applianceが拡張リンクモードのレプリケーショングループの一部である場合は、すべてのELMノードのオフラインスナップショットを作成してください。
    • スナップショットを撮った後、VCSA の電源を再度オンにします。

vCenter DBから関連情報を削除します

  1. vCenter が起動したら、SSH 経由でシェルに接続します。
  2. 次のコマンドでvpxdサービスを停止します。この手順を実行すると、vSphere Clientやその他のvCenter機能は使用できなくなりますのでご注意ください。実行中の仮想マシンには影響ありません。
    # service-control --stop vmware-vpxd
  3. 次のコマンドを使用して vCenter データベースに接続します:
    # /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres
  4. 削除されたレコードを確認してください。以下のコマンドを実行し、2つのレコードが存在することを確認してください(#######-####-####-####-############01 をご希望の DVS ポート ID に変更してください):
    # \x
    # select * from vc.vpx_vm_virtual_device where device_text like '%########-####-####-####-##########01%';
  5. 対象のレコードを削除するには、以下のコマンドを実行します(ID と device_info_label を手順 4 で確認したものに変更してください):
    # delete from vc.vpx_vm_virtual_device where ID = '####' and device_info_label = 'Network adapter #';
  6. レコードの削除を確認します。次のコマンドは 0 件の結果を返します:
    # select * from vc.vpx_vm_virtual_device where device_text like '%########-####-####-####-##########01%';
  7.   vCenter データベースから切断するには、次のコマンドを使用します:
    # \q
  8. vpxd サービスを開始します:
    # service-control --start vmware-vpxd

vSphere Client インベントリから当該 ESXi ホストをエラーが発生せずに削除できるようになります。