仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

VMwareエラー「ファイルがロックされているためアクセスできません」の原因と対処法

VMwareエラー「Unable to access a file since it is locked」とは

VMware ESXiホスト上で稼働する仮想マシンのスナップショット削除やディスク統合(コンソリデーション)を実行する際、「Unable to access a file since it is locked(ファイルがロックされているためアクセスできません)」というエラーに遭遇することがよくあります。この問題はバックアップソフトウェアの不具合に起因するケースが多く、Veeam、HPE/Micro Focus Data Protector、Veritasなどで同様の事例が報告されています。

仮想ディスクのスナップショットがロックされると、以下のような操作がすべて失敗します。

  • ディスク統合(「Virtual machine disks consolidation is needed」という警告が表示される場合)
  • Storage vMotionによる別データストアへのディスク移動
  • 仮想マシンのバックアップ
  • 現在のスナップショットの削除

最悪の場合、ロックされた仮想マシン自体の電源投入すらできないこともあります。

エラーメッセージの例

ロックされた仮想ディスクファイルやスナップショットへのアクセスエラーは、以下のように表示されます。

Unable to access file since it is locked.
An error occurred while consolidating disks: One or more disks are busy.

また、次のようなエラーが出力される場合もあります。

An error occurred while consolidating disks: msg.snapshot.error-DISKLOCKED.

ロックが発生する主な原因

「Unable to access file since it is locked」エラーが発生する典型的なケースは次の2つです。

  • 電源オン状態の仮想マシンの一部ファイルに、他のESXiホストによってロックされていることを示すタグが残っている
  • 仮想ディスクがバックアップアプライアンスに接続された状態で、バックアップセッションが異常終了した

ロックの原因を突き止めて解放するには、まずどのファイルがロックされているのかを特定する必要があります。

ロックされているファイルの特定方法

  1. SSHクライアントを使用して、問題の仮想マシンが登録されているESXiホストに接続します。
  2. 仮想マシンのファイルがあるディレクトリへ移動します:
    cd /vmfs/volumes/VMFS_DATASTORE_NAME/LOCKED_VM
  3. vmware.logからコンソリデーションおよびファイルロック関連のエラーを検索します:
    cat vmware.log | grep lock
  4. ログには以下のようなエラーが出力されます。
VigorSnapshotManagerConsolidateCallback: snapshotErr = Failed to lock the file (5:4008)
2020-09-09T05:07:11.432Z| vmx| I125: DISK: Cannot open disk "/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01_1-000002.vmdk": Failed to lock the file (16392).
2020-09-09T05:07:11.432Z| Worker#1| I125: DISKLIB-LIB : Failed to open '/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01-000002.vmdk' with flags 0xa Failed to lock the file (16392).
2020-09-09T05:07:11.432Z| Worker#1| I125: DISK: Cannot open disk "/vmfs/volumes/5121c3ff-2303a3a-33bb-12345678221/mun-web01/mun-web01-000002.vmdk": Failed to lock the file (16392).
2020-09-09T05:07:11.432Z| vmx| I125: [msg.fileio.lock] Failed to lock the file

この例では、mun-web01_1-000002.vmdk ファイルがロックされていることがわかります。

スナップショットチェーンとロック所有者の確認

次のコマンドで、指定したスナップショットからフラットディスクまでのスナップショットチェーンを表示できます。

vmkfstools -qv10 mun-web01_1-000002.vmdk

続いて、スナップショットとその所有者(RO Owner)の情報を取得します。

vmkfstools -D mun-web01-000001-delta.vmdk

Lock [type 10c000021 offset 242835456 v 856, hb offset 3153920
gen 3, mode 1, owner 5cbac61a-4b6e32b7-0480-d06726ae7900 mtime 5199410
num 0 gblnum 0 gblgen 0 gblbrk 0]
RO Owner[0] HB Offset 3153920 5cbac61a-4b6e32b7-0480-d06726ae7900
Addr <4, 532, 83>, gen 859, links 1, type reg, flags 0, uid 0, gid 0, mode 600

RO Owner の行には、スナップショットファイルをロックしているESXiホストのネットワークアダプターのMACアドレスが表示されます。あわせてMode値にも注目してください。

  • mode 1:読み書きロック(電源オン状態の仮想マシンなど)
  • mode 2:通常、バックアップアプリケーションによるロックを意味する

MACアドレスからESXiホストを特定する方法

MACアドレスがわかれば、以下のPowerCLIコマンドで該当するESXiサーバーを特定できます(取得したMACアドレスはコロン区切りの形式に変換しておいてください)。

Import-Module VMware.VimAutomation.Core -ErrorAction SilentlyContinue
connect-viserver mun-vcenter
Get-VMHost | Get-VMHostNetworkAdapter | Where-Object {$_.Mac -like "d0:67:26:ae:79:00"} | Format-List -Property *

ESXiホスト名は VMHost フィールドに表示されます。なお、IPアドレスやMACアドレスからvCenter上の仮想マシンを検索する場合も、同様の手法が使えます。

さらに、ESXiホストから直接ARPテーブルを表示し、VMkernelネットワーク上の他のESXiサーバーのIPアドレスとMACアドレスの一覧を取得することも可能です。

esxcli network ip neighbor list

ロックの解除方法

VMファイルのロックを解除するには、特定したESXiホストを再起動します(事前にvMotionですべての仮想マシンを退避させておきましょう)。ホストを再起動できない場合は、メンテナンスモードに切り替えたうえで、SSHコンソールから管理エージェント(hostd)を再起動します。

services.sh restart

その後、再度ディスク統合またはスナップショット削除を試みてください。

Veeam Backup & Replication環境での対処法

「Unable to access file since it is locked」エラーは、Veeam Backup & ReplicationでVeeamプロキシサーバーを使用している環境でも頻発します。バックアップエラーが発生すると、Veeamが仮想マシンのディスクを正しくアンマウントできないことがあるためです。

この問題を解決するには、Veeamプロキシがインストールされている仮想マシンの設定を開き、ロックされたファイルを持つ仮想マシンのディスクを仮想ハードウェアから取り外します。

その際、必ず「仮想マシンから削除(Remove from virtual machine)」を選択してください。「仮想マシンから削除し、ディスクからファイルを削除」を選んでしまうと、vmdkディスク自体を誤って削除する恐れがありますので注意が必要です。

  1. 「プロセスを終了できません。アクセスが拒否されました」エラーの解決方法

    「ブラウザを起動するたびにメモリを大量に消費して困っています。最近ではさらに悪化し、タスクマネージャーで『タスクの終了』を実行してもバックグラウンドプロセスを停止できません。どうすればいいのでしょうか?」— あるWindowsユーザーの悩み アプリケーションやサービスに関連するプロセスを終了できないという問題は、多くのWindowsユーザーが直面するよくあるトラブルです。「大した問題ではない」と思うかもしれませんが、上記の事例のように、ブラウザが必要以上にPCのメモリを消費しているケースもあります。さらに深刻なケースでは、安全でないソースからダウンロードした悪意のあるアプリケーションがコンピュ

  2. Steam「コンテンツファイルがロックされています」エラーの解決策7選【Windows 10対応】

    Steamでゲームをアップデートしようとした際に、「アップデート中にエラーが発生しました(コンテンツファイルがロックされています)」というメッセージが表示され、更新が完了できないことがあります。このエラーは、Steamがハードディスクにアップデートファイルを書き込めないことを意味します。原因としては、システムファイルの破損、書き込み保護されたドライブ、アンチウイルスによるブロック、あるいは特定のフォルダやファイルへのアクセスに特別な権限が必要なケースなど、いくつか考えられます。 Steamのコンテンツファイルロックエラーとは 最も確実ですが時間のかかる方法は、Steamとローカルのゲームコンテ