VMFSデータストアでは、ファイルロックは多くの場合、-flat または -delta の仮想ディスクファイル上で検証されます。vSANはオブジェクトベースのシステムであるため、これらのファイルは存在しません。この記事では、これらの仮想ディスクオブジェクトのロックを確認する方法について説明します。
ファイルロックの問題は、さまざまな問題を引き起こす可能性があります。たとえば、仮想マシンのパワーオンやスナップショットの統合に失敗する場合があります。
vSANには、仮想ディスク専用のオブジェクトタイプであるvdiskがあります。これらは、ネームスペースディレクトリ内の仮想マシン構成ファイルとは別に保存されます。
バックアッププロキシサーバーが使用されているか確認してください。使用されている場合は、影響を受けているディスクがプロキシサーバーに接続されているかどうかを確認してください。ディスクがプロキシサーバーに接続されている場合は、「ディスクから削除」のチェックが選択されていないことを確認して、プロキシサーバーからディスクを取り外してください。
注:プロキシサーバーが複数使用されている場合があります。すべてのプロキシサーバーを確認してください。
vSAN は.lckファイルを使用します。.lckファイルの名前は、vSANオブジェクトのUUIDになります。
ディスクリプタを確認するには、仮想マシンネームスペース内のディレクトリに移動します。 cd /vmfs/volumes/vsanDatastore/<VM_Namespace>
関連するUUIDを取得するには、以下のコマンドを実行します。
grep RW VMDiskName.vmdk
出力例:
# Extent description RW 209715200 VMFS "vsan://########-####-####-####-########31f0"
注:デバイスまたはリソースがビジー状態であるなどのエラーが発生した場合は、仮想マシンが登録されているホストにSSHで接続し、そのホストから作業してください。
UUID ########-####-####-####-########31f0 は、そのディスクリプタの vdisk を表す vSAN オブジェクトです。
次のコマンドを実行すると、vSAN ネームスペースディレクトリ内のすべての .<uuid>.lck ファイルが表示されます。
# ls -lah .*.lck
-rw------- 1 root root 0 Jul 13 2017 .########-####-####-####-########31f0.lck # ls -lah *.lck vmfsfilelockinfo -p .########-####-####-####-########31f0.lck 出力例: vmfsfilelockinfo Version 2.0 Looking for lock owners on ".########-####-####-####-########31f0.lck" "<VMname>.vswp.lck" 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 6 ESX hosts using Fault Domain Manager. ---------------------------------------------------------------------- Searching on Host esxi1 Searching on Host esxi3 Searching on Host esxi4 Searching on Host esxi2 Searching on Host esxi6 Searching on Host esxi5 MAC Address : ##:##:##:##:##:##
Host owning the lock on file is esxi5, lockMode : Exclusive Total time taken : 0.11339905299246311 seconds.
ロックが存在しない場合の出力例 : vmfsfilelockinfo Version 2.0 Looking for lock owners on ".########-####-####-####-########31f0.lck" ".########-####-####-####-########31f0.lck" is not locked by any ESX host and is Free Total time taken : 0.037906300276517868 seconds.
または、このファイルに対してコマンド vmkfstools -D を実行してください。これにより、この vSAN オブジェクトのロックの詳細も表示されます。
# vmkfstools -D .########-####-####-####-########31f0.lck
出力例: Lock [type 10c00001 offset 152799232 v 830, hb offset 3969024 gen 215, mode 1, owner ########-######dc-07eb-########2052 mtime 1107249 num 0 gblnum 0 gblgen 0 gblbrk 0] Addr <4, 354, 1>, gen 3, links 1, type reg, flags 0, uid 0, gid 0, mode 600 len 0, nb 0 tbz 0, cow 0, newSinceEpoch 0, zla 4305, bs 8192
[root@esxi4:~] lsof |grep cent7_2 && ps|grep cent7_2
7565528 vmx FILE 43 /vmfs/volumes/vsan:########-########-####-####-####-########5523/########-####-####-####-########81e8/cent7_2.vmx.lck
7565528 vmx FILE 44 /vmfs/volumes/vsan:########-########-####-####-####-########5523/########-####-####-####-########81e8/cent7_2.vmx
7565528 vmx FILE 45 /vmfs/volumes/vsan:########-########-####-####-####-########5523/########-####-####-####-########81e8/cent7_2.vmx~
7565528 vmx FILE 82 /vmfs/volumes/vsan:########-########-####-####-####-########5523/########-####-####-####-########81e8/cent7_2.nvram
7565529 0 vmm0:cent7_2
7565533 0 vmm1:cent7_2
7565535 7565528 vmx-filtPoll:cent7_2
7565536 7565528 vmx-mks:cent7_2
7565537 7565528 vmx-svga:cent7_2
7565538 7565528 vmx-vcpu-0:cent7_2
7565540 7565528 vmx-vcpu-1:cent7_2kill <PID> を実行することで終了することができます。lsof) やアクティブなプロセス ( ps) は存在しないはずです。VM の電源がオンになったときに、VM が登録されているホスト上でのみ、開いているファイルやアクティブなプロセスが存在するはずです。vmfsfilelockinfo -p または vmkfstools -D を実行してもロックが見つからず、lsof |grep <vmname> && ps|grep <vmname> をどのホスト上で実行しても仮想マシンのアクティブなプロセスが見つからない場合は、クラスターのローリングリブートを実行してロックを解除する必要があります。.<uuid>.lckファイルを確認するには、以下のコマンドを実行します。次の項目については、KBを参照してください。
Committing snapshots when there are no snapshot entries in the Snapshot Manager
ESXi での仮想マシン ファイル ロックの調査
ESXi の管理エージェントの再起動
注: 初期ディスクとベース ディスク間の切り替え期間中にロックが取得された場合、統合後に VM がシャットダウンする可能性があります。詳細については、Virtual Machine shuts down after a disk consolidation due to a locked file を参照してください。