KVMとlibvirt(virsh, virt-install, virt-manager) を使った仮想マシンのインストール

Pocket

昨日(Ubuntu 11.04にKVMを導入する | 記録用手帳)に続いてKVMやXenといった仮想化機構の抽象化レイヤであるlibvirtを使って仮想マシンをインストールしてみました。

ISOイメージのダウンロード

手始めにUbuntu 11.04 サーバー版のイメージをダウンロードしてきます。

# wget http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu-releases//natty/ubuntu-11.04-server-amd64.iso

virt-installコマンドを用いた仮想マシンインストール

virt-installコマンドを実行しますが何故か失敗します。ログを確認します。

# tail /var/log/libvirt/qemu/www.log
...
2011-06-05 13:38:59.393: starting up
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-0.14 -enable-kvm -m 1024 -smp 2,sockets=2,cores=1,threads=1 -name www -uuid bbc551dc-44ab-b1ba-569c-185a7a6e0d52 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/www.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=readline -rtc base=utc -no-reboot -boot dc -drive file=/var/kvm/images/www.img,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=/root/ubuntu-11.04-server-amd64.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=17,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:11:f5:32,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:0 -k ja -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
char device redirected to /dev/pts/1
kvm: -drive file=/root/ubuntu-11.04-server-amd64.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw: could not open disk image /root/ubuntu-11.04-server-amd64.iso: Permission denied
2011-06-05 13:38:59.505: shutting down

rootディレクトリにISOイメージをおいていたのが原因でした・・・。所有者を一般ユーザに変更してISOイメージを一般ユーザのホームディレクトリに移します。そして再度virt-installコマンドを実行。

# virt-install 
-n www 
-r 1024 
-f /var/kvm/images/www.img 
-s 20 
-v 
--vcpus=2 
--os-type linux 
--os-variant=virtio26 
--network bridge=br0 
--cdrom=/home/noguchi/ubuntu-11.04-server-amd64.iso 
--vnc 
--vncport=5900 
--keymap=jp106

Starting install...
ドメインを作成中...                                               |    0 B     00:00     
WARNING  Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

グラフィカルコンソールに接続できないよって言われてしまいます。
この時点ですでにドメイン定義が作成されてしまっているので強制停止、定義を削除します。

# virsh destroy www
# virsh undefine www

virt-viewerが入ってないよって言われてるのでインストール。

$ sudo aptitude -y install virt-viewer

どう頑張ってもUltraVNCで接続できません。ここまでずっとSSHでホストOSに接続して作業しいています。

それらしいパッケージを探してみる。vnc4serverが入ってないからかもしれない。

$ sudo aptitude -y install vnc4server

動かない!cannot open displayとか出て動きません。何度も何度も強制停止、定義削除。

GNOME導入

仕方が無いので最低限のデスクトップ環境をインストール。
サーバーまでてくてく歩いていきます。距離およそ3メートル。

$ sudo aptitude -y install gnome

そしてXサーバーを立ち上げます。

$ startx

懐かしいチープなデスクトップ環境が出現。

今度こそ!

おお、立ち上がりました。

あとは普通にインストールが進んでいきました。
ネームサーバー用にあえて違うディストリビューションであるCentOSもインストールしてみました。

でもインストールが終了してVNCクライアント閉じてもまだwwwドメインは生きてるはずなのに手元のデスクトップ環境からは仮想マシンの一覧が表示されない・・・。

$ sudo virsh list

でもpingは通るという・・・。
うーん。

仕方が無いのでGNOME端末じゃなくてSSHに切り替えて再度実行。

$ sudo virsh list
 Id 名前               状態
----------------------------------
  5 www                  実行中
  7 ns                   実行中

おっ、ちゃんと動いてる!
あとで試してみたらまたGNOME端末でも動いてました。なぜだろう・・・。

virt-managerのインストール

調子にのってvirt-managerも導入してみました。

$ sudo apt-get install virt-manager
$ service libvirt-bin start
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.26" (uid=1000 pid=13378 comm="start libvirt-bin ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init"))
$ sudo virt-manager 

これでゲストOSの起動、停止、クローンとかできてしまうんですか・・・。すごいですね。

参考

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください