Ubuntu上でvmbuilderで作成した仮想マシン(Ubuntu 9.04 JeOS版)をVirtIO化してみた

先日KVM上で動くubuntu9.04をvirtio化する時にいささか手間取ったのでその過程をまとめてみた。

virtioとは

詳しくは脚注先のサイトを見ていただきたいが、IOの準仮想化と呼ばれる技術でHDDやNICを高速化可能と言う代物らしいです。*1

ただし脚注先のサイトの手法はQEMUを直接操作する方法なのでvirt-managerやvirshなどを利用した方法では利用できない。

ゲストOSの/etc/fstabの修正

ゲストOSがubunutu9.04だとfstabのデバイスしてがUUID指定では無いのでUUID指定に修正しておく。
この作業をしていないとvirtio化以後ゲストOSがHDDの読み込みが出来なくなる。*2

UUIDは下記のコマンドで調べた。
ls -l /dev/disk/by-uuid

/etc/fstab

# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
UUID=d6fcc287-cf34-4eea-a8b8-6e866ae1debd / ext3 relatime,errors=remount-ro 0 1
UUID=4aa5c64e-88ff-4c4b-96fb-817eeb215f5c /boot ext3 relatime 0 2
UUID=2fafa867-7cea-4083-b0dc-ea1f48123a40 none swap sw 0 0

VM設定XMLの修正

現在ubunutu上ではVM作成パッケージとしてubuntu-vm-builderとpython-vm-builderの二つがあります。
ただし8.10版のJeOSインストールマニュアルではubuntu-vm-builderを9.04版ではpython-vm-builderを使用しているので、
今回はpython-vm-builderを利用した場合を取り上げます。


vmbuilderコマンドで作成したVMの設定ファイルは/etc/libvirt/qemu/内に存在している。
virtio化するには設定ファイルを書き変えればよい。*3


 
 


 
 
 

上記は注釈先サイトから引用した設定ファイルの一部である。
赤の部分はHDDのvirtio化を指定しており書き換えが必要で、青の部分はNICのvirtio化を指定しており追加が必要である。
以上のように修正を行い、下記のコマンドなどでKVMに設定ファイルを読み込ませれば良い

virsh define ドメイン