Ubuntu 10.04 で KVM の vhost-net を試す

またまたインフラ屋の山本です(プロジェクトマネージャーだったり、CTOだったような気もします)。こんにちは。

今日は先日リリースされた Ubuntu 10.04 LTS で KVM の最新機能を試そうというお話です。

解説する必要はさらさら感じませんが、KVMというのは RedHat さん一押しの Linux カーネルに標準搭載されている仮想マシン支援機構です。実際には、QEMU というシステムエミュレーターと組み合わせて使います。最近ではその上にさらに libvirt という便利ツールで仮想マシンを構築するのが普通だと思います。

KVMを実際に評価すると、VMware と比較してまだまだ残念なところがあります。性能面では、I/O性能が良く言われているところでしょう。で、ネットワークの I/O 性能を改善する vhost-net というカーネルモジュールが開発されていて、Linux 2.6.34 でメインラインに取り込まれています。QEMUでも対応が必要で、これはまだリリース前の開発版です。

で、本題。Ubuntu 10.04 は Linux 2.6.32 ですので、まだ vhost-net が使えません。正確にはホスト側が対応必要で、ゲスト側の virtio ドライバは 2.6.31 以降なら大丈夫という状況です。Ubuntu 10.10 を待ってから評価する手もありますけど、今どうしても試してみたいとう方は以下のようにしてみるとできるかもしれません。

1.Linux 2.6.34 の Ubuntu パッケージを持ってくる
      http://jp.archive.ubuntu.com/ubuntu/pool/main/l/linux/ に行って、
      linux-image-2.6.34-5-server_2.6.34-5.14_amd64.deb を拾ってきます。
      Ubuntu 10.10 α1 のパッケージだと思いますけど、10.04 にインストールできるので気にしない ;)

2.VMホストに linux-image-2.6.34-*.deb をインストールする
     # dpkg -i linux-image-2.6.34-5-server_2.6.34-5.14_amd64.deb
     # reboot

3.リブート後に vhost-net カーネルモジュールを読み込んでみる
     # modprobe vhost-net

4.QEMU 開発版を git clone して持ってくる
     $ sudo apt-get install git-core
     $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/mst/qemu-kvm.git vhost

5.QEMUをコンパイルする
     $ sudo apt-get install gcc zlib1g-dev libpci-dev libaio-dev uuid-dev ncurses-dev
     $ ./configure --enable-io-thread
     $ make && sudo make install
     コンパイルエラーが出たら適当に直してください :)

6.新しい QEMU でゲストVMを立ち上げてみる
     $ sudo /usr/local/bin/qemu-system-x86_64 -enable-kvm -name vm
        -usb -drive file=/path/to/drive.img,if=virtio,index=0,boot=on,cache=none
        -net nic,vlan=0,model=virtio
        -net tap,ifname=your_bridge-tap,vlan=0,script=/your/ifup/script,downscript=/your/ifdown/script,vhost=on

最後のオプションが vhost-net を有効にします。こんなの試したい人は ifup や ifdown をどうすればいいか分かると思うので、そのあたりは省略。libvirt も最新版なら vhost-net が使える場合は自動的に使うようになっているらしいですよ。

--
twitter:ymmt2005