Knowledge Base

The VMware Knowledge Base provides support solutions, error messages and troubleshooting guides
 
Search the VMware Knowledge Base (KB)   View by Article ID
 

ファイルがロックされているために仮想マシンがパワーオンされない (1033280)

Symptoms

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

  • 仮想マシンをパワーオンできない。

  • 仮想マシンをパワーオンするときに、次のいずれかのエラーが表示されることがある。
    • スワップ ファイルを開けません
    • ファイルがロックされているため、ファイルにアクセスできません
    • 仮想マシンの構成にアクセスできません

  • /var/log/vmkernel に次のようなエントリが記録されることがある。

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

    WARNING: World: VM xxxx: xxx: Failed to initialize swap file <パス>

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

    Error connecting to <path><virtual machine>.vmx because the VMX is not started
    (VMX が起動していないため、<パス><仮想マシン>.vmx への接続でエラーが発生しました)

  • 仮想マシンをパワーオンすると、パワーオン処理の進捗が 95 % のところで停止する。

  • テンプレートから仮想マシンに展開したあと、その仮想マシンをパワーオンできない。

  • VMware vCenter Server と ESX ホスト コンソールとの間で電源状態に矛盾があることを、仮想マシンが報告する。


Resolution

アクティブな仮想マシン ファイルへの多重アクセスを防ぐために、ESX ホストはこれらのファイルをロックします。ある状況では、仮想マシンをパワーオフしてもこれらのロックが解放されないことがあります。ロックされているとそのファイルにはアクセスできません。また、仮想マシンをパワーオンできません。
 
通常、ロックの問題は、次の仮想マシン ファイルに影響を与えます。
  • <仮想マシン名>.vswp
  • <ディスク名>-flat.vmdk
  • <ディスク名>-<回数>-delta.vmdk
  • <仮想マシン名>.vmx
  • vmware.log

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


ロックされているファイルを特定するには、仮想マシンをパワーオンしてみます。パワーオンの処理中に、エラーが表示されるか、仮想マシンのログにエラーが記録されます。エラーとログ エントリによって、仮想マシンが特定されます。
  1. 可能な場合は、VI (VMware Infrastructure) または vSphere Client を開いて、各 ESX ホスト、VirtualCenter Server、あるいは vCenter Server のホスト名または IP アドレスに接続します。

  2. 影響を受けている仮想マシンを特定し、それをパワーオンしてみます。

  3. 仮想マシンのリモート コンソール ウィンドウを開きます。

  4. 仮想マシンをパワーオンできない場合は、リモート コンソール画面のエラーが、影響を受けているファイルの名前を表示します。

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

    1. SSH クライアントを使用して、root アカウントで ESX ホストにログ インします。

    2. 仮想マシンがサーバに登録されていることを確認して、仮想マシンへのフル パスを取得するには、次のコマンドを実行します。

      vmware-cmd -l

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

      例:

      /vmfs/volumes/<UUID>/<仮想マシンのディレクトリ名>/<仮想マシン名>.vmx

      : この情報は、この処理であとで必要になるので記録しておきます。以降、このパスを <パス.vmx> として記載します。 また、大文字と小文字が区別されます。

      ESXi サーバの場合、次のコマンドを実行します。

      vim-cmd vmsvc/getallvms

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

      例:

      [<データストア>] <仮想マシンのディレクトリ名>/<仮想マシン名>.vmx

      影響を受けている仮想マシンが、このリストに表示されていることを確認します。リストにない場合は、その仮想マシンは当該 ESX ホストに登録されていません。仮想マシンが登録されているホストが、通常はロックしています。次の作業に進む前に、適切なホストに接続していることを確認します。

    3. 仮想マシンのディレクトリに移動するには、次のコマンドを実行します。

      cd /vmfs/volumes/<UUID>/<仮想マシンのディレクトリ名>

      ESXi サーバの場合:

      cd /vmfs/volumes/<データストア>/<仮想マシンのディレクトリ名>

    4. テキスト ビューアを使用して、「vmware.log」 ファイルの内容を確認します。ファイルの末尾から、影響を受けているファイルを特定するエラー メッセージを探します。

touch ユーティリティを使用してファイルをロックできるか判断する


touch ユーティリティは、ファイルまたはディレクトリのアクセス日時および修正日時のタイム スタンプを更新するために設計されています。touch コマンドは、VMFS ファイル システムで、ファイルおよびディレクトリのロック メカニズムをテストするために使用できます。touch を使用すると、リソースへの変更が最小限になり、変更時にファイルのロックが必要になるため、この方法をお勧めします。
 
ファイルまたはディレクトリのロック機能をテストするには、次のコマンドを実行します。

touch <ファイル名>

:「touch *」 コマンド を実行すると、現在のディレクトリにあるすべてのファイルに対して操作を行います。
 
このコマンドの結果は次のようになります。
  • コマンドが正常に実行された場合、コマンドによってタイム スタンプが変更されています。また、ファイルをロックできるかどうか、およびファイルがロックされ、ロックされていた場合はロックが解除されたかどうかが確認されています。この時点で、仮想マシンの起動を再度実行して、正常に実行されてかどうかを確認します。

  • コマンドが 「device or resource busy」 のメッセージを出力して失敗した場合は、何かがファイルまたはディレクトリをロックし続けていることを示しています。このファイルまたはディレクトリにアクセスできる ESX ホストはロックをしています。このメッセージが報告された場合は、次のセクションに進んでください。

  • 別のエラー メッセージが報告された場合は、ファイルまたはディレクトリのロックに関する VMFS データが有効でない可能性があります。この場合には、VMware ESX ホストから診断情報を収集して、サポート リクエストを送信してください。詳細については、「VMware 製品に関する診断情報の収集 (1008524)(英語)」 および 「サポート リクエストの発行方法」 を参照してください。

ファイル ロックの特定とロックの解放


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

同じストレージに接続されているホストは VMkernel (ESX および ESXi の場合) およびサービス コンソール (ESX の場合) でロックを続けている可能性があります。

:VMware ESXi は専用のサービス コンソール オペレーティング システムを使用しませんので、ロックのトラブルシューティングが VMkernel のみになります。たとえば、lsof ユーティリティ を使用してコンソール OS のトラブルシューティング方法は VMware ESXi ホストに適用しません。
 
はじめに、ファイルをロックしている可能性がある VMkernel のサーバを特定します。サーバを特定するには、次の手順を実行してください。
  1. ロックしているホストの MAC アドレスを報告するには、次のコマンドを実行します。

    vmkfstools -D /vmfs/volumes/<UUID>/<仮想マシンのディレクトリ名>/<ロックされているファイル.xxx>

  2. VMware ESX および ESXi 4.1 以前のサーバの場合、このコマンドの出力はシステム ログに書き込みます。ESX および ESXi 4.1 以降はコマンドの出力が画面にも表示されます。.vmdk ファイルをロックしている任意のホストの MAC アドレスをシステム ログに出力します。この情報を表示するには、次のコマンドを実行します。

    tail/var/log/vmkernel (ESX の場合)
    tail/var/log/messages (ESXi の場合)

    :ログの出力が多くて、次の例のようなの行が見つからない場合、「tail」 コマンドの変わりに 「less」 を使用します。実行してから G を押すと、ログの一番下に移動できます。キーボードの矢印やページダウンやスクロール キーを使用して関連出力を探します。

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

    Apr 5 09:45:26 Hostname vmkernel: 17:00:38:46.977 cpu1:1033)Lock [type 10c00001 offset 13058048 v 20, hb offset 3499520
    Apr 5 09:45:26 Hostname vmkernel: gen 532, mode 1, owner 45feb537-9c52009b-e812- 00137266e200 mtime 1174669462]
    Apr 5 09:45:26 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
    Apr 5 09:45:26 Hostname vmkernel: 17:00:38:46.977 cpu1:1033)len 297795584, nb 142 tbz 0, zla 1, bs 2097152
    Apr 5 09:45:26 Hostname vmkernel: 17:00:38:46.977 cpu1:1033)FS3: 132: <END supp167-w2k3-VC-a3112729.vswp>


    2 行目にある 「owner」 という単語のあとに続く下線で表示されているところに、MAC アドレスが表示されています。この例では、サービス コンソールおよび vswif0 インターフェイスの MAC アドレスは 00:13:72:66:E2:00 です。サーバにログ インしたあと、ロックを続けているプロセスの検証ができます。

    :この処理で MAC アドレスがわからないか owner 識別子がすべてゼロになっている場合は、サービス コンソールによるロック、NFS ロック (詳細についてはこの記事の 「.lck ファイルの削除 (NFS のみ)」 のセクションを参照)、または VMFS を使える他のシステムか製品によるロックの可能性があります。場合によって、VMkernel の子またはカーテル ワールドによるロックですので、プロセスかワールドを実行しているホストの再起動が必要になります。

  3. 取得した MAC アドレスが現在ログインしているホストに該当するかどうか確認するには、「ESX サービス コンソールの MAC アドレスの特定 (1001167)(英語)」 を参照してください。該当しない場合は、この仮想マシンを実行している可能性のある各ホストに対して、コンソールまたは SSH 接続を確立する必要があります。特定できたら、このホストで次の手順を実行します。

    :VMkernel によるロックがすでに特定できている場合、このセクションの手順を外してください。

  4. ESXi 以外のサーバでサービス コンソールによるロックを確認するには、次のコマンドを実行します。

    lsof | grep <ロックされているファイル名>

    COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    71fd60b6- 3631 root 4r REG 0,9 10737418240 23533
    <ロックされているファイル名>

    :サービス コンソールによるロックがない場合、コマンドの出力はありません。出力がある場合、プロセスと元の原因を特定するため、サポート リクエストを送信してください。サード パーティ プロセスの場合、再発の可能性があるので、プロセス ID を強制終了する前に適切なベンダーに連絡し、原因を調べます。

    プロセス ID とそのロックを停止するには、「kill」 コマンドを利用します。この記事の例のデータから見ると、プロセス ID は 3631 です。

    kill 3631

    プロセスを停止しましたら、仮想マシンを再起動か、ファイルおよびリソースにアクセスしてみます。

  5. 仮想マシンにワールド ID がまだ割り当てているかどうかを確認するには、すべての ESX および ESXi ホストで次のコマンドを実行します。

    cd /tmp
    vm-support -x


    Available worlds to debug:
    wid=
    <ワールド ID> <ロックされているファイルを所有する仮想マシン名>

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

    vm-support -X <ワールド ID>

    <ワールド ID> はロックされているファイルを所有する仮想マシンのワールド ID のことです。

    : コマンドが完了するまで 5 ~ 10 分がかかります。「Can I include a screenshot of the VM」 に 「No」 を回答して、その後の質問に 「Yes」 を回答してください。

    プロセスを停止しましたら、仮想マシンを再起動か、ファイルおよびリソースにアクセスしてみます。

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


仮想マシンのファイルは、NFS ストレージによってロックされる可能性があります。このことは、ファイル名の末尾に .lck.#### が付いたファイルで確認できます (#### はファイルをロックしているもののワールド ID を示す)。これが、NFS ファイル ロックで、そして隠しファイルのため、「ls -la」 コマンドのみで表示されます。
 
注意:これらのファイルは、仮想マシンが実行されている場合を除いて、安全に削除できます。
 
:VMFS ボリュームには、.lck ファイルはありません。VMFS ボリュームのロック メカニズムは、ボリュームにある VMFS メタデータ内で操作されます。

実行中の仮想マシンによるファイルの使用の確認


実行中の仮想マシンによってファイルが使用されている場合は、ロックを奪ったり削除したりできません。パワーオンを行う前に仮想マシンを実行していてロックを保持しているホストが応答しなくなった場合や、パワーオンを行う前にほかの実行中の仮想マシンが構成に不正にディスクを追加した場合が考えられます。詳細については、「ほかの仮想マシンによる .vmdk ファイル 使用状況の確認」 を参照してください。
 
仮想マシンのプロセスが実行中かどうかを判断するには、次の手順を実行します。
  1. 仮想マシンが ESX ホストに登録されているかどうか判断するには、root ユーザで次のコマンドを実行します。

    vmware-cmd -l

    ESXi サーバの場合、次のコマンドを実行します。

    vim-cmd vmsvc/getallvms

    各登録されている仮想マシンの VMID が表示されます。この情報は、ESXi サーバ上の処理であとで必要になるので記録しておきます。

    :仮想マシンが複数の ESX ホストに登録されている場合は、「仮想マシンが複数の ESX サーバ上で実行中と表示される、または複数の ESX サーバに登録されている (1005051)(英語)」 を参照してください。

  2. ESX サーバ上の仮想マシンの現在の状態を評価するには、次のコマンドを実行します。

    vmware-cmd <パス.vmx> getstate

    このコマンドの出力が 「getstate() = on」 の場合、その仮想マシンは応答していません。この問題に対処するには、「応答を停止した仮想マシンのトラブルシューティング (1007819)(英語)」 を参照してください。

    このコマンドの出力が 「getstate() = off」 の場合は、ESX ホストがファイルのロックを認識していない可能性があります。

    ESXi サーバ上の仮想マシンの現在の状態を評価するには、次のコマンドを実行します。

    vim-cmd vmsvc/power.getstate <vmid>

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

ほかの仮想マシンによる .vmdk ファイル 使用状況の確認


.vmdk ファイルへのロックによって仮想マシンが起動できないことがあります。ただし、仮想マシン ディスク ファイルは任意の仮想マシンで使用するように構成できるため、このファイルが現在実行中のほかの仮想マシンによってロックされている可能性があります。
 
仮想マシン ディスク ファイルが、複数の仮想マシンで使用するように構成されているかどうか判断するには、次のコマンドを実行します。
 
egrep -i <ディスク名>.vmdk /vmfs/volumes/*/*/*.vmx
 
注記
  • このコマンドは、その ESX ホストが認識する仮想マシンのすべての .vmx 構成ファイルの中から、指定されたディスク名を検索します。実行中にもかかわらず、この ESX ホストに登録されていない各仮想マシンについては、「Device or resource busy」 のメッセージが出力されます。インフラストラクチャにある各 ESX ホスト上で、または特に仮想マシンのファイルを含むストレージにアクセスする ESX ホスト上で、このコマンドを実行する必要があります。

  • ほかの仮想マシンがこのディスクを使用するように構成されている場合は、それらが現在実行中かどうか判断します。ディスク ファイルを使用しているほかの仮想マシンをパワーオフすると、ロックが解放されます。どの仮想マシンにファイルの所有権があるのか判断して、このエラーが再び発生しないように仮想マシンを再構成する必要があります。

  • 仮想マシンのバックアップ ソリューションの大半は、処理の一部として仮想マシンの .vmdk ファイルを一時的にそのソリューション自身に添付します。このケースでは、バックアップ処理が失敗するまたはホストがシャット ダウンする場合、バックアップの仮想マシンに別の仮想マシンの .vmdk ファイルがそのまま添付されている可能性があります。そうなった場合、通常はもう 1 つの仮想マシンが先にパワーオンされて、そしてバックアップの仮想マシンがパワーオンされると、ファイルのロック状態になります。バックアップ ソリューションの仮想マシンの [設定編集] で別の仮想マシンのハード ディスクが添付されているかどうかを確認します。添付されている場合、バックアップの仮想マシンをパワーオフして、ディスクを選択してから [Remove] を選択することで、そのディスクを仮想マシンから外します。ディスク上のファイルを削除しないでください

.vmdk ファイルがほかの仮想マシンによって使用されていない場合は、VMkernel かサービス コンソールのプロセスによるロックがないことを、前述の 「ファイル ロックの特定とロックの解放」 手順で再確認します。ホストの特定ができるが、VMkernel の子プロセス ID の特定ができない場合、ロックを解除するためにサーバの再起動が必要です。
 
: 別方法として、仮想マシンを他のホストに移行して、移行先でパワーオンしてみることもあります。ESX ホストが仮想マシンのロックを所有していると、パワーオンができることになるはずです。

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


この時点で VMkernel かサービス コンソールのプロセスによるロックを調べたが、正体不明の子プロセスがロックし続けています。前述の手順の 「vmkfstools -D」 コマンドでサーバの特定ができて、lsof ユーティリティ が原因のプロセスを発見しないで、そして他の仮想マシンはロックの原因ではありません。

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

:VMware テクニカル サポートで根本原因解析を要求する予定であれば、再起動する前に診断情報を収集してください。

サーバからすべての仮想マシンを移行して、そして再起動するには、次の手順を実行します。
  1. そのホストから新しいホストへすべての仮想マシンを代わりのホストに vMotion か他の方法で移行します。

  2. 仮想マシンの移動が完了したあと、ホストをメンテナンス モードに切り替えてから再起動します。

    : ESX サーバは 1 台のみの場合、または仮想マシンの移行機能がない場合は、再起動する前に、影響を受けたすべての仮想マシンに対してダウンタイムをスケジュール設定する必要があります。ホストの再起動が完了したら、影響を受けた仮想マシンを起動します。

サポート リクエストの送信


この記事に記載してある手順を実行しても、問題が解決されない場合は、 VMware テクニカル サポートに、サポート リクエストを送信してください。

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

Tags

Japanese 日本語

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)
  • 0 Ratings
Actions
KB: