ESXi での仮想マシン ファイル ロックの調査
search cancel

ESXi での仮想マシン ファイル ロックの調査

book

Article ID: 325740

calendar_today

Updated On:

Products

VMware vCenter Server VMware vSphere ESXi

Issue/Introduction

Symptoms:
免責事項:これは英文の記事「Investigating virtual machine file locks on ESXi (10051)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
    • 仮想マシンをパワーオンすると、パワーオン タスクがいつまでも 95% のままとなる。
    • 既存の仮想マシン ディスク (VMDK) を、すでにパワーオンした仮想マシンに追加すると、次のエラーで失敗する。
      • Failed to add disk scsi0:1. Failed to power on scsi0:1
      • Cannot power on the virtual machine after deploying it from a template.
    • 仮想マシンのパワーオンが次のエラーで失敗する。
      • 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 xxxxxxx: Failed to open swap file <path>: Lock was not free
      WARNING: World: VM xxxxxxx: Failed to initialize swap file <path>
    • 仮想マシンへのコンソールを開くと、次のようなエラーが表示されることがある。

      Error connecting to <path><virtual machine>.vmx because the VMX is not started
    • 仮想マシンが、vCenter Server と ESXi/ESX ホスト コンソールで、競合する電源状態を報告する。
    • cat or vi などの)テキスト エディタを使用して .vmx ファイルを表示するか開くと、次のようなエラーが報告される。

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


    Environment

    VMware vCenter Server 7.0.0
    VMware vSphere ESXi 8.0
    VMware vCenter Server 8.0
    VMware vSphere ESXi 7.0

    Resolution

    ファイル ロックの目的

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

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


    初期クイック テスト

    DRS をメンテナンスモードにセットし、仮想マシンをクラスタ内の全てのホストでパワーオンを試みて下さい。パワーオン出来たのならばそのホストがロックをしています。

     

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

    1. 仮想マシンをパワーオンして、エラーをメモします。
    2. 仮想マシンのある ESXi ホストへ ssh で接続します。
    3. VMFS の場合は VMDK flat, delta, sesparse ファイルで、vSAN の場合は .UUID.lck ファイルに対して vmfsfilelockinfo を実行しロックをしているホストの IP アドレスを探します。
    vmfsfilelockinfo には次のパラメータを入力します。
    • テストするファイル
    • vCenter Server のユーザ名とパスワード(ESXホストのMACアドレス追跡時)

    実行例

    vmfsfilelockinfo -p /vmfs/volumes/iscsi-lefthand-2/VM1/VM1_1-000001-delta.vmdk -v 192.168.1.10 -u [email protected]

    vmfsflelockinfo Version 1.0
    Looking for lock owners on "VM1_1-000001-delta.vmdk"
    "VM1_1-000001-delta.vmdk" is locked in Exclusive mode by host having mac address ['xx:xx:xx:xx:xx:xx']
    Trying to make use of Fault Domain Manager
    ----------------------------------------------------------------------
    Found 0 ESX hosts using Fault Domain Manager.
    ----------------------------------------------------------------------
    Could not get information from Fault domain manager
    Connecting to 192.168.1.10 with user [email protected]
    Password: xXxXxXxXxXx
    ----------------------------------------------------------------------
    Found 3 ESX hosts from Virtual Center Server.
    ----------------------------------------------------------------------
    Searching on Host 192.168.1.178
    Searching on Host 192.168.1.179
    Searching on Host 192.168.1.180
    MAC Address : xx:xx:xx:xx:xx:xx

    Host owning the lock on the vmdk is 192.168.1.180, lockMode : Exclusive

    Total time taken : 0.27 seconds.
     
    注: 仮想マシンのライフサイクルの中で、いくつかのファイルはロックの状態が遷移します。lock state mode はファイルのロックの種類を示します。
    • mode 0 = no lock
    • mode 1 = is an exclusive lock (vmx file of a powered on virtual machine, the currently used disk (flat or delta), *vswp, and so on.)
    • mode 2 = is a read-only lock (For example on the ..-flat.vmdk of a running virtual machine with snapshots)
    • mode 3 = is a multi-writer lock (For example used for MSCS clusters disks or FT VMs)
     
    1. ロックしているプロセスを探すために、lsof locked_file_name をロックを保持しているホストで実行します

    実行例

    lsof | egrep 'Cartel|VM1_1-000001-delta.vmdk'

    Cartel | World name | Type | fd | Description
    36202 vmx FILE 80 /vmfs/volumes/556ce175-7f7bed3f-eb72-000c2998c47d/VM1/VM1_1-000001-delta.vmdk
    ロックをしている Cartel ID は 36202 です。
     
    1. 下記コマンドでアクティブな Cartel ID のリストを表示します。
    esxcli vm process list

    下記のような出力となります。

    Alternate_VM27
    World ID: 36205
    Process ID: 0
    VMX Cartel ID: 36202
    UUID: 56 4d bd a1 1d 10 98 0f-c1 41 85 ea a9 dc 9f bf
    Display Name: Alternate_VM27
    Config File: /vmfs/volumes/556ce175-7f7bed3f-eb72-000c2998c47d/Alternate_VM27/Alternate_VM27.vmx
    ………

    上記の例では、「VMX Cartel ID: 36202」の仮想マシンが 
    VM1_1-000001-delta.vmdk のロックを保持しており、仮想マシンは Alternate_VM27 です。 
     
    1. プロセスが表示されない場合は、次のスクリプトで仮想マシンを探します。
    for i in $(vim-cmd vmsvc/getallvms | grep -v Vmid | awk -F "/"  '{print $2}' | awk '{print $1}'); do echo $i && find ./ -iname $i | xargs grep vmdk | grep -Ei VMDKS_TO_LOOK_FOR ; done
     

    ロックの解除

    1. ロックを保持している仮想マシンを停止する
    2. ロックを保持している ESXi ホストをリブートする


    .lck file を削除する(NFS のみ)

    1. 仮想マシンをパワーオフして、仮想マシンディレクトリの「lck-####」ファイルを削除します
    注意これらは、仮想マシンが実行していない場合にのみ正常に削除することができます。
     
    VMFS ボリュームに .lck ファイルはありません。VMFS ボリュームのロック メカニズムは、ボリューム上の VMFS メタデータ内で処理されます。
     

    仮想マシン構成ファイル (.vmx) の整合性をチェックする
     

    仮想マシン構成ファイルの整合性チェックの詳細については、「Verifying ESX/ESXi virtual machine file integrity (1003743)」を参照してください。

    :関連情報については、「Cannot power on a virtual machine because the virtual disk cannot be opened (1004232)」を参照してください。
     

    サポート リクエストをオープンする

    この記事の手順を完了しても問題が解決しない場合:

    Additional Information