KVM+Windowsを高速化するVirtio
Linux KVM(以下KVM)は,Linuxカーネルに組み込まれた仮想化環境ですが,KVM上の仮想マシンではLinuxだけでなくWindowsも動作させることができます。これはKVMが実現している仮想マシンが「完全仮想化」であるためです。
完全仮想化はOSに修正が必要ない点がメリットですが,I/Oなどの速度面ではOSに修正を加える「準仮想化」が有利な場合があります。そこで,I/Oを司るデバイスドライバを準仮想化で動作させることで性能を向上させる部分的な準仮想化の方式が,現在の主流となっています。このデバイスドライバを「パラバーチャル(準仮想化)ドライバ」と呼びます。
KVMでは,I/Oの準仮想化方式として「Virtio」が採用されています。VirtioはVirtualBoxなどでも採用されている実装になっています。今回は,VirtioのWindows用ドライバをインストールして動作させてみる手順を解説します。
- Virtio-KVM
- URL:http://www.linux-kvm.org/page/Virtio
今回の環境は,CentOS 5.4 x86_64版,ゲストOSはWindows Server 2008 64ビット版を選択しました。環境の設定方法およびゲストOSのインストールは,以前の記事で説明した通りです。
64ビット版Windowsとドライバ署名
Windows Server 2008やWindows Vista,Windows 7などの64ビット版は,デバイスドライバへのデジタル署名が必要となります。しかし,今回ダウンロードして利用したlinux-kvm.orgで配布されているデバイスドライバはデジタル署名がされていないため,そのままでは利用することができません。インストールできたように見えても,ドライバがロードされないため,デバイスは利用不可になっています。
今回は動作確認を行う目的のため,起動直後にF8キーを押し「デジタル署名の強制を無効にする」を選択して起動することでこの問題を回避しました。継続して64ビット版WindowsをKVM上の仮想マシンで使用する場合には,署名済みのドライバを入手するか,自分自身でドライバに署名を行うなどの作業が必要となります。
Windows用Virtioドライバの入手
ドライバはLinux KVMのWebサイトからダウンロードできます。ここで配布されているドライバはZIPアーカイブ形式なので,ゲストOSでダウンロードするか,別途コピーしてください。ISOイメージでの配布も別サイトで行われているので,ISOイメージを仮想マシンにマウントしてインストールすることもできます。
ネットワーク用とストレージ用の2種類が配布されているので,必要に応じてダウンロードしてください。他の仮想化ソフトウェアのように,ドライバのインストーラは付属していないので,個別に手動でインストールする必要があります。
ネットワークデバイスのVirtio化
ネットワークデバイスのVirtio化は比較的簡単です。停止中の仮想マシンに新しいネットワークデバイスを追加し,「デバイスモデル」は「virtio」を選択します。
ゲストOSを起動すると新しいデバイスとして認識されるので,ダウンロードしておいたデバイスドライバをWindowsの通常の手順でインストールします。指定するフォルダはOSのバージョンや32ビット,64ビットで分かれていますので注意してください。
正常にインストールが終了すると,ネットワークデバイス「Red Hat VirtIO Ethernet Adapter」が追加されているはずです。今まで使用していたネットワークデバイスは削除しても良いでしょう。

