今回は、VMware環境でシステム運用をしている際に遭遇する「ロックファイル」に関するトラブルと、その解決方法について詳しく解説します。
VMwareのロックファイルとは
VMwareのロックファイルは、仮想マシン(VM)のディスクファイルやスナップショットファイルへの同時アクセスを防ぐために自動的に作成される保護機構です。拡張子が「.lck」のフォルダや、ファイル名に「-flat.vmdk.lck」といった形式で作成されます。
通常、VMの起動時に自動生成され、シャットダウン時に自動削除されるため、ユーザーが意識する必要はありません。しかし、何らかの異常終了や不適切な操作により、このロックファイルが残留してしまうことがあります。
よくあるトラブル事例
事例1: スナップショットが取得できない
運用管理者が定期バックアップやメンテナンス前にスナップショットを取得しようとした際、以下のようなエラーメッセージが表示されることがあります。
「Unable to access file since it is locked」
「ファイルがロックされているためアクセスできません」
この状態では、スナップショットの作成だけでなく、既存スナップショットの削除や統合もできなくなります。定期バックアップのスケジュールに影響が出るため、早急な対応が必要です。
事例2: 仮想マシンが起動できない
VMを起動しようとすると、「Failed to lock the file」や「ファイルのロックに失敗しました」というエラーが表示され、起動できないケースがあります。これは既にロックファイルが存在しているため、VMwareが新たにロックを取得できない状態です。
事例3: 仮想マシンの削除や移動ができない
VMの削除や別のデータストアへの移動(Storage vMotion)を実行しようとした際に、ロックファイルが障害となり操作が完了しないことがあります。
ロックファイルが発生する主な原因
ロックファイルのトラブルが発生する原因を理解しておくことで、予防策にもつながります。
1. 仮想マシンの異常終了
ESXiホストのクラッシュ、電源障害、強制的なプロセス終了などにより、VMが正常にシャットダウンされなかった場合、ロックファイルが残留します。
2. ESXiホストの再起動
メンテナンスのためESXiホストを再起動した際、VMの移行やシャットダウンが適切に行われなかった場合に発生します。
3. 管理ツールの異常
vCenter ServerやvSphere Clientなどの管理ツールが異常終了した場合、ロックの解放処理が実行されないことがあります。
4. バックアップソフトウェアの不具合
サードパーティ製のバックアップソフトウェアが VMディスクにアクセス中にエラーが発生すると、ロックが残る場合があります。
5. ストレージの問題
ストレージ側の接続障害やパフォーマンス問題により、ロックファイルの削除処理が正常に完了しないケースもあります。
ロックファイルの確認方法
トラブル対応の第一歩は、実際にロックファイルが存在するかを確認することです。
vSphere Clientでの確認
- vSphere Clientでデータストアブラウザを開きます
- 該当するVMのフォルダを表示します
- 「.lck」という拡張子のフォルダや、「.vmdk.lck」といったファイルがないか確認します
SSHでの確認(ESXi)
ESXiホストにSSH接続し、コマンドラインで確認する方法もあります。
cd /vmfs/volumes/データストア名/VM名/
ls -la | grep lck
ロックファイルが存在する場合、該当するファイルやフォルダが表示されます。
ロックファイルの削除手順(解決策)
ロックファイルを安全に削除するための手順を段階的に説明します。必ず以下の順序で実施してください。
ステップ1: 仮想マシンの状態確認
まず、該当するVMが本当に停止しているか、他のホストで稼働していないかを確認します。vCenter Serverで複数のESXiホストを管理している場合は特に重要です。
- vSphere Clientで対象VMのステータスを確認
- すべてのESXiホストでVMが起動していないことを確認
ステップ2: 仮想マシンをインベントリから削除
VMが完全に停止していることを確認したら、一旦インベントリから削除します。これにより、vCenterやESXiが保持している該当VMへの参照が解除されます。
注意:インベントリからの削除はVMファイル自体を削除するわけではありません。登録を解除するだけです。
ステップ3: ESXiホストへSSH接続
より確実な方法として、ESXiホストに直接SSH接続してロックファイルを削除します。
- ESXiホストのSSHサービスを有効化
- SSHクライアント(Tera Term、PuTTYなど)でESXiホストに接続
- rootアカウントでログイン
ステップ4: ロックファイルの削除
データストアのディレクトリに移動し、ロックファイルを削除します。
cd /vmfs/volumes/データストア名/VM名/
rm -rf *.lck
「-rf」オプションは、ディレクトリとその中身を再帰的に削除するオプションです。ロックファイルがフォルダ形式の場合に必要です。
ステップ5: 仮想マシンの再登録
ロックファイルを削除したら、VMを再度インベントリに登録します。
- データストアブラウザで該当VMの「.vmx」ファイルを右クリック
- 「インベントリに登録」を選択
- VMの名前とリソースプールを指定して登録
ステップ6: 動作確認
VMを起動し、正常に動作するか確認します。スナップショット取得などの操作も問題なく実行できるかテストしてください。
削除時の注意点とリスク
ロックファイルの削除は、慎重に行う必要があります。以下の点に特に注意してください。
VMが本当に停止しているか再確認
最も重要なのは、対象のVMが完全に停止していることです。VMが稼働中にロックファイルを削除すると、データ破損や仮想ディスクの整合性喪失につながる可能性があります。
複数のESXiホストで構成されたクラスタ環境では、別のホストでVMが起動していないか、必ず全ホストで確認してください。
バックアップの取得
可能であれば、作業前にVMのバックアップを取得しておくことを強く推奨します。万が一の事態に備えることで、安心して作業を進められます。
ロックを保持しているプロセスの確認
より安全な方法として、どのプロセスがロックを保持しているかを確認してから対処する方法があります。
lsof | grep VM名
このコマンドで、該当VMに関連するファイルを開いているプロセスを確認できます。プロセスが見つかった場合は、そのプロセスを適切に終了させることで、自動的にロックが解放されることもあります。
予防策とベストプラクティス
トラブルの発生を未然に防ぐための対策も重要です。
1. 正常なシャットダウン手順の徹底
VMを停止する際は、必ずゲストOSから正常にシャットダウンを実行します。vSphere Clientの「パワーオフ」は緊急時のみ使用し、通常は「シャットダウン」を選択してください。
2. ESXiホストのメンテナンス手順の遵守
ESXiホストをメンテナンスモードにする前に、すべてのVMを他のホストに移行するか、正常にシャットダウンしてください。
3. 定期的な環境確認
定期メンテナンス時に、不要なロックファイルが残っていないかチェックする習慣をつけましょう。
4. バックアップソフトウェアの適切な設定
バックアップソフトウェアを使用している場合は、VMwareとの連携が適切に設定されているか確認してください。特にスナップショット取得後の自動削除設定は重要です。
5. ストレージの健全性監視
ストレージのパフォーマンスやエラーログを定期的に確認し、ストレージ起因のロックファイル残留を予防します。
6. ログの確認習慣
ESXiホストのログ(/var/log/vmkernel.log、/var/log/vmware.log)を定期的に確認し、ロックに関するエラーメッセージがないかチェックしましょう。
まとめ
VMwareのロックファイルトラブルは、運用管理の現場で比較的頻繁に遭遇する問題です。しかし、適切な手順を理解していれば、安全かつ迅速に解決できます。
重要なポイントをまとめると以下の通りです。
- ロックファイルはVMの保護機構であり、通常は自動管理される
- スナップショット取得失敗やVM起動エラーの原因となることが多い
- 削除前に必ずVMの完全停止を確認する
- 段階的な手順(インベントリ削除→ファイル削除→再登録)で対応する
- 予防策として正常なシャットダウン手順の徹底が重要
この記事で紹介した手順を参考に、落ち着いて対応すれば、ロックファイルのトラブルを確実に解決できます。また、日頃から予防策を実践することで、トラブルの発生頻度を大幅に減らすことができるでしょう。
VMware環境の運用管理において、この記事が皆様の助けとなれば幸いです。もしご不明な点がございましたら、VMwareの公式ドキュメントやサポートもご活用ください。

コメント