本気で使いたいユーザのためのLinux KVM活用法

第2回 Linux KVMで動かすWindows

この記事を読むのに必要な時間:およそ 3 分

仮想ディスクのVirtio化

仮想ディスクのVirtio化は,手順としてはやや手間がかかります。Virtio用のデバイスドライバをインストールするにはデバイスを認識させる必要がありますが,仮想マシンに最初に作成した仮想ディスクが1つしか付いていないと,ドライバのインストールを行うことができません。まずはダミーのvirtio仮想ディスクを仮想マシンに追加します。

停止中の仮想マシンに新しいストレージデバイスを追加し,⁠装置タイプ」「Virtio Disk」を選択します。

図4 仮想マシンにストレージデバイスを追加。ダミーで作成するのであれば,容量は適当な値で構わない。

図4 仮想マシンにストレージデバイスを追加。ダミーで作成するのであれば,容量は適当な値で構わない。

ゲストOSを起動すると新しいデバイスとしてSCSIコントローラが認識されるので,ダウンロードしておいたデバイスドライバをインストールします。

こちらもOSの種類によってフォルダが分かれています。曖昧に選択すると,使用できないドライバがインストールされてしまい動作しないので,その場合にはデバイスとドライバファイルを削除してからインストールし直す必要がありました。

図5 Virtioは仮想ディスク+SCSIコントローラで構成されているので,まずSCSIコントローラのデバイスドライバをインストールする。

図5 Virtioは仮想ディスク+SCSIコントローラで構成されているので,まずSCSIコントローラのデバイスドライバをインストールする。

正常にインストールが終了すると,記憶域コントローラ「Red Hat VirtIO SCSI controller」と,ディスクドライブに「Red Hat VirtIO SCSI Disk Device」が追加されているはずです。ディスクは,別途NTFSなどでフォーマットすれば使用可能になります。

図6 デバイスドライバが正常に動作している状態のデバイスマネージャ画面。ネットワークとストレージでVirtioが有効になっている。

図6 デバイスドライバが正常に動作している状態のデバイスマネージャ画面。ネットワークとストレージでVirtioが有効になっている。

起動ディスクもVirtio化できます。仮想マシンマネージャーで,起動ディスクとして使用している仮想ディスクを一旦削除し,あらためてVirtio Diskとして仮想ディスクイメージを登録し直します。その時,デバイス名が「vda」などvdで始まるデバイス名に変更されることを確認してください。

ただし,64ビット版Windowsのデバイスドライバへのデジタル署名の問題が解決できていない場合,起動時に毎回デジタル署名強制の無効化を行わなければならないので,実用上はあまり現実的ではないかもしれません。

ベンチマークによる性能検証

Virtio化を行うことで,どの程度速度が向上するのか,ベンチマークテストを行ってみました。

環境

HP ML350 G5

CPUXeon E5110(1.6GHz × 2core)
メモリ4Gバイト
HDDSATA 250Gバイト7200rpm × 4(RAID 1+0)
ホストOSCentOS 5.4
ゲストOSWindows Server 2008 Standard Edition(64ビット版)

ベンチマーク方法

Mac OS XクライアントからゲストOSのWindowsファイル共有に接続し,ddコマンドで100Mバイトと1000Mバイトのファイルを作成する際のネットワーク転送速度(バイト/秒)を計測します。5回計測し,最高値と最低値を除いた3回を結果として採用します。測定は,Virtio化を行っていない状態とネットワークデバイスをVirtio化した状態,そして仮想ディスクもVirtio化した状態の3種類を計測しています。また,ハードウェアそのものの性能を測定するために,Linux上でSambaを動かして同様に性能を測定しています。

ベンチマークテスト結果

表1 ベンチマークテストの結果

100Mバイト

 非VirtioNICのみVirtio両方Virtioホスト Linux
19,768,45618,448,46623,060,46050,018,009
211,184,35519,277,37723,868,97050,424,430
311,323,77619,445,26124,727,08450,502,244
平均10,758,86219,057,03523,885,50550,314,894
比率100%177.1%222.0%467.7%

画像


1000Mバイト

 非VirtioNICのみVirtio両方Virtioホスト Linux
19,442,37514,776,96014,884,23332,380,259
29,824,46014,979,75715,104,56432,838,428
310,307,21515,478,83615,317,78334,263,982
平均9,858,01715,078,51815,102,19333,160,890
比率100%153.0%153.2%336.4%

画像

測定結果の評価

まず100Mバイト転送の結果ですが,Virtio化する前に比べてネットワークデバイスをVirtio化することで,速度が約1.8倍に向上しています。デフォルトの状態が100Mbpsに制限されていますが,ギガビット化されることによる速度向上と考えられます。

さらに仮想ディスクをVirtio化することで,デフォルトの状態に比べて約2.2倍の性能となりました。ストレージの書き込みが高速化した分,さらに性能が向上しています。

次に1000Mバイトの結果ですが,Virtio化する前の性能は100Mバイトの時とあまり変わりません。そしてVirtio化することでそれぞれ約1.5倍程度の性能向上となっており,特にストレージをVirtio化しても性能はほとんど向上していません。

どちらの結果も物理性能の半分程度となっており,ネットワーク帯域よりも,物理的なストレージ性能にボトルネックがあるようです。どのような仮想化を利用する場合でも同じですが,書き込み性能はボトルネックになりやすいポイントです。できるだけ書き込みの量を減らすか,より高性能なストレージを利用するなどの工夫が必要となります。

まとめ

Linux KVMでは,ゲストOSは主にLinuxでの利用が中心になると考えられますが,Windowsも入れた混在環境も珍しくはないでしょう。それほど高いパフォーマンスが必要ないのであれば,Virtioのような準仮想化による高速化は必要ありませんが,あと少しの性能が欲しい時には有効だと思われます。

ただし,他の環境に比べると,ややドライバのインストールにWindows環境への「慣れ」のようなものが必要に思います。また,64ビット版Windows自体の制限にはなりますが,デジタル署名の強制は重要な問題ですので,32ビット版を使うか(Windows Server 2008 R2は64ビット版しかない)⁠デジタル署名されたドライバを用意する必要があるでしょう。

著者プロフィール

宮原徹(みやはらとおる)

「仮想化技術に特化した専門家集団」日本仮想化技術株式会社 代表取締役社長兼CEO。どんなに難しい案件でもこなせる,頼れる会社を目指して,日々研鑽中。仮想化技術の普及のために全国を飛び回る毎日です。

コメント

  • ASRock Onborad Raid とUEFIを使えるKVMについて

    はじめまして、お世話になります。米田 優です。
     本気で使いたいユーザのためのLinux KVM活用法の宮原徹氏に、最近の大容量HDDに対応したUEFI Biosと安価なOnbord  Raidを利用したKVMの使い方を教わりたいのですが、どうすればよいでしょうか?
     よろしくお願い申し上げます。

    Commented : #1  米田 優 (2013/02/15, 23:01)

コメントの記入