このエラーは、操作しているファイルが別のプロセスまたはタスクによってロックされている場合に発生します。その他のプロセスが識別された場合は、プロセスが完了するのを待つか、またはそのプロセスを停止する必要があります。
警告:ストレージ関連のプロセスを突然停止すると、データが破損することがあります。
ファイルをロックしているプロセスを識別するには:
-
-
次のコマンドを実行します。
vmkfstools -D path
ここで、path は操作対象ファイルへのフル パスです。
注:このコマンドはコンソールへの出力を生成しません。出力は vmkernel ログに送信されます。
-
vmkfstools の出力を表示します。
-
vmkfstools の出力にある MAC アドレスを記録します。次に例を示します。
vmkernel: 11:04:31:50.251 cpu1:1035)FS3: 130: <START rdmtest-flat.vmdk>
vmkernel: 11:04:31:50.251 cpu1:1035)Lock [type 10c00001 offset 60088320 v 160, hb offset 3646464
vmkernel: gen 80, mode 1, owner 479f5a1a-0855d3ff-7288-0017a446ae31 mtime 532684]
vmkernel: 11:04:31:50.251 cpu1:1035)Addr <4, 130, 156>, gen 157, links 1, type reg, flags 0x0, uid 0, gid 0, mode 100600
vmkernel: 11:04:31:50.251 cpu1:1035)len 16106127360, nb 15360 tbz 0, zla 3, bs 1048576
vmkernel: 11:04:31:50.251 cpu1:1035)FS3: 132: <END rdmtest-flat.vmdk>
注: MAC アドレス xx::xx:xx:xx:xx:xx は 0017a446ae31 として表されます。
-
vmkfstools の出力にある MAC アドレスを、他のすべての ESX または ESXi ホストの管理インターフェイスからの MAC アドレスと比較することにより、ロックが作成されたホストを判別します。
-
次のコマンドを実行して、問題のファイルを使用している仮想マシンが存在しないことを検証します。
# find -H /vmfs/volumes/*/*/*.vmx -print0 | xargs -0 grep "filename"
注: ESXi の場合は、オプション「-H」を削除します。これにより、結果の vmx すべてに 2 行が追加されます。1 行はデータストアの簡易名、もう 1 行はデータストアの UUID です。
例:
# find /vmfs/volumes/*/*/*.vmx -print0 | xargs -0 grep "ag-test.vmdk"
/vmfs/volumes/7e2d0213-7530bdba/ag-test/ag-test.vmx:scsi0:0.fileName = "ag-test.vmdk"
/vmfs/volumes/dc03-nfs/ag-test/ag-test.vmx:scsi0:0.fileName = "ag-test.vmdk"
これにより、すべてのデータストア上のすべての仮想マシンの構成ファイル内にある、filename のすべてのインスタンスがリストされます。
-
ESX ホストの場合は、次のコマンドを実行して、ファイルにアクセスしているサービス コンソール プロセスが存在しないことを検証します。
lsof | grep -i filename
-
ファイルにアクセスしているすべてのプロセスが完了するか、または停止されているかを検証します。
-
これらの手順を実行してもファイルをロックしたプロセスを特定できない場合は、ホストまたは仮想マシンを再起動します。
警告:ストレージ操作時にホストを再起動すると、データを損失する可能性があります。