技術系なぶろぐ
一時ファイルの作成中にエラーが発生しました とか言い出して、仮想マシンが起動しない
仮想マシンをvMotionしようとしたら、一般的なエラーとか意味不明なエラーを出して移行できなくなった。
なんじゃ??と思って、VMをShutdownして、もう一回起動。そしたら、こんなエラーががががが
とーりあえず、仮想マシンをインベントリから削除して、再登録してみる。結果変わらず。
構成ファイルと同じところにできてる、vmware.log を確認してみる。なにやら、こんなエラーメッセージが
vmx| I120: FileIO_AtomicTempFile: Failed to create temporary file, The file already exists (3). errno: 17
vmx| I120: Msg_Reset:
vmx| I120: [msg.configdb.failcreatetemp] An error occurred while creating temporary file for /vmfs/volumes/5f883c54-1bd774f2-f870-f8db88fbe1d4/***/***.vmx: The file already exists
一時ファイルの作成に失敗とか言ってる。
VMware ってGUIに表示されるエラーと、本当のエラーが食い違ってることがたまにあって、GUIのエラーメッセージはあまり信用しないほうがいいんですが、どうやら今回は一致している模様。
さーて、一時ファイルと言ってもなぁ・・・・・
とりあえず、構成ディレクトリを見てみよう。
ん・・・??なんだこれ??
※ ホスト名が見えるところは、念のためマスクしてます
**.vmx~ ファイルってなんぞや?それがないって言ってるけど、ls にもともと出てないんだから、そりゃファイルはないわな?なんでわざわざ No Such file or directory と言う??
ただ、どうやら .vmx~ っていうファイルは、VMware のロックファイルで使うっぽい。となると、「ファイルがすでにあるから、一時ファイルが作れねぇ!」っていうメッセージと整合する。。。。ような気がする。
とーりあえず、これが原因かな?ってことで、対処してみる。
とはいえ、存在しないと言ってるファイルなんてどーやって消すんだよ?
消せないなら、そんな亡霊ファイルが見えなくなりゃそれでいいだろ。ってことで、こんな手順
- 仮想マシンをVMwareのインベントリから削除(決してディスクから削除ではない)
- ESXにSSHでログイン
- 仮想マシン構成ファイルのディレクトリ名を変更
- 仮想マシン構成ファイルディレクトリを新規作成
- 旧ディレクトリから、vmxとかvmdkとかその他仮想マシンを構成するファイルを新ディレクトリに移動
- 新ディレクトリに置いたvmxファイルを使って仮想マシン登録
- 仮想マシン起動!
無事起動しました。
今回問題になった仮想マシンが、iSCSI のファイルシステムにおいてたので、ESX 上の Shell で操作してます。NFSボリュームだったら、ほかのマシンからマウントして操作するとか、もうちょっとやりやすかったかも。