先日、無事にサーバのDebianをSqueezeにアップグレードした訳ですが、KVMの仮想マシンが起動しなくなっていたのをメモしとくの忘れていました。
実際のところ、KVMの仮想マシンが起動しなくなるという訳ではなくて、libvirtを使っていて、且つ、仮想HDDをrawフォーマット以外(qcow2とか)を使っている場合に
Starting SeaBIOS (version 0.5.1-20101112_103537-polaris)
Booting from Hard Disk…
Boot failed: not a bootable disk
No bootable device.
なんて可愛らしメッセージが表示されちゃいます。
あまりの可愛らしさに胸がズキューンってなっちゃいますね。
これはlibvirtのバージョンが上がって、XMLのフォーマットに変更が入っているのが原因みたいです。新しいXMLのフォーマットではdiskにdriver要素が指定できるようになっているんですが、指定されていない場合はrawフォーマットとして扱われてるみたいです。
XMLフォーマットの詳細はこちら
なのでdriver要素を指定して上げれば問題なく起動します。でもdriver要素チマチマ追加するの面倒だなぁと思っていたら、virshから編集すると、自動的にdriver要素追加してくれてました(rawになってるけど)
$ sudo virsh edit ドメイン名
で、rawになっている部分を、実際に使用しているフォーマットに変更して上げればOK。
というかvirshのeditって今回初めて使ったんですが、defineしなくていいので楽チンですね。
今まではXMLファイルを編集して、その後 virsh defineやってました。
コメントを残す