こんにちは jedipunkz です。
Virtio に対応していない OS を OpenStack で稼働させることが今まで出来なかったの ですが Grizzly から非 Virtio な OS イメージが扱えるようになった。今まで NetBSD やら古い FreeBSD やら virtio ドライバを OS イメージに入れることに苦労していたの だけど、これで問題無くなった。
最初、この機能のこと調べるのに「どうせ libvirt が生成する xml を書き換えるのだ から nova 周りの設定なんだろうー」と思っていたら全く方法が見つからず…。結局 OS イメージを格納している Glance の設定にありました。
ここでは FreeBSD7.4 Release を例に挙げて説明していきます。
前提とする環境
- OpenStack Grizzly が稼働していること
- ホスト OS に Ubuntu 12.04.2 LTS が稼働していること
- ゲスト OS に FreeBSD 7.4 Release を用いる
とします。OS のバージョンはホスト・ゲスト共に、上記以外でも構いません。Grizzly さえ動いていれば OK です。
OS イメージ作成
KVM で OS イメージを作成します。もちろん virtio なインターフェースは指定せず
- IDE ディスクインターフェース
- e1000 (intel) ネットワークインターフェース
を指定してあげてください。
% kvm-img create -f qcow2 <IMAGE_NAME> 5G
% sudo kvm -m 1024 --cdrom FreeBSD-7.4-RELEASE-amd64-disc1.iso --drive \
file=./<IMAGE_NAME> -boot d -net nic,model=e1000 -net user -nographic \
-vnc :9
VNC クライアントソフトを用いてホスト :9 番に接続し OS をインストールする。
Glance への登録
OpenStack API に接続する環境変数等を合わせ下記のコマンドを実行します。
% glance image-create --name="FreeBSD7.4" --is-public \
true --container-format bare --disk-format qcow2 < <IMAGE_NAME>
% glance image-update --property hw_vif_model=e1000 "FreeBSD7.4"
% glance image-update --property hw_disk_bus=ide "FreeBSD7.4"
–property オプションでディスク・ネットワークインターフェースの指定を変更して います。
VM の稼働
あとは普段通り nova boot コマンドで VM を稼働させるだけです。
% nova boot --nic net-id=<network_id> --image <image_id> --flavor <flavor_number> <vm_name>