vCenter Server Appliance 6.x/7.xで /storage/seat のディスク使用率が 100% になる
search cancel

vCenter Server Appliance 6.x/7.xで /storage/seat のディスク使用率が 100% になる

book

Article ID: 321926

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

Symptoms:
免責事項:これは英文の記事「/storage/seat disk 100% full on vCenter Server Appliance 6.x/7.x (2119809) 」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
  • vCenter Server Appliance のサービスの開始に失敗しました。
  • vSphere Web Client を使用して VCSA に接続すると次のようなエラーが表示されます。
503 Service Unavailable
  • vCenter Server Appliance上で df -h を実行すると /storage/seat が 95% 以上 full になっています。
  • /var/log/vmware/vpxd/vpxd.logファイルには次のようなエントリが表示されます:
  • vCenter Server Appliance 6.7.xの/var/log/vmware/vpxd.logファイルには、次のようなエントリが表示されます。
  • vCenter Server 7.x の /var/log/vmware/vpxd.log ファイルには、次のようなエントリが表示されます。
: ​上記のログの抜粋は一例です。日時や環境変数はお使いの環境によって異なる場合があります。


Environment

VMware vCenter Server Appliance 6.5.x
VMware vCenter Server Appliance 6.7.x
VMware vCenter Server Appliance 6.0.x
VMware vCenter Server 7.0.x

Cause

この問題は、vCenter Server アプライアンスで収集された大量のイベントがデータベースを満たすことで発生します。デフォルトでは、領域が 95% 以上になっていると、データベースの破損を防止するために重要なサービスである vmware-vpxd サービスの実行が許可されません。

発生原因として最もよく見られるものは Excessive Hardware health alarms being triggered for "Sensor -1 type" on ESXi hosts running vSphere 6.7 U3 です。

Resolution

この問題を解決するには、イベントテーブルをいっぱいにしているESXiがどれであるかを見つける必要があります。それが終わったら、イベント テーブルを切り詰める必要があります。
 
イベントを生成している ESX ホストを見つけるには:
  1. VCDB のバックアップを取得します。Back up and restore vCenter Server Appliance/vCenter Server 6.x vPostgres database を参照してください。
  2. vCenter Server Applianceのスナップショットを取得します。
  3. コンソール経由または SSH セッションと root の認証情報を使用して vCenter Server Appliance に接続します。
  4. 次のコマンドを実行して、シェルを有効にします。
    shell.set --enabled true
  5. シェルに入るには、shell と入力して、Enter キーを押します。
  6. 次のコマンドを実行して、vpxd サービスを停止します。: service-control --stop vmware-vpxd
  7. 次のコマンドを実行して、vCenter Server Appliance のデータベースにログインします: /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres 
  8. 次のクエリを実行して、イベントのソースを特定します。
  • 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 仮想マシンのスナップショットを取得した後、以下を実施します:
  1. 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 コマンドを実行して、スペースが確保されていることを確認します。
以下のような出力が表示されます。
 


Additional Information