仮想化 ---- ====== linux での仮想化 ====== 一時期は xen がもてはやされていたが,開発の流れの問題で linux 関係はほとんど kvm に流れてしまった模様.(2010/01) ====== kvm ====== * ホストOS:ubuntu-8.04.3 * virtualization 環境:KVM ===== HDD に相当するイメージ作成 ===== % qemu-img(kvm-img) create -f qcow2 hoge.img 20G -f: 仮想イメージのフォーマット選択.qcow2 は qemu で使われているものの模様. ===== ゲストOS のインストール ===== * ホストOSと同じ環境を用意するならば,ubuntu-vm-builder コマンドを使うと良い. ex) ubuntu-vm-builder kvm jaunty -o -v --dest=test1 --domain test1 --arch amd64 \ --hostname test1 --mem 512 --ip 203.143.124.182 --mask 255.255.255.248 \ --gw 203.143.124.177 --dns 203.143.124.177 --libvirt qemu:///system \ --addpkg openssh-server --user='test' --pass='hogehoge' * 好きな ゲスト OS を入れる場合は,インストール iso を落としてきて以下のように起動 kvm -hda hoge.img -cdrom installer.iso -boot d -m 512 -monitor stdio (単純に X を飛ばす場合) kvm -hda hoge.img -cdrom installer.iso -boot d -m 512 -monitor stdio -vnc 112.78.193.181:0 (vnc 接続する場合) * 注意:ゲスト OS のインストールにはどうしてもウィンドウが必要になるので,vnc, X forward のどれかを利用する必要あり. * 注意:ubuntu の通常インストーラーはなぜか動作せず.alternate というテキストベースインストーラーがあるので,それを利用してインストール.たぶんインストーラーで frame buffer 使うぜとか頑張っているのが原因だと思われる.FreeBSD インストーラーは原始的なので問題なく起動. ===== ゲスト OS の管理 ===== ゲスト OS の管理には複数の方法が考えられる. - ssh のみで管理 - シリアルコンソールを設定し,ホスト OS から minicom などで接続 - vnc でいつも待ち受け. - virsh で管理 1. の ssh のみは,ネットワークの設定がうまく行っている時のみ利用可能なため,OS 管理には不向き. 2. のシリアルコンソールは有力だが,シリアルコンソールを static にゲストOSに割り当てないといけないため少々固定的. 3. の vnc も2. と同様に IP/port を割り当てておかなければならないため固定的. 4. の場合,virsh console などとできるため,楽な気がする. ==== virsh 管理にするために ==== 注意:virsh のバージョンは 0.65 が現状(2010/01) 一番良い.新しすぎると 後述の serial console の設定がうまく動作しない.古いと xmldom-... の コマンドがない. * libvirt-0.6.5.tar.gz: http://www.tsukune.org/skk/memo/staticattach/libvirt-0.6.5.tar.gz * configure には以下のオプションがあると通しやすいかも。もちろん使う人はつけて。 --without-xen --without-sasl * ゲスト OS に関するプロファイルを記述した xml を生成する * kvm(qemu) のコマンドライン起動オプションを記述したファイルを生成しておく. % cat kvm.sh kvm -hda /hoge/foo/lucid.img -boot c -m 512 -vnc 1.1.1.1:0 -serial pty * xml を virsh コマンドで生成する % virsh domxml-from-native qemu-argv kvm.sh > hoge.xml * 編集 testvm 746bb0d2-026f-fdd7-06ea-2a170cdefdcf 524288 524288 1 hvm destroy restart destroy /usr/bin/kvm