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 hosts」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

  • 仮想マシンをパワーオンすると、パワーオン タスクがいつまでも 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 vSphere ESXi 8.0.x
VMware vSphere ESXi 7.0.x

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 ホストを再起動します。

    注: ハードウェア障害により ESXi ホストが突然シャットダウンした場合、ホストを再起動できない可能性があります。このシナリオで「vmx」ファイルのロックを削除するには、KB「 Remove VM vmx file lock」を参照して下さい。


VM root directory から .lck file を削除する(NFS のみ)

  1. 仮想マシンを停止します。

    : 電源をオフにした仮想マシンの .lck ファイルのみを削除してください。
  2. 「mkdir bkup」コマンドを使用して VM フォルダ内にディレクトリ「bkup」を作成します

  3. 「mv lck-#### bkup」コマンドを使用して、ロックファイルlck-####を移動します。

  4. ls -lah bkup」コマンドを使用してファイルが「bkup」フォルダに移動さ​​れファイル一覧にあることを確認します。


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

 

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

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

関連情報:

 

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

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

 




Additional Information

 

注: スナップショットの初期ディスクとベースディスク間の切り替え期間中にロックが取得された場合、統合後に VM がシャットダウンする可能性があります。詳細については、「Virtual Machine shuts down after a disk consolidation due to a locked file」を参照して下さい。