[VMware ESXi] 仮想マシンのファイル等がロックされているか確認する

今回は仮想マシンファイルや ISO ファイルがどの仮想マシンにロックされて
いるのか確認する方法について、記載します。

どの仮想マシンがファイルのロックしているか確認する

まずは、対象となるファイルのロック状態を確認します。

ロック確認には、対象のファイルへアクセス可能な ESXi 上から vmfsfilelockinfo -p
コマンドや vmkfstools -D コマンド等の実行が有効です。

vmfsfilelockinfo -p /vmfs/volumes/Datastore/VM1/VM1_1-000001-delta.vmdk -v <vCenter Server の IP アドレス> -u administrator@vsphere.local
vmkfstools -D /vmfs/volumes/Datastore/VM1/VM1_1-000001-delta.vmdk

上記各コマンドを実際に実行してみると、以下のような結果が表示されます。

<vmfsfilelockinfo -p の実行例>

[root@localhost:/vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test] vmfsfilelockinfo -p /vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test/Win2016-test-000001-sesparse.vmdk -v 192.168.0.17 -u administrator@vsphere.local
vmfsfilelockinfo Version 2.0
Looking for lock owners on "Win2016-test-000001-sesparse.vmdk"
"Win2016-test-000001-sesparse.vmdk" is locked in Exclusive mode by host having mac address ['18:66:da:82:16:8c']
Trying to use information from VMFS Heartbeat


Host owning the lock on file is 192.168.0.27, lockMode : Exclusive
Total time taken : 4.936948989000484 seconds.

vmfsfilelockinfo -p の実行例からは、対象のファイルが [192.168.0.27] の
IP アドレス及び [’18:66:da:82:16:8c’] の MAC アドレスを持つマシンに
ロックされていると特定できます。

<vmkfstools -D の実行例>

[root@localhost:/vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test] vmkfstools -D /vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test/Win2016-test-000001-sesparse.vm
dk
Lock [type 10c00001 offset 212762624 v 110, hb offset 3964928
gen 23015, mode 1, owner 640e1da4-eb556198-7eb1-1866da82168c mtime 11125
num 0 gblnum 0 gblgen 0 gblbrk 0]
Addr <4, 41, 60>, gen 105, links 1, type reg, flags 0x9, uid 0, gid 0, mode 600
len 189796352, nb 19 tbz 0, cow 0, newSinceEpoch 19, zla 1, bs 1048576
affinityFD <4,12,0>, parentFD <4,12,0>, tbzGranularityShift 20, numLFB 0
lastSFBClusterNum 85, numPreAllocBlocks 0, numPointerBlocks 0

vmkfstools -D の実行例では、[mode 1] の箇所から読み取り/書き込みロックが
行われていると判断でき、[owner 640e1da4-eb556198-7eb1-1866da82168c]
の末尾から MAC アドレス [’18:66:da:82:16:8c’] を持つマシンがロックしていると
判断できます。

vmkfstools -D コマンドの実行結果で表示される [mode X] の X の数字によって
以下のように判断できます。

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)

vmfsfilelockinfo -p コマンドの実行結果から確認できた [lockMode : Exclusive] は
vmkfstools -D コマンドの [mode 1] に該当し、[lockMode : Read-Only] の場合は
[mode 2] に該当します。

<vmkfstools -D コマンドvmfsfilelockinfo -p コマンドでのモードの対比>

・[mode 0]= [is not locked by any ESX host and is Free]
・[mode 1] = [lockMode : Exclusive]
・[mode 2] = [lockMode : Read-Only]
・[mode 3] = [lockMode : Multi-writer]

上記でロック元が ESXi と判明した場合、当該 ESXi 上でロックしている
プロセスを特定します。

lsof | egrep 'Cartel|対象のファイル'

以下が実行例となり、Cartel ID [528846] がロックしていると分かります。

[root@localhost:/vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test] lsof | egrep 'Cartel|Win2016-test-000001-sesparse.vmdk'
Cartel    |      World name     |        Type         |   fd   |  Description
528846      vmx                   FILE                       80   /vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test/Win2016-test-000001-sesparse.vmdk

次に、以下のコマンドでアクティブな Cartel ID のリストを表示します。

esxcli vm process list

仮想マシンが多いと分かりにくいので、grep するのがいいと思います。

[root@localhost:/vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test] esxcli vm process list | grep -B 3 -A 4 "528846"
Win2016-test
   World ID: 528847
   Process ID: 0
   VMX Cartel ID: 528846
   UUID: 42 26 d2 5b c5 30 07 03-9a 6a 34 61 4f d1 cd 0e
   Display Name: Win2016-test
   Config File: /vmfs/volumes/63a37eaf-0d8c6ac2-0461-1866da82168c/Win2016-test/Win2016-test.vmx

上記の結果より、Cartel ID 528846 を持つ仮想マシンは “Win2016-test”
だということが分かり、ロック元の特定ができました。

ESXi での仮想マシン ファイル ロックの調査 (10051)
https://kb.vmware.com/s/article/10051?lang=ja

ロックされた仮想ディスクが原因である問題のトラブルシューティング (2107795)
https://kb.vmware.com/s/article/2107795?lang=ja

VMware virtual machine file lock on VMFS datastore (84475)
https://kb.vmware.com/s/article/84475
タイトルとURLをコピーしました