データストアにアクセスできなくなったまたは破損した場合に、vCenter Server Appliance からコンテンツ ライブラリを手動で削除する方法
search cancel

データストアにアクセスできなくなったまたは破損した場合に、vCenter Server Appliance からコンテンツ ライブラリを手動で削除する方法

book

Article ID: 434901

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

免責事項:これは英文の記事「Manually remove a Content Library from vCenter Server Appliance when the datastore it resided on is no longer accessible or the Content Library has been corrupted(326242)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  • vSphere Web UI からコンテンツ ライブラリを削除できません。
  • タスクが失敗し、以下のようなエラーが発生します。
    A general system error occurred:
    Cannot delete content from library 19b1fa06-####-####-####-23379ec0e9c7, reason: (vim.fault.InaccessibleDatastore) {
    faultCause = null,
    faultMessage = null,
    datastore = ManagedObjectReference: type = Datastore, value = datastore-####, serverGuid = 3c723c9d-####-####-####-b24fb5a070c0,
    name = <DS_Name>,
    detail = notAccessibleWithPrivilege
    }.
  • コンテンツ ライブラリが保存されているデータストアがアンマウントされたり、ホストから削除されたりしてアクセスできなくなっています。
  • ディスクからのアイテムの誤削除や、破損したアイテムのアップロードによりコンテンツ ライブラリ自体が破損し、新しいアイテムのデプロイが失敗する状態になっています。
  • 一部のライブラリ アイテムの削除に失敗し、古いデータ(Stale)として残存しています。

    vCenter: /var/log/vmware/content-library/cls.log

    YYYY-MM-DDTHH:MM:SS409Z | ERROR    | cls-simple-activity-3     | DeleteLibraryActivity          | Library items deletion of library 19b1fa06-####-####-####-23379ec0e9c7 failed at library item 26a5342c-####-####-####-28c539b3f444.
    YYYY-MM-DDTHH:MM:SS752Z | ERROR    | cls-simple-activity-4     | DeleteLibraryActivity          | Library items deletion of library 19b1fa06-####-####-####-23379ec0e9c7 failed.

Environment

VMware vCenter Server

Cause

コンテンツ ライブラリの削除プロセスには、VMFS データストア上に存在するライブラリ ファイルのクリーンアップが含まれます。もしこのファイルのクリーンアップ処理が(データストアへのアクセス不可などの理由で)失敗すると、削除プロセス全体がエラーとなり、完全に削除できなくなります。
結果として、コンテンツ ライブラリはサイズや詳細情報を持ったまま UI 上に表示され続けますが、実際のデータはディスク上に存在しない(不整合な)状態になります。

Resolution

以下の手順を使用して、vCenter のデータベース (VCDB) からコンテンツ ライブラリを直接削除します。

 : この手順は元に戻せません。変更を行う前に、必ず vCenter Server の最新のバックアップまたはスナップショットを作成してください。
vCenter Server が拡張リンク モード (ELM) 構成のメンバーである場合、すべての ELM ノードでオフライン スナップショット(パワーオフ状態)を取得する必要があります。 ロールバックが必要になった際も、すべての ELM ノードを同時にリストア/ロールバックしなければなりません。
VMware vCenter in Enhanced Linked Mode pre-changes snapshot (online or offline) best practice(313886)参照

 

  1. vCenter Server に SSH 接続します。
  2. vpxd および content library サービスを停止します。
    service-control --stop vmware-vpxd
    service-control --stop vmware-content-library
  3. VCDB (データベース) に接続し、エントリを削除します。
    a. vPostgres データベースに接続します。
        /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres
    b. 削除対象のコンテンツ ライブラリの ID を見つけます(<cl_name> をライブラリ名に置き換えてください)。
        select id,name from cl_library where name = '<cl_name>';
    c. ライブラリ ID を使用して、ストレージ ID を見つけます。
        select * from cl_library_storage where library_id = '<ステップ 3b で取得した ID>';
    d. これら2つの ID を使用して、コンテンツ ライブラリのエントリを削除します。
        delete from cl_library_storage where library_id = '<ステップ 3b で取得した ID>';
        delete from cl_storage where id = '<ステップ 3c で取得したストレージ ID>';
        delete from cl_library where name = '<ステップ 3b で取得した name>';
  4. 以下のコマンドで psql コマンドラインから退出します。
        \q
  5.  ライブラリ本体の削除後、一部のアイテムが古くなって残ってしまった場合は、以下の手順で手動削除します。
    a. DB内に残っているアイテムを確認します。
        select * from cl_libraryitem;
      例:
    26a5342c-####-####-####-28c539b3f444 | YYYY-MM-DD HH:MM:SS.106 | YYYY-MM-DD HH:MM:SS.761 | YYYY-MM-DD HH:MM:SS.507 | 19b1fa06-####-####-####-23379ec0e9c7 | cl_libraryitem_name | ovf | https://vc_fqdn:443/cls/vcsp/lib/3c723c9d-####-####-####-b24fb5a070c0/654b5d3c-####-####-####-f24af0dda5d7/item.json | t

    34513c64-####-####-####-18fc014e4d21 | YYYY-MM-DD HH:MM:SS.508 | YYYY-MM-DD HH:MM:SS.604 | YYYY-MM-DD HH:MM:SS.88 | 19b1fa06-####-####-####-23379ec0e9c7 | cl_libraryitem_name | ovf | https://vc_fqdn:443/cls/vcsp/lib/3c723c9d-####-####-####-b24fb5a070c0/6c4d0d95-####-####-####-34e555137cfa/item.json | t

    b. 該当するアイテムのID(一番左の列のUUID)を指定して削除します。
        delete from cl_libraryitem where id = '<アイテムのUUID>';
      例:
    delete from cl_libraryitem where id = '26a5342c-####-####-####-28c539b3f444';
    delete from cl_libraryitem where id = '34513c64-####-####-####-18fc014e4d21';
  6. サービスを再度開始します。
  7. service-control --start vmware-vpxd
    service-control --start vmware-content-library