ファイル ロックの目的
クリティカルな仮想マシンやファイル システムへの同時変更を防ぐために、ESXi/ESX ホストはこれらのファイルに対してロックをかけます。特定の状況では、仮想マシンをパワーオフしても、これらのロックが解除されない場合があります。ロックされている間はサーバがファイルにアクセスできず、仮想マシンはパワーオンすることができません。
次の仮想マシン ファイルは実行中にロックされます。
VMNAME.vswp
DISKNAME-flat.vmdk
DISKNAME-ITERATION-delta.vmdk
VMNAME.vmx
VMNAME.vmxf
vmware.log
初期クイック テスト
DRS をメンテナンスモードにセットし、仮想マシンをクラスタ内の全てのホストでパワーオンを試みて下さい。パワーオン出来たのならばそのホストがロックをしています。
ロックされているファイルの特定
- 仮想マシンをパワーオンして、エラーをメモします。
- 仮想マシンのある ESXi ホストへ ssh で接続します。
- 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)
- ロックしているプロセスを探すために、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 です。
- 下記コマンドでアクティブな 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 です。
- プロセスが表示されない場合は、次のスクリプトで仮想マシンを探します。
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
ロックの解除
- ロックを保持している仮想マシンを停止する
- ロックを保持している ESXi ホストをリブートする
.lck file を削除する(NFS のみ)
- 仮想マシンをパワーオフして、仮想マシンディレクトリの「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)」を参照してください。
サポート リクエストをオープンする
この記事の手順を完了しても問題が解決しない場合: