vCenter サーバーから、「アクセス不可」のデータストアを削除できない。
search cancel

vCenter サーバーから、「アクセス不可」のデータストアを削除できない。

book

Article ID: 424393

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

免責事項: これは英文の記事 「Unable to remove inaccessible datastore from vCenter server」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

事象:

  • データストアが「アクセス不可」として vSphere UI 上で表示されている。
  •  vSphere UI 上で、そのデータストア上でのファイルが見られない。
  • 次のようなエラーが出る:「データストア「{name}」にアクセスできません。」または、「このデータストアには、アクセス可能なホストが接続されていません。」
  • データストアは通常状態のように表示されているが、ESXi や仮想マシンへの参照がありません。

Environment

VMware vCenter Server 6.5.x
VMware vCenter Server 6.7.x
VMware vCenter Server 7.x
VMware vCenter Server 8.x
VMware vCenter Server 9.0.x

Cause

この事象は以下のような原因から発生することがあります。

  • そのデータストアのあったストレージデバイスや LUN が、適切なクリーンアップ処理がない状態で、削除された、運用から外された、あるいは障害が発生した。
  • ホストが退避モードではない状態で vCLS 仮想マシンが強制的に削除された。
  • 「アクセス不可」のデータストアがもし適切に削除されず環境に残ってしまった場合、vCenter データベース(VCDB) にそのレコードが残り続けます。

Resolution

そのデータストアがマウントされていたすべてのクラスターで、クラスターレベルでストレージのリスキャンを実施してください。

もしクラスターレベルのリスキャンでも「アクセス不可」のデータストアが残る場合、以下のステップを実施してください。

注: VCDB に変更を加える前に、バックアップまたはスナップショットを確実にとってください。もし vCenter が拡張リンクモード (ELM) である場合、すべての ELM パートナーでオフラインスナップショットを事前に取得してください。VMware vCenter in Enhanced Linked Mode pre-changes snapshot (online or offline) best practice を参照してください。

VCDB から完全に削除するオブジェクトを特定し、削除する。

  • vpxd を停止する。
    # service-control --stop vpxd
  • vCenter データベースに接続する
    # /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres 
  • VCDB から「アクセス不可」のデータストアを探す。
    VCDB=# SELECT id FROM vpx_entity WHERE name = 'Datastore Name';
  • どのオブジェクトがデータストアと関連しているのかを特定するために、データストア ID を得る。
Example: 
  id
--------
169867
(1 row)           
  • そのデータストアに関連するオブジェクトがあるかを確認する。
VCDB=# SELECT * FROM vpx_ds_assignment WHERE ds_id=169867;
VCDB=# SELECT * FROM vpx_ds_assignment WHERE ds_id=169867; ds_id  | entity_id | accessible | mount_path | mount_id | mount_mode | mounted
 --------+-----------+------------+------------+----------+------------+---------
  169867 |    160136 |            |            |          |            |
  169867 |    160148 |            |            |          |            | 
  (2 rows)

上記の例では、インベントリに二つのオブジェクトがまだ該当データストアに関連づけされていることがわかる。このオブジェクトの名前を得る。

例:

VCDB=# SELECT * FROM vpx_entity WHERE id=16##36;
   id   |       name        | type_id | parent_id
--------+-------------------+---------+-----------
160136  | <VM_Name>         |       0 |    161290
(1 row)

VCDB=# SELECT * FROM vpx_entity WHERE id=16##48;
   id   |      name        | type_id | parent_id
--------+------------------+---------+-----------
160148  | <VM_Name>        |       0 |    161290
(1 row)
  • (該当データストアの)オブジェクトを残ってしまっているテーブルから一つずつ削除する。
VCDB=# DELETE FROM vpx_vm_ds_space WHERE ds_id=169867; 
VCDB=# DELETE FROM vpx_ds_assignment WHERE ds_id=169867;
VCDB=# DELETE FROM vpx_datastore WHERE id=169867;
VCDB=# DELETE FROM vpx_entity where id=169867;
  • vCenter の vpxd サービスを起動する。
    # service-control --start vpxd

Additional Information

またもし ESXi ホストから削除する前にデータストアを削除(破棄)してしまい、

  • vCenter 上「アクセス不可」として表示されている。
  • 存在はしているが、ホストクライアントからアクセスするとエラーが出る。
  • vCenter あるいはホストクライアントから削除ができない、"Not a known device" で失敗する。
  • ESXi の CLI で表示されない。

という状況では、ESXi ホストをリブートすると解消することがあります。

注: その際は、vCenter で再度データストアが表れないようにするため、ストレージ上で ESXi に対するデータストア(LUN)のアサインが外れていることを確認してください。