この問題を解決するには、イベントテーブルをいっぱいにしているESXiがどれであるかを見つける必要があります。それが終わったら、イベント テーブルを切り詰める必要があります。
- VCDB のバックアップを取得します。Back up and restore vCenter Server Appliance/vCenter Server 6.x vPostgres database を参照してください。
- vCenter Server Applianceのスナップショットを取得します。
- コンソール経由または SSH セッションと root の認証情報を使用して vCenter Server Appliance に接続します。
- 次のコマンドを実行して、シェルを有効にします。
shell.set --enabled true - シェルに入るには、shell と入力して、Enter キーを押します。
- 次のコマンドを実行して、vpxd サービスを停止します。: service-control --stop vmware-vpxd
- 次のコマンドを実行して、vCenter Server Appliance のデータベースにログインします: /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres
- 次のクエリを実行して、イベントのソースを特定します。
- vCenter Server Appliance 6.0 :-
- SELECT COUNT(EVENT_ID) AS NUMEVENTS, EVENT_TYPE, USERNAME FROM VPX_EVENT GROUP BY EVENT_TYPE, USERNAME ORDER BY NUMEVENTS DESC LIMIT 10;
- vCenter Server Appliance 6.5/6.7/7.0:-
- SELECT COUNT(EVENT_ID) AS NUMEVENTS, EVENT_TYPE, USERNAME FROM VPXV_EVENT_ALL GROUP BY EVENT_TYPE, USERNAME ORDER BY NUMEVENTS DESC LIMIT 10;
- 以下のような出力が表示されます:
- vmfs.heartbeat.timedout |192.168.50.71 | 12191576
- vim.event.UserLogoutSessionEvent |192.168.50.71 | 1219121
- vim.event.VmAcquiredTicketEvent |192.168.50.71 | 155688
9. スペースを取り戻すには、shellから次のコマンドを実行します。
- su -c "/opt/vmware/vpostgres/current/bin/vacuumdb -d VCDB -e -v -f -U postgres > /tmp/vacuumdb.log"
- 注: rootユーザでログインしている場合は、"su -c "は必要ありません。
10. 上記の例では、IPが192.168.50.71のESXiホストから、
vmfs.heartbeat.timedout に関連する12191576イベントが生成されています。
11. 報告されている問題を解決するには、このホストをさらに調査する必要があります。
vCenter Server Applianceデータベースのイベントをクリーンアップするには、
VCSA 仮想マシンのスナップショットを取得した後、以下を実施します:
- vCenter Server Applianceに接続されたコンソールまたはSSHセッションから、イベントテーブルのデータを切り捨てるために以下のコマンドを実行します:
vCenter Server Appliance 6.0:
truncate table vpx_event cascade;
及び
truncate table vpx_event_arg cascade;
vCenter Server Appliance 6.5/6.7/7.0:
VCDB# SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND C.relkind <> 'i' AND nspname !~ '^pg_toast' ORDER BY pg_total_relation_size(C.oid) DESC LIMIT 20;
上記によりvCenter Serverデータベース内の最大テーブルの上位20個が表示されます。大きなテーブルは個別に切り捨てます。
例:
VCDB=# truncate table vc.vpx_event_1 cascade;
2. 以下のコマンドを実行して、vCenter Server Appliance データベースを終了します。
\q
3. 次のコマンドを実行して、vpxd サービスを開始します。: service-control --start vmware-vpxd
4. df -h コマンドを実行して、スペースが確保されていることを確認します。
以下のような出力が表示されます。