ESXi6.0で仮想マシンがmsg.vmk.status.VMK_NOT_FOUNDで起動できなくなった

17 May 2017
#ESXi

一昨日までは動いていた仮想マシンが、昨日突然起動しなくなり、今日起動できるようになった話をします。

エラーメッセージ

仮想マシン(Windows Server 2012 R2)をvSphere Clientから起動しようとすると、すぐに以下のメッセージが表示されて起動できません。
スワップ ファイル「/vmfs/volumes/578f89ee-a2f486e6-788b-d017c28663ff/vmx-Home Server-3779952263-1.vswp」の作成に失敗しました: Not found
VMX を起動できませんでした: msg.vmk.status.VMK_NOT_FOUND
仮想マシンを起動できませんでした。VMware ESX が正しくインストールされていることを確認します。ソフトウェアを実行できる権限と、ソフトウェアがインストールされているディレクトリ、仮想ディスクと構成ファイルが含まれているディレクトリ、一時ファイル用ディレクトリを含め、ソフトウェアが使用するすべてのディレクトリへのアクセス権限が必要です。

err

データストアには読み書きできるし、空き容量が足りないというわけでもないです。

原因の心当たり

当該仮想マシンが動作している状態で、ESXiをパワーオフした…

対処:仮想マシンの再構築

vmxは消えておらず、テキストエディタで読める状態だったので、破損しているのかどうかわかりませんでした。しかし、他にも色々対処して全部ハズレだったので、vmdkは破損していないことを信じて仮想マシンを再構築しました。

以下は仮想マシンを再構築する手順です。

  1. vSphere Clientで直接vCenter ServerまたはESXホストに接続します。
  2. インベントリから仮想マシンを削除します。
  3. ESXホストを右クリックし、[ 新規仮想マシン ]を選択します。
  4. [ カスタム ]オプションを選択します。
  5. 移行前と同じ構成で仮想マシンを作成します。
  6. Select a Diskセクションが表示されたら、既存の仮想ディスクを使用することを選択し、元の.vmdkファイルをポイントします。
  7. 仮想マシンの作成を完了します。
  8. 仮想マシンの電源を入れます。
参考:Verifying ESX/ESXi virtual machine file integrity (1003743)

当該仮想マシンはRAIDを組んでいたので、7.で仮想マシンの作成を完了した後、複数のvmdkを追加しました。 また、ブートファームウェアをBIOSからEFIに変更しました(ここを変え忘れるとOSが見つからなくて絶望する)。

私はこれで仮想マシンを起動することができました。 結局、スワップが作成できないというのは何だったのか…(スワップの作成先を別のデータストアにしたり、hostlocalswapを無効にしたり、仮想メモリを無効にしたりしたけど起動しなかった)

多分、RAID組んでいないなら、vSphere Client経由でvmdkだけ適当なマシンのHDDにコピーし、vmdkをマウントできるソフトなどを使えばvmdkの安否確認とデータの救出ができる気がします。

試行錯誤のときに参考にしたページ

Unable to power on an ESX/ESXi virtual machine that previously worked (1003648)

ESX/ESXi のデフォルト以外の場所に仮想マシン スワップ ファイルを保存する (2074668)

VMware ESX – How to easily recreate a missing or corrupt VMX file.

4423.ch