Browse Tag: kvm

Ubuntu で KVM をアンインストールする方法

Ubuntu で KVM をアンインストールしないといけない場面があったので、その方法をメモしておきます。


$ sudo rmmod kvm-intel kvm
$ sudo vi /etc/modprobe.d/blacklist-kvm.conf
blacklist kvm
blacklist kvm-intel
$ sudo apt-get purge ubuntu-virt-server libvirt-bin qemu-kvm kvm-ipxe libvirt-bin virtinst python-koan
$ sudo rm -fr /var/lib/libvirt/qemu
$ sudo rm -fr /etc/libvirt/

こんな感じで大丈夫だと思います。
可能なら、BIOS で Intel VT-x を無効にしておいてもいいかもしれませんね。

某クラウドで Xen と KVM のベンチマークを計測してみた

某クラウドでは、Xen と KVM を選択することができるので、ちょうどよい機会に恵まれたので Xen と KVM のベンチマークを計測してみました。

計測に使用したツールは、UnixBench というツールです。

仮想サーバの、CPU やメモリはまったく同じ設定をしました。OS は、CentOS 5.8 x86_64 で、カーネルのバージョンが違っているのは Xen と KVM の違いによるものです。

詳細の結果は、gist にまとめておきました。

System Benchmarks Index Score でいうと、
KVM は 2786.6 だったのに対して、
Xen は 1155.3 だったので、約2倍くらいベンチマーク数値としては違っていました。

パフォーマンスの面からみると、某クラウドでは KVM を使うのがよいかなぁと思いました。

ちゃんちゃん。

KVM virtio ベンチマーク

KVM で virtio を使わなかったときと使ったときのベンチマークを、カジュアルに計測してみました。ベンチマークは、virtio_net は Using VirtIO NIC – KVM と同じ内容もの、virtio_disk は hdparm で計測してみました。

環境は、Host/Guest ともに CentOS 5.6 x86_64。サーバは、モダンなもので、同じネットワーク上にあるホストから Guest の CentOS 5.6 に iperf を使ってベンチマークを計測してみました。

virtio_net


$ iperf -c -w 65536 -p 12345 -t 60
virtio_net なし
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.1 sec 1023 MBytes 143 Mbits/sec

virtio_net あり
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-60.0 sec 6.57 GBytes 940 Mbits/sec

$ iperf -c -w 65536 -p 12345 -t 60 -d
virtio_net なし
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-60.0 sec 2.66 GBytes 381 Mbits/sec
[ 5] 0.0-60.0 sec 280 MBytes 39.1 Mbits/sec

virtio_net あり
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-60.0 sec 4.98 GBytes 713 Mbits/sec
[ 4] 0.0-60.0 sec 5.66 GBytes 810 Mbits/sec

$ iperf -c -w 65536 -p 12345 -t 60 -P 4
virtio_net なし
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-60.0 sec 1021 MBytes 143 Mbits/sec
[ 6] 0.0-60.0 sec 944 MBytes 132 Mbits/sec
[ 4] 0.0-60.0 sec 771 MBytes 108 Mbits/sec
[ 3] 0.0-60.1 sec 851 MBytes 119 Mbits/sec
[SUM] 0.0-60.1 sec 3.50 GBytes 501 Mbits/sec

virtio_net あり
[ ID] Interval Transfer Bandwidth
[ 6] 0.0-60.0 sec 1.65 GBytes 236 Mbits/sec
[ 3] 0.0-60.0 sec 1.64 GBytes 234 Mbits/sec
[ 5] 0.0-60.0 sec 1.65 GBytes 236 Mbits/sec
[ 4] 0.0-60.0 sec 1.64 GBytes 234 Mbits/sec
[SUM] 0.0-60.0 sec 6.57 GBytes 941 Mbits/sec

すばらしい結果です、virtio_net がある場合とない場合とではかなりネットワークのパフォーマンスが違ってきます。これは、virtio_net を設定するのは必須です。

ここで、あとから virtio_net に切り替える方法を紹介してきます。

1. /etc/libvirt/qemu/.xml を編集して、interface 部分にを追加します。例えば、次のような感じで設定を追加します
<interface type=’bridge’>
<mac address=’xx:xx:xx:xx:xx:xx’/>
<source bridge=’br0’/>
<model type=’virtio’/>
</interface>

2. virsh define /etc/libvirt/qemu/.xml を実行して、設定を反映させます

3. guest を再起動します、再起動すると /etc/sysconfig/network-script/ifcfg-eth0.bak に置き換えられているため、virsh console でコンソールから eth0 の設定ファイルを元に戻して network サービスを再起動します

virtio_net の効果ですが、virtio_net がない場合、かなり drop パケットや nagios プラグインの check_ntp_time のチェックで「Offset Unknown」というエラーが頻発していましたが、virtio_net を使ったあとは drop パケット 0、check_ntp_time のチェックも問題がなくなりました。

KVM 環境において、virtio_net は必須かと思います。

この他にも、vhost_net を組み込むことで、ネットワークのパフォーマンスがさらに向上するらしいのですが、CentOS 5.6 x86_64 の環境にも組み込まれていませんでした。。。qemu-kvm 0.13.0 以降からの用です。

次の virtio_disk。

virtio_disk なし
# /sbin/hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads: 330 MB in 3.02 seconds = 109.41 MB/sec

virtio_disk あり
# /sbin/hdparm -t /dev/vda
/dev/vda:
Timing buffered disk reads: 354 MB in 3.01 seconds = 117.47 MB/sec

ディスクの読み込みパフォーマンスのみチェックしましたが、virtio_net よりは効果は低いものの、virtio_disk を組み込むとパフォーマンスが向上しました。
virtio_disk も必須だと思いますが、virtio_disk をあとから組み込む場合はハードディスクのブロックデバイスが /dev/vda に変わってしまうので、頑張ればできるかと思いますが、virtio_disk を使いたい場合は再セットアップした方がいいでしょう。

virt_install を使って、virtio を組み込む方法ですが、 –disk オプションに bus=virtio を追加するだけで、virtio_disk、virtio_net の両方を使うことができます。

別途、KVM を使った VM の作り方、設定方法、監視周りなどのエントリをする予定です!

Enjoy, KVM!