Search the VMware Knowledge Base (KB)
View by Article ID

ESXi/ESX での仮想マシン ファイル ロックの調査 (1033280)

  • 0 Ratings

Symptoms

免責事項:これは英文の記事 「Investigating virtual machine file locks on ESXi/ESX (10051)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  • 仮想マシンがパワーオンできない。
  • 仮想マシンをパワーオンすると失敗する。
  • 仮想マシンをパワーオンできない。
  • 既存の仮想マシン ディスク (VMDK) を、すでにパワーオンした仮想マシンに追加すると、次のエラーで失敗する。

    Failed to add disk scsi0:1. Failed to power on scsi0:1

  • 仮想マシンをパワーオンするときに、次のいずれかのエラーが表示される。

    • Unable to open Swap File
    • Unable to access a file since it is locked
    • Unable to access a file <filename> since it is locked
    • Unable to access Virtual machine configuration

  • /var/log/vmkernel ログ ファイルに、次のようなエントリが表示される。

    WARNING: World: VM xxxx: xxx: Failed to open swap file <path>: Lock was not free
    WARNING: World: VM xxxx: xxx: Failed to initialize swap file <path>


  • 仮想マシンへのコンソールを開くと、次のようなエラーが表示されることがある。

    Error connecting to <path><virtual machine>.vmx because the VMX is not started

  • 仮想マシンをパワーオンすると、パワーオン タスクがいつまでも 95% のままとなる。
  • テンプレートからデプロイした後で、仮想マシンをパワーオンできない。
  • 仮想マシンが、vCenter Server と ESXi/ESX ホスト コンソールで、競合する電源状態を報告する。
  • cat or vi などの)テキスト エディタを使用して .vmx ファイルを表示するか開くと、次のようなエラーが報告される。

    cat: can't open '[name of vm].vmx': Invalid argument

Resolution

ファイル ロックの目的


クリティカルな仮想マシンやファイル システムへの同時変更を防ぐために、ESXi/ESX ホストはこれらのファイルに対してロックをかけます。 特定の状況では、仮想マシンをパワーオフしても、これらのロックが解除されない場合があります。 ロックされている間はサーバがファイルにアクセスできず、仮想マシンはパワーオンすることができません。

一般的に、次の仮想マシン ファイルは実行中にロックされます。
  • VMNAME.vswp
  • DISKNAME-flat.vmdk
  • DISKNAME-ITERATION-delta.vmdk
  • VMNAME.vmx
  • VMNAME.vmxf
  • vmware.log

初期クイック テスト


クリティカル仮想マシンを実行させるには、次の手順を実行します。
  1. 仮想マシンを、最後に実行していたことが確認されているホストに移行し、パワーオンしてみます。
  2. 失敗したら、クラスタ内の別のホスト上で、仮想マシンのパワーオンを続行します。
    ファイルにロックをかけているホストをヒットすると、実行しているファイル ロックは有効であるため、仮想マシンはパワーオンするはずです。
  3. それでも仮想マシンをパワーオンできない場合は、次の手順に進み、さらに詳細を調べます。
ファイルのロックを特定して解除するには、使用するバージョンの ESX に関連する次の手順を実行します。

ESXi のトラブルシューティング手順

ロックされているファイルの特定

ロックされているファイルを特定するには、仮想マシンをパワーオンしてみます。 パワーオンのプロセス中、エラーが表示されるか、仮想マシンのログに書き込まれる場合があります。 エラーおよびログ エントリで、仮想マシンおよびファイルが特定されます。

  1. 該当する場合は、vSphere または VMware Infrastructure (VI) Client を開いて対応する ESXi ホスト、VirtualCenter Server、または vCenter Server ホスト名または IP アドレスに接続します。
  2. 該当する仮想マシンの場所を特定し、パワーオンしてみます。
  3. 仮想マシンの Remote Console ウィンドウを開きます。
  4. 仮想マシンをパワーオンできない場合は、該当するファイルの名前とともに、エラーが Remote Console の画面に表示されます。

    : エラーが表示されない場合は、次の手順に進み、仮想マシンの vmware.log ファイルを確認します。

    1. SSH クライアントを使用して、ESXi ホストに root としてログインします。
    2. 仮想マシンがサーバに登録されていることを確認し、仮想マシンのフル パスを入手して、次のコマンドを実行します。

      # vim-cmd vmsvc/getallvms

      ESXi ホストに登録されている仮想マシンのリストが出力として返されます。 各行には、データストアおよび仮想マシンの .vmx ファイル内の場所が含まれます。 次のような出力が表示されます。

      [datastore] VMDIR/VMNAME.vmx

      該当する仮想マシンがこのリストに表示されていることを確認します。 リストにない場合は、仮想マシンが ESXi ホストに登録されていません。 仮想マシンの登録先ホストは、通常、ロックをかけています。 続行する前に、適切なホストに接続していることを確認してください。

    3. 仮想マシンの、次のディレクトリに移動します。

      # cd /vmfs/volumes/datastore/VMDIR

    4. テキスト ビューアを使用して、vmware.log ファイルの内容を読み取ります。 ファイルの最後にある、該当ファイルを特定するエラー メッセージを探します。

ロックの特定と削除

仮想マシンは、ホスト間で移動することができます。そのため、仮想マシンが現在登録されているホストは、ファイル ロックを維持しているホストではない場合があります。 ロックは、ロックをかけている ESX/ESXi ホストによって解除される必要があります。 このホストは、プライマリ管理 vmkernel インターフェイスの MAC アドレスで特定されます。

: また、仮想マシンをバックアップしている間にファイルをロックしているバックアップ プログラムによってファイルのロックが発生することもあります。 バックアップに問題があると、ロックが正しく解除されない場合があります。 場合によっては、バックアップ アプリケーションを無効にしたり、バックアップ サーバを再起動したりして、バックアップのハングのクリアが必要となる場合があります。

このロックは、同じストレージに接続しているいずれかのホストの VMkernel が維持している場合があります。

: ESXi は、別のサービス コンソール オペレーティング システムを使用しません。 そのため、ロックのトラブルシューティングの数が VMkernel の数に削減されます。 例えば、lsof ユーティリティを使用するなどのコンソール OS トラブルシューティング方式は、ESXi ホストに適用されません。

VMkernel がファイルをロックしているサーバを特定するところから始めます。 サーバを特定するには、次の手順を実行します。
  1. 次のコマンドを実行し(NFS ボリューム上を除く)、ロックをかけているサーバの MAC アドレスを報告します。

    # vmkfstools -D /vmfs/volumes/UUID/VMDIR/LOCKEDFILE.xxx

    : このコマンドを、一般的にロックされている仮想マシン ファイルすべてに対して実行し(「Solution」セクションのリストに記載されているように)、ロックされているファイルがすべて特定されたことを確認します。

  2. ESXi 4.1 よりも前のサーバの場合、このコマンドは、上記のコマンドの出力をシステムのログに書き込みます。 ESXi 4.1 からは、出力が画面にも表示されます。 この出力に含まれるのは、.vmdk ファイルをロックしているホストの MAC アドレスです。 この情報の場所を特定するには、/var/log/messages を確認します。

    次のような行を探します。

    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)Lock [type 10c00001 offset 13058048 v 20, hb offset 3499520
    Hostname vmkernel: gen 532, mode 1, owner xxxxxxxx-xxxxxxxx-xxxx-xxxxxxxxxxxx mtime xxxxxxxxxx]
    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)Addr <4, 136, 2>, gen 19, links 1, type reg, flags 0x0, uid 0, gid 0, mode 600
    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)len 297795584, nb 142 tbz 0, zla 1, bs 2097152
    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)FS3: 132: <END supp167-w2k3-VC-a3112729.vswp>

    2 行目(太字)には、owner という語の後に MAC アドレスが表示されます。 この例で、問題を引き起こしている ESXi ホストの管理 vmkernel インターフェイスの MAC アドレスは、xx:xx:xx:xx:xx:xx です。 サーバにログインしたら、ロックを維持しているプロセスを分析できます。

    ESXi 4.0 U3 および 4.1 U1 以降のバージョンでは、読み取り専用およびマルチライタ ロックの所有者を特定できる新しいフィールドがあります。

    出力は、次のようになります。

    [root@test-esx1 testvm]# vmkfstools -D test-000008-delta.vmdk
    Lock [type 10c00001 offset 45842432 v 33232, hb offset 4116480
    gen 2397, mode 2, owner 00000000-00000000-0000- 000000000000mtime 5436998] <-------------- MAC address of lock owner
    RO Owner[0] HB offset 3293184 xxxxxxxx-xxxxxxxx-xxxx-xxxxxxxxxxxx <------------------------------ MAC address of read-only lock owner
    Addr <4, 80, 160>, gen 33179, links 1, type reg, flags 0, uid 0, gid 0, mode 100600
    len 738242560, nb 353 tbz 0, cow 0, zla 3, bs 2097152

    • コマンド「 vmkfstools -D test-000008-delta.vmdk 」は、一番上のフィールドに有効な MAC アドレスを返しません(すべて ゼロを返します)。 その下のフィールドと、その下の RO Owner 行を確認し、どの MAC アドレスがそのファイルに対する読み取り専用/マルチライタ ロックを所有しているかを確認します。 前述の例で、問題を引き起こしている MAC アドレスは次のとおりです: xx:xx:xx:xx:xx:xx
    • 場合によっては、サービス コンソール ベースのロック、NFS ロック、または VMFS ファイル システムを使用または読み取りできる別のシステムや製品によって生成されたロックである場合があります。 ファイルは VMkernel の子またはカルテル ワールドによってロックされており、プロセス/ワールドを実行している問題を引き起こしているホストは再起動してそれをクリアする必要があります。
    • ファイルをロックしているホストまたはバックアップ ツール(MAC を所有するマシン)を特定したら、それをパワーオフするか、それを処理するサービスを停止し、次に仮想マシンを実行しているホスト上の管理エージェントを再起動して、ロックを解除します。

  3. 現在ログインしているホストに MAC アドレスが対応しているかどうかを特定するには、「ESX サービス コンソールの MAC アドレスを特定する (2101612)」を参照してください。 対応していない場合は、この仮想マシンのファイルへのアクセス権を持つ各ホストへのコンソール接続または SSH 接続を確立する必要があります。
  4. ロックをかけているホストを特定したら、そのホストから仮想マシンを登録解除します。

    : vCenter Server のホスト インベントリに仮想マシンが見つからない場合は、ESXi ホストへの直接の vSphere または VI Client 接続を開きます。 インベントリで、不明な仮想マシンというラベルのエントリがあるかどうかを確認します。 見つかった場合は、不明な仮想マシンをインベントリから削除します。

  5. インベントリから正常に削除したら、ロックをかけているホストに仮想マシンを登録してから、パワーオンしてみます。 DRS を [手動] に設定して、仮想マシンが正しいホスト上でパワーアップしていることの確認が必要となる場合があります。

    まだ仮想マシンがパワーオンしていない場合は、問題を引き起こしているホストにログインするときに、次の手順を実行します。

    : ファイルへの VMkernel ロックをすでに特定している場合は、残りのセクションをスキップして、この記事のトラブルシューティングのさらなる手順のセクションに進んでください。

  6. 仮想マシンにまだワールド ID が割り当てられたままとなっているかどうかを確認します。

    ESXi 4.x の場合は、すべての ESXi ホストで次のコマンドを実行します。

    # cd /tmp
    # vm-support -x


    次のような出力が表示されます。

    Available worlds to debug:
    wid=world_id name_of_VM_with_locked_file


    ESXi 4.x ホストでまだ仮想マシンを実行している場合は、仮想マシンを強制終了します。 これにより、ファイルのロックが解除されます。 仮想マシンを強制終了するには、次のコマンドを実行します。

    # vm-support -X world_id

    ここで、world_id は、ロックされたファイルのある仮想マシンのワールド ID です。

    : このコマンドを完了するには、5~10 分かかります。 [仮想マシンのスクリーンショットを含めることができますか] に対して [いいえ] と回答し、残りすべての質問に対して [はい] と回答します。

    プロセスを停止したら、仮想マシンをパワーオンするか、ファイル/リソースにアクセスすることができます。

    ESXi 5 以降の場合は、esxcli コマンドライン ユーティリティをローカルまたはリモートで使用することにより、ホスト上で現在実行されている仮想マシンのリストを表示できます。

    次のコマンドを使用して、ワールド ID、カルテル ID、表示名、および .vmx 構成ファイルへのパスで識別される実行中の仮想マシンすべてを含むリストを取得します。

    # esxcli vm process list

    次のような出力が表示されます。

    VirtualMachineName
    World ID: 1268395
    Process ID: 0
    VMX Cartel ID: 1264298
    UUID: ab cd ef ...
    Display Name: VirtualMachineName
    Config File: /path/VirtualMachineName.vmx


    2 つのワールドが一覧表示されます。 最初のワールド番号(この例の 1268395)は、vCPU 0 の仮想マシン モニタ (VMM) です。 2 つ目のワールド番号(この例の 1264298)は、仮想マシン カルテル ID です。

    ESXi 5.x ホストでまだ仮想マシンを実行している場合は、仮想マシンを強制終了します。 これにより、ファイルのロックが解除されます。 仮想マシンを強制終了するには、次のコマンドを実行します。

    # esxcli vm process kill --type=soft --world-id=1268395

    追加情報については、「仮想マシンのワールド番号を仮想マシン名にマッピングする (2101986)」を参照してください。

  7. ESXi 4.1/5.x/6.x で、仮想マシンのロックされているファイルの所有者を見つけるには、次のコマンドを実行します。

    # vmkvsitools lsof | grep Virtual_Machine_Name

    出力は次のようになります。

    11773 vmx 12 46 /vmfs/volumes/Datastore_Name/VirtualMachineName/ VirtualMachineName-flat.vmdk

    それから次のコマンドを実行して、仮想マシンのプロセスの PID を入手します。

    ps | grep Virtual_Machine_name

    プロセスは、次のコマンドで強制終了できます。

    kill -9 PID

    (ハングして応答しなくなっている)実行中の仮想マシンを強制終了した後でコア ダンプを生成するには、コマンド kill -6 PID または kill -11 PID を使用します。

    : ESXi 4.1、ESXi 5.x、および ESXi 6.x では、esxtopk コマンドを使用して、実行中の仮想マシン プロセスに信号を送信し、そのプロセスを強制終了することができます。 ESXi コンソールで Tech Support モードにして、root としてログインします。 詳細については、「緊急サポート用の Tech Support モード (2092655)」を参照してください。

    1. esxtop コマンドを使用して、esxtop ユーティリティを実行します。
    2. c キーを押して CPU リソース使用率画面に切り替えます。
    3. Shift + f キーを押してフィールドのリストを表示します。
    4. c キーを押してリーダー ワールド ID の列を追加します。
    5. 名前とリーダー ワールド ID (LWID) でターゲット仮想マシンを特定します。
    6. k キーを押します。
    7. World to kill プロンプトで、手順 6 のリーダー ワールド ID を入力し、Enter キーを押します。
    8. 30 秒待機し、プロセスがリストに表示されなくなったことを確認します。

実行中の仮想マシンによってファイルが使用されているかどうかの特定

実行中の仮想マシンがファイルにアクセスしている場合は、ロックを奪うまたは削除することができません。 ロックをかけているホストが仮想マシンを実行し、応答しなくなるか、実行中の別の仮想マシンがパワーオンしようとする前に誤ってその構成に追加されたディスクを持つ可能性があります。

仮想マシン プロセスが実行中かどうかを特定するには、次の手順を実行します。

  1. 仮想マシンがホストに登録され、次のコマンドを root ユーザーとして実行しているかどうかを特定します。

    # vim-cmd vmsvc/getallvms


    : 出力には、登録されている各仮想マシンの vmid が一覧表示されます。 ESXi サーバでこの残りのプロセスに必要となるため、この情報を記録します。

  2. ホストでの仮想マシンの現在の状況を評価し、次のコマンドを実行します。

    # vim-cmd vmsvc/power.getstate vmid


  3. 仮想マシン プロセスを停止するには、「ESX ホスト上の反応しない仮想マシンをパワーオフする (1038290)」を参照してください。

ESX のトラブルシューティング手順

ロックされているファイルの特定

ロックされているファイルを特定するには、仮想マシンをパワーオンしてみます。 パワーオンのプロセス中、エラーが表示されるか、仮想マシンのログに書き込まれる場合があります。 エラーおよびログ エントリで、仮想マシンおよびファイルが特定されます。

  1. 該当する場合は、vSphere または VMware Infrastructure (VI) Client を開いて対応する ESX ホスト、VirtualCenter Server、または vCenter Server ホスト名または IP アドレスに接続します。
  2. 該当する仮想マシンの場所を特定し、パワーオンしてみます。
  3. 仮想マシンの Remote Console ウィンドウを開きます。
  4. 仮想マシンをパワーオンできない場合は、該当するファイルの名前とともに、エラーが Remote Console の画面に表示されます。

    : エラーが表示されない場合は、次の手順に進み、仮想マシンの vmware.log ファイルを確認します。

    1. SSH クライアントを使用する ESX ホストに root としてログインします。
    2. 仮想マシンがサーバに登録されていることを確認し、仮想マシンのフル パスを入手して、次のコマンドを実行します。

      # vmware-cmd -l


    3. ESX ホストに登録されている仮想マシンのリストが出力として返されます。 各行には、仮想マシンの .vmx ファイルのフル パスが含まれます。

      次のような出力が表示されます。

      /vmfs/volumes/UUID/VMDIR/VMNAME.vmx

      : この残りのプロセスに必要となるため、この情報を記録します。 これは、この記事の残りの部分で参照される path.vmx です。 また、これは大文字と小文字が区別されます。

    4. 仮想マシンの、次のディレクトリに移動します。

      # cd /vmfs/volumes/datastore/VMDIR

    5. テキスト ビューアを使用して、vmware.log ファイルの内容を読み取ります。 ファイルの最後にある、該当ファイルを特定するエラー メッセージを探します。

ロックの特定と削除

仮想マシンは、ホスト間で移動することができます。そのため、仮想マシンが現在登録されているホストは、ファイル ロックを維持しているホストではない場合があります。 ロックは、ロックをかけている ESX ホストによって解除される必要があります。 このホストは、プライマリ サービス コンソール インターフェイスの MAC アドレスで特定されます。

: また、仮想マシンをバックアップしている間にファイルをロックしているバックアップ プログラムによってファイルのロックが発生することもあります。 バックアップに問題があると、ロックが正しく解除されない場合があります。 場合によっては、バックアップ アプリケーションを無効にしたり、バックアップ サーバを再起動したりして、バックアップのハングのクリアが必要となる場合があります。

このロックは、同じストレージに接続しているいずれかのホストのサービス コンソールが維持している場合があります。

VMkernel がファイルをロックしているサーバを特定するところから始めます。 サーバを特定するには、次の手順を実行します。
  1. 次のコマンドを実行し(NFS ボリューム上を除く)、ロックをかけているサーバの MAC アドレスを報告します。

    # vmkfstools -D /vmfs/volumes/UUID/VMDIR/LOCKEDFILE.xxx


    • ESX 3.5 でロックをかけているサーバを特定するには、 vmkernel log ファイルを確認します。
    • このコマンドを、一般的にロックされている仮想マシン ファイルすべてに対して実行し(「Solution」セクションのリストに記載されているように)、ロックされているファイルがすべて特定されたことを確認します。

  2. ESX 4.1 よりも前のサーバの場合、このコマンドは、上記のコマンドの出力をシステムのログに書き込みます。 ESX 4.1 からは、出力が画面にも表示されます。 この出力に含まれるのは、.vmdk ファイルをロックしているホストの MAC アドレスです。 この情報の場所を特定するには、/var/log/vmkernel を確認します。

    次のような行を探します。

    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)Lock [type 10c00001 offset 13058048 v 20, hb offset 3499520
    Hostname vmkernel: gen 532, mode 1, owner xxxxxxxx-xxxxxxxx-xxxx-xxxxxxxxxxxx mtime xxxxxxxxxx]
    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)Addr <4, 136, 2>, gen 19, links 1, type reg, flags 0x0, uid 0, gid 0, mode 600
    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)len 297795584, nb 142 tbz 0, zla 1, bs 2097152
    Hostname vmkernel: 17:00:38:46.977 cpu1:1033)FS3: 132: <END supp167-w2k3-VC-a3112729.vswp>


    2 行目(太字)には、owner という語の後に MAC アドレスが表示されます。 この例で、サービス コンソールまたは問題を引き起こしている ESX ホストの vswif0 インターフェイスの MAC アドレスは、xx:xx:xx:xx:xx:xx です。 サーバにログインしたら、ロックを維持しているプロセスを分析できます。

    ESX 4.0 U3、4.1 U1 以降のバージョンでは、読み取り専用およびマルチライタ ロックの所有者を特定できる新しいフィールドがあります。

    出力は、次のようになります。

    [root@test-esx1 testvm]# vmkfstools -D test-000008-delta.vmdk
    Lock [type 10c00001 offset 45842432 v 33232, hb offset 4116480
    gen 2397, mode 2, owner 00000000-00000000-0000- 000000000000mtime 5436998] <-------------- MAC address of lock owner
    RO Owner[0] HB offset 3293184 xxxxxxxx-xxxxxxxx-xxxx-xxxxxxxxxxxx<------------------------------ MAC address of read-only lock owner
    Addr <4, 80, 160>, gen 33179, links 1, type reg, flags 0, uid 0, gid 0, mode 100600
    len 738242560, nb 353 tbz 0, cow 0, zla 3, bs 2097152

    • コマンド「 vmkfstools -D test-000008-delta.vmdk 」は、一番上のフィールドに有効な MAC アドレスを返しません(すべて ゼロを返します)。 その下のフィールドと、その下の RO Owner 行を確認し、どの MAC アドレスがそのファイルに対する読み取り専用/マルチライタ ロックを所有しているかを確認します。 前述の例で、問題を引き起こしている MAC アドレスは次のとおりです: xx:xx:xx:xx:xx:xx
    • 場合によっては、サービス コンソール ベースのロック、NFS ロック、または VMFS ファイル システムを使用または読み取りできる別のシステムや製品によって生成されたロックである場合があります。 ファイルは VMkernel の子またはカルテル ワールドによってロックされており、プロセス/ワールドを実行している問題を引き起こしているホストは再起動してそれをクリアする必要があります。
    • ファイルをロックしているホストまたはバックアップ ツール(MAC を所有するマシン)を特定したら、それをパワーオフするか、それを担当するサービスを停止し、次に仮想マシンを実行しているホスト上の管理エージェントを再起動して、ロックを解除します。

  3. 現在ログインしているホストに MAC アドレスが対応しているかどうかを特定するには、「ESX サービス コンソールの MAC アドレスを特定する (2101612)」を参照してください。 対応していない場合は、この仮想マシンのファイルへのアクセス権を持つ各ホストへのコンソール接続または SSH 接続を確立する必要があります。
  4. ロックをかけているホストを特定したら、そのホストから仮想マシンを登録解除します。

    : vCenter Server のホスト インベントリに仮想マシンが見つからない場合は、ESX ホストへの直接の vSphere または VI Client 接続を開きます。 インベントリで、不明な仮想マシンというラベルのエントリがあるかどうかを確認します。 見つかった場合は、不明な仮想マシンをインベントリから削除します。

  5. インベントリから正常に削除したら、ロックをかけているホストに仮想マシンを登録してから、パワーオンを試行します。 DRS を [手動] に設定して、仮想マシンが正しいホスト上でパワーアップしていることの確認が必要となる場合があります。 まだ仮想マシンがパワーオンしていない場合は、問題を引き起こしているホストにログインするときに、次の手順を実行します。
  6. 仮想マシンにまだワールド ID が割り当てられたままとなっているかどうかを確認します。

    仮想マシンにまだワールド ID が割り当てられたままとなっているかどうかを確認するには、次の手順を実行します。

    ESX 4.x の場合は、すべての ESX ホストで次のコマンドを実行します。

    # cd /tmp
    # vm-support -x


    出力は次のようになります。

    Available worlds to debug:
    wid=world_id name_of_VM_with_locked_file


    ESX ホストでまだ仮想マシンを実行している場合は、仮想マシンを強制終了します。 これにより、ファイルのロックが解除されます。 仮想マシンを強制終了するには、次のコマンドを実行します。

    # vm-support -X world_id

    ここで、world_id は、ロックされたファイルのある仮想マシンのワールド ID です。

    : このコマンドを完了するには、5~10 分かかります。 [仮想マシンのスクリーンショットを含めることができますか] に対して [いいえ] と回答し、残りすべての質問に対して [はい] と回答します。

    プロセスを停止したら、仮想マシンをパワーオンするか、ファイル/リソースにアクセスすることができます。

実行中の仮想マシンによってファイルが使用されているかどうかの特定

実行中の仮想マシンがファイルにアクセスしている場合は、ロックを奪うまたは削除することができません。 ロックをかけているホストが仮想マシンを実行し、応答しなくなるか、実行中の別の仮想マシンがパワーオンしようとする前に誤ってその構成に追加されたディスクを持つ可能性があります。

仮想マシン プロセスが実行中かどうかを特定するには、次の手順を実行します。
  1. 次のコマンドを root ユーザーとして実行し、仮想マシンがホストに登録されているかどうかを特定します。

    # vmware-cmd -l

    : 仮想マシンが複数の ESX ホストに登録されている場合は、「仮想マシンが、複数の ESX Server 上で実行されているか、登録されているように見える (2113279)」を参照してください。

  2. ホストでの仮想マシンの現在の状況を評価し、次のコマンドを実行します。

    # vmware-cmd path.vmx getstate


  3. 仮想マシン プロセスを停止するには、「ESX ホスト上の反応しない仮想マシンをパワーオフする (1038290)」を参照してください。

前述の ESX 固有の手順でロックの所有者が特定された場合は、次の「トラブルシューティング手順」に進みます。

トラブルシューティングのさらなる手順

次の手順は、ESX と ESXi の両方に適用されます。

仮想ディスクがバックアップ アプライアンスによってロックされていないことを確認する

仮想ディスクは、バックアップ アプライアンスによってロックされている場合があります。 まず、バックアップが進行中ではないことを確認します。 VMware vSphere Client または vSphere Web Client を使用して、バックアップ アプライアンスの [設定の編集] で仮想ディスクをアンマウントします。 詳細については、「ロックされているファイルが原因で仮想マシンのスナップショットを削除できない (2092911)」を参照してください。

タッチ ユーティリティを使用してファイルをロックできるかどうかを特定する

touch ユーティリティは、指定したファイルやディレクトリのアクセスおよび変更のタイム スタンプを更新するように設計されています。 そのように、このコマンドは、ロックされているファイルに対するプロシージャが失敗すると想定される、VMFS ファイルシステムにおけるファイルおよびディレクトリのロック メカニズムのテストに使用することができます。 リソースの変更が最小限となるため、touch を使用するのが望ましい方式です。

ファイルまたはディレクトリのロック機能をテストするには、次のコマンドを実行します。

# touch filename

touch * コマンドを実行すると、現在のディレクトリにあるすべてのファイルに対して操作が実行されます。

touch * コマンドを実行すると、次のような結果になる可能性があります。
  • touch * コマンドが成功すると、日付/タイム スタンプが正常に変更され、ファイルがロックでき、ロックされ(てロック解除され)たことが確認されます。 この時点で、仮想マシンのパワーオン操作を再試行し、成功するかどうかを確認します。
  • touch * コマンドが失敗して device or resource busy メッセージが表示された場合は、プロセスがファイルまたはディレクトリのロックを維持していることを示します。 これは、ファイルへのアクセス権を持ついずれかの ESXi/ESX ホスト上である可能性があります。 このメッセージが報告された場合は、次のセクションに進みます。
  • 別のメッセージが報告された場合は、VMFS でロックしているファイルまたはディレクトリに関連するメタデータが有効でないか破損していることを示す場合があります。 その場合は、ESXi/ESX ホストから診断情報を収集し、サポート リクエストを提出します。 詳細については、「VMware 製品の診断情報の収集 (2038891)」および「How to Submit a Support Request」を参照してください。

.lck ファイルの削除(NFS のみ)

NFS ストレージ経由で仮想マシン上のファイルがロックされることがあります。 これは、ファイル名の最後にある .lck-#### で示されるファイル(ここで #### はロックされているファイルの GETATTR 要求から返される fileid フィールドの値)で特定することができます。 これは NFS ファイル ロックであり、(5.x よりも前の ESX/ESXi では)隠しファイルであるため、 ls -la コマンドを使用した場合にのみ一覧表示されます。 詳細については、「Powering on a virtual machine on NFS or trying to remove an NFS Datastore fails with errors "Unable to access a file since it is locked" or "Resource is in use" (1012685)」を参照してください。
 
NFS ファイルのロックについては、『VMware NFS Best Practices Whitepaper』を参照してください。

警告: これらは、仮想マシンが実行していない場合にのみ正常に削除することができます。

: VMFS ボリュームに .lck ファイルはありません。 VMFS ボリュームのロック メカニズムは、ボリューム上の VMFS メタデータ内で処理されます。

.vmdk ファイルが別の仮想マシンで使用されているかどうかの特定

.vmdk ファイルのロックは、仮想マシンの起動を妨げる可能性があります。 ただし、仮想マシン ディスク ファイルはどの仮想マシンとでも使用できるように構成できるため、現在実行中の別の仮想マシンによってファイルがロックされる場合があります。

仮想マシンのディスク ファイルが複数の仮想マシンで使用するように構成されているかどうかを特定するには、次のコマンドを実行します。

# egrep -i DISKNAME.vmdk /vmfs/volumes/*/*/*.vmx


  • このコマンドは、ESX/ESXi ホストが認識できる仮想マシンのすべての .vmx 構成ファイルで、指定されたディスク名の場所を特定しようとします。 実行中でこの ESX ホストに登録されていない仮想マシンごとに、Device or resource busy メッセージが表示されます。 このコマンドは、インフラストラクチャ内の各 ESX/ESXi ホスト上で、具体的には仮想マシンのファイルを含むストレージにアクセスするホスト上で実行する必要があります。
  • 追加の仮想マシンがこのディスクを使用するように構成されている場合は、それらが現在実行中かどうかを特定します。 ディスク ファイルを使用する別の仮想マシンをパワーオフすると、ロックが解除されます。 どの仮想マシンがファイルの所有権を持つべきかを特定してから、仮想マシンを再構成して、このエラーの再発を防ぐ必要があります。
  • その操作の一部として、多くの仮想マシン バックアップ ソリューションが仮想マシンの .vmdk ファイルを一時的に仮想マシン自体に添付します。 そのような場合、バックアップに失敗したりホストがシャットダウンしたら、バックアップ仮想マシンに引き続き別の仮想マシンの .vmdk ファイルが添付されている場合があります。 そのような場合、通常は別の仮想マシンがまずパワーオンされ、次にバックアップ仮想マシンがパワーオンされたときにロック ファイルの状態になります。 バックアップ ソリューションの仮想マシンの [設定の編集] を使用して確認し、別の仮想マシンに属するディスクが添付されているかどうかを確認します。 そうである場合は、バックアップ仮想マシンをパワーダウンし、適切なディスクを選択し、[削除] を選択して、ディスクを仮想マシンから削除します。

    警告: ファイルをディスクから削除しないでください。
.vmdk ファイルが別の仮想マシンで使用されていない場合は、前述のセクションにあるように、ファイル ロックを特定してそれを解除して、ファイルをロックしている VMkernel プロセスやサービス コンソール プロセスがないことを確認します。 ホストは特定できても、問題を引き起こしている特定の VMkernel 子プロセス ID を特定できない場合は、サーバを再起動してロックをクリアする必要があります。

: 仮想マシンを別のホストに移行してパワーオンしてみることもできます。 その ESX ホストに仮想マシンのロックがある場合は、パワーオンできるはずです。

ファイルをロックしている ESX/ESXi ホストの再起動

この段階までに、必要なファイルに対してロックを維持している特定可能な VMkernel およびサービス コンソールのプロセスをすでに調べてきましたが、特定不可能な子プロセスが引き続きロックを維持しています。 先の手順で vmkfstools -D コマンドを使用してサーバを特定し、lsof ユーティリティ(ESX のみ)では問題を引き起こすプロセスが発生せず、他にファイルをロックしている仮想マシンはありません。

仮想マシンをもう一度パワーオンできるようにするために、サーバを再起動する必要があります。

: VMware テクニカル サポートによる分析を通して問題をさらに調査する場合は、再起動する前に、診断情報を収集します。

次の手順を使用して、仮想マシンをサーバから移行し、再起動します。
  1. すべての仮想マシンを、ホストから別のホストに移行または vMotion します。
  2. 仮想マシンを退避したら、ホストをメンテナンス モードに切り替えて再起動します。
: ESX/ESXi ホストが 1 台しかない場合、または vMotion を実行したり仮想マシンを移行したりすることができない場合は、再起動する前に、該当する仮想マシンのダウンタイムを計画する必要があります。 ホストを再起動したら、該当する仮想マシンをもう一度起動します。

仮想マシン構成ファイル (.vmx) の整合性を確認する

仮想マシン構成ファイルの整合性の確認については、「ESX/ESXi 仮想マシン ファイルの整合性の確認 (2078481)」を参照してください。

: 仮想マシンがパワーオンしていない場合は、.vmx ファイルの 2 つのディスクをポイントしている可能性があります。 いずれかのディスクを仮想マシンから削除し、もう一度パワーオンしてみます。

: 関連情報については、「仮想ディスクが開けないため仮想マシンをパワーオンできない (2078591)」を参照してください。

サポート リクエストを開く

この記事の手順を実行しても問題が解決しない場合は、次の手順を実行します。
  • 診断情報を収集します。 詳細については、「VMware 製品の診断情報の収集 (2038891)」を参照してください。
  • VMware サポートにサポート リクエストを提出し、このナレッジ ベースの記事 ID (10051) を問題の説明の中に記入してください。 詳細については、「How to Submit a Support Request」を参照してください。

Tags

ロックされたファイルの理由でスナップショットを統合ができません、vmロックされたファイルをパワーオン出来ません、vmdkが見つからないかロックされています、vmwareはデータストアからのファイルを削除出来ません、ロックされたvmwareなのでファイルをアクセス出来ません、ロックの理由でVMをパワーオン出来ません
 
日本語

See Also

Request a Product Feature

To request a new product feature or to provide feedback on a VMware product, please visit the Request a Product Feature page.

Feedback

  • 0 Ratings

Did this article help you?
This article resolved my issue.
This article did not resolve my issue.
This article helped but additional information was required to resolve my issue.

What can we do to improve this information? (4000 or fewer characters)




Please enter the Captcha code before clicking Submit.
  • 0 Ratings
Actions
KB: