笠原一輝のユビキタス情報局

Windows Vistaで使える仮想化ソフトを試す(後編)



 先週に引き続き、Windows Vistaで利用できる仮想化ソフトウェアについて紹介していきたい。前回は、仮想化技術とソフトウェアの紹介を行なった。今回は、それらを実際にPCにインストールして、ゲストOSを利用する手順、さらにはベンチマークを利用した各仮想化ソフトウェアのパフォーマンスなどについて紹介していきたい。

●仮想化環境導入の4つのステップ

 まず、いきなりの訂正で大変恐縮だが、前回の記事でVirtual PC 2007が64bitのホストOSにもゲストOSに対応していると紹介してしまったが、正しくは「64bitのホストOSに対応している」で、64bitのゲストOSには対応していない。ここにお詫びして訂正させていただきたい。

 さて、仮想化ソフトウェアを利用して、ホストOSにゲストOSをインストールする手順は以下のようになっている。

(1)仮想化ソフトウェアのホストOSへのインストール
(2)仮想マシンの作成
(3)ゲストOSのインストール
(4)追加ソフトウェア(ゲストOS用のデバイスドライバなど)のインストール

 特に難しいこともなく、一般のOSのインストールと同様であり、OSのインストールを行なったことがあるユーザーであれば特に問題なくできるだろう。

仮想化ソフトウェアをインストールしたあと、ウィザードを利用して仮想マシンを作成する(画面はVirtual PC 2007)

 仮想化ソフトウェアのインストール後、仮想化ソフトウェアに用意されているウィザードを利用して仮想マシンを作成する。ユーザーが設定するポイントはいくつかあるが、最大のものはインストールするゲストOSの指定、メモリ容量の設定、仮想HDD容量の決定などが主なものだろう。なお、メモリやHDD容量の決定に関しては、現実のPC同様に、性能や使い勝手に大きな影響を与えるので、利用方法に応じて決定するといいだろう。

 仮想HDDは作成すると、実OS上のHDDに1つのファイルとして保存される。ただし、容量は動的に増減するようになっており、50GBの仮想HDDを作成してもいきなり50GBが確保されるのではなく、仮想HDD上のファイルが4GBの場合、ホストOSのHDDには4GBのファイルが保存されることになる。

 仮想マシンが作成できたら、現実のPCの電源を入れるのと同じように仮想マシンの電源を入れ、起動する。すると、現実のマシンと同じようにPOST画面が表示され、次いでOSのブートアップが行なわれる。インストールするゲストOSの物理ディスクを持っている場合には、それを光学ドライブに入れ、仮想化ソフトウェアのメニューで仮想マシンから物理光学ドライブを利用できるように設定すればよい。OSがISO形式のイメージファイルである場合には、それを指定してインストールすることも可能だ。ボリュームライセンスを利用しているユーザーなどで、ISOファイルでダウンロードできるユーザーであれば、いちいちメディアに記録する手間が省けるので、そちらを利用するといいだろう。CDからのブートができれば、あとは通常のPCと同じ手順でOSのインストールを行なえばよい。

ウィザードではインストールするOSやメモリの容量などを設定する
仮想マシンはホストOS上では1つのファイルとして認識される。Virtual PC 2007であれば.vhdの拡張子がつけられている
管理コンソールに仮想マシンが登録されるので、起動スイッチを押して仮想マシンを起動する 物理光学ドライブ上のディスクを利用する場合には光学ドライブを、ISOイメージを利用する場合にはホストOS上にある.isoの拡張子がついてOSのイメージファイルを指定する

 OSのインストールが終わった後には、実マシンでいえばデバイスドライバに相当する追加ソフトウェア(AddcitionsとかAdd-Inなどと英語で呼ばれることも少なくない)を導入する。これには、Windows用のデバイスドライバなどが含まれており、これをインストールすると、マウスポインタやキーボードなどの操作をゲストOSとホストOS間でシームレスに行なうことができるようになる。それまでは、一度ゲストOSの方にポインタを持っていてゲストOS側の操作に切り替えると、そのままではホストOSに戻ることができないのだ。その状態でゲストOSからホストOSへ操作を切り替えるには、キーボードの右側のAltキーや、右側のAlt+Ctrlなどを押すことでホストOSへ戻ることが可能だ。

ゲストOSのインストールが完了したら、仮想化ソフトウェアが用意する追加ファイルをインストールする。インストールが完了したら再起動すれば、完了。あとは好みのソフトウェアなどをインストールして利用する

●パフォーマンスではVMwareが一歩リード

 それでは、各仮想化ソフトウェアの仮想マシン上に走るWindows XPに対して各種のベンチマークテストをインストールして、その性能をチェックしてみよう。今回は、Windows Vista Ultimate上に、Windows XP Professional ServicePack2をインストールし、CineBench 2003、TMPGEnc XPRESS 4を利用したエンコードテスト、PCMark05 v1.2.0の3つのベンチマークをインストールして計測してみた。

 その結果はグラフ1〜4の通りだ。

【グラフ1】CineBench2003
【グラフ2】TMPGEnc Xpress 4エンコードフレームレート(fps)
【グラフ3】PCMark05/CPU
【グラフ4】PCMark05/HDD関連テスト

 結論から言えば、HDDのテストを除く3つのベンチマークではVMware Workstation 6がもっとも優秀な結果を残した。CineBench 2003、TMPGEnc XPRESS 4、PCMark06 CPUのいずれもCPUの処理能力が結果を大きく左右するベンチマークであり、今回取り上げた4つの中で唯一仮想マシンが2プロセッサまでに対応しており、かつマルチスレッドに対応しているという特徴が活かされているということができるだろう。特に、TMPGEnc XPRESS 4では、Vistaネイティブよりも仮想マシンの中のWindows XPの方が速いのだからたいしたものだ(筆者も何かの間違いかと思って5、6回やってみたのだが、いずれも傾向は変わらなかった)。

 だが、HDDへのアクセスでは、決してVMwareが最速というわけではないようだ。HDDアクセスでは、Virtual PC 2007のVirus Scanの項目が異常な数値になっているので、これを除外して考えると、VirtualBoxがもっとも最速という結果だった。HDDアクセス性能は、全体的な体感に大きな影響を与えるため、この点は見逃せないポイントといえる。

 なお、今回はグラフにはしていないが、PCMark05の3D周りのテストが動作したのはVMware Workstationだけだった。ただ、性能的には1fpsなどとあまりみるべきものがなかったので、前回も指摘したようにやはりまだまだ試験段階と考えた方が良いようだ。

●AMD-V、VTなどの実装は性能を発揮するに至らず

 また、すでにAMD、Intel両社のCPUには、AMD-V、VT-xと呼ばれる仮想化用の新しい命令が実装されている。こうした仮想化用の新命令が、仮想化ソフトウェアの環境にどのような影響を与えるのかを併せてチェックしていきたい。

 こうしたCPUに搭載されている仮想化ソフトウェア用の命令は、大きく言うと以下のようなロジックで動作している。いわゆるx86系のプロセッサには、ソフトウェアの特権モード(要するに、そのソフトウェアの重要度を示すと考えればわかりやすい)として、リングという概念が設けられている。x86系のプロセッサではリング0、リング1、リング2、リング3までの特権モードが設けられており、リング0でOSなどの基本ソフトが、リング3でアプリケーションソフトウェアが割り当てられている。基本的に数字が大きいリングから小さなリングへのアクセスは許可されておらず、OSなどの基本ソフトウェアを安定して走らせることができる。

 しかし、問題は仮想ソフトウェアの場合、仮想化ソフトウェア自体はリング3で動作しており、そのままではゲストOSを走らせることができない。そこで、仮想マシンの中の仮想モニター(VMM)がゲストOSに対して仮想的にリング0を作りだし、ゲストOSを実行させている。このため、仮想マシンの中にあるVMMが、OSがリング0にいると思って実行しようとする命令セットをリング3にある仮想マシンに対して命令を翻訳して伝えるのだ。しかし、それだとどうしても翻訳のオーバーヘッドがでてしまうので、それを限りなくネイティブの状態に近くゲストOSの命令を直接実行しようというのが、AMD-VやVT-xなどの役目となっている。つらつらと述べてきたが、すごく話を簡単に言ってしまえば、仮想化ソフトウェアでCPUの性能をアクセラレーションするもの、それがAMD-VであるVTーxであると考えればわかりやすいだろうか。

 こうしたAMD-V、VT-xは追加の命令セットの形になっており、仮想化ソフトウェアがこれらの命令セットを利用することで、より高速にゲストOSが命令を実行することができるようになるのだ。なお、AMD-V、VT-xのいずれも上記で説明したような仕組みを採用しているが、命令セットの定義そのものは異なっている。このため、仮想化ソフトウェアのベンダはAMD-V、VT-xの両方に対応する必要があり、前回の記事でも触れたように、両方に対応しているもの、VT-xのみに対応しているものなど、仮想化ソフトウェアで対応が分かれている。

 そこで、今回はAMD-V、VT-xの両方の環境を利用して、実際こうした命令セットで現状でどの程度メリットがあるのかチェックしてみることにした。VT-x環境として利用したマザーボードのIntel DP965LTにはBIOSセットアップでVT-xをON、OFFするスイッチが用意されており、これを利用してVT有効環境とVT無効環境を作りだしてテストを実行した。なお、VTの有効無効は、スイッチを切り替えただけでは切り替わらない。必ず一度電源を落としてPCをコールドスタートさせる必要があるので、この点は注意したい。AMDのFOXCONN C51XEに関してはBIOSレベルでAMD-VのON、OFFスイッチは用意されていなかったので、ソフトウェア側にAMD-V/VT-xのON、OFFを切り替えるスイッチが用意されているVirtual PC 2007を利用した。

 なお、今回のテストには、VT-xのテストにはCore 2 Duo E6700(2.67GHz)を、AMD-VのテストにはAthlon 64 X2 4800+(2.4GHz)を利用した。いずれも手元にあったプロセッサを利用したもので、AMDの側は最上位SKUではなく、HDDなどは両環境で異なっているなど異なる点があるため、VT-xとAMD-Vの直接の比較を意図したものではないことをあらかじめお断りしておく。

【グラフ5】VT環境下でのCineBench2003
【グラフ6】VT環境下でのTMPGEnc Xpress 4エンコードフレームレート(fps)
【グラフ7】VT環境下でのPCMark05/CPU
【グラフ8】AMD-V環境下でのCineBench2003
【グラフ9】AMD-V環境下でのTMPGEnc Xpress 4エンコードフレームレート(fps)

 結果は見てわかるように、VT-xでもAMD-Vでも有効にしない方が速いという結果になっている。この結果だけを見るならば、どちらも今のところ意味がないとしかいいようがない。

 こうした結果について仮想化技術に詳しいエンジニアなどに取材したところ、一様に「現在の仮想化ソフトウェアでの新命令セットのサポートは始まったばかりで、最適化が進んでいないのが現状。今後最初から仮想化命令をサポートした仮想化ソフトウェアが登場すれば、性能でも大きな差がでるはず」と指摘している。つまり、今のところ初期段階で、AMD-VなりVT-xを生かすところまでいっていないというのだ。実際、VMware Workstationの結果からもわかるように、優秀な仮想化ソフトウェアはAMD-V/VT-xがなくてもホストOSにかなり近い処理能力を実現しており、ONにすることでそれらとの整合性がうまくとれないということなのかもしれない。

 ゲストOSがCPU命令を実行する際のオーバーヘッドを軽減するという仮想化命令のコンセプトを考えれば、ソフトウェア側のサポートが進めばメリットが出てくるのは明らかだが、今の段階ではまだまだ初期段階で、なかなかメリットを見いだしにくい、そういうことだろう。もっとも、こうした例は、新しい命令セットなどが登場したときにはよくあることで、今後ソフトウェア側のサポートがより進めば徐々に解決されていくのではないだろうか。

●コンシューマだって仮想化ソフトウェアを利用するメリットはある

 さて、2回に渡りWindows Vistaで利用できる仮想化ソフトウェアについて色々と紹介してきた。では、こうした仮想化ソフトウェア、実際にはどのように使っていけばいいのだろうか。

 ベンチマークの結果からもわかるように、HDD性能に関しては、やはりホストOSに比べると若干落ちるというのは事実だ。従って、体感速度は、やはりゲストOSはホストOSに比べて1段階も、2段階も落ちるというのが正直な感想だ。ただし、CPUの処理能力に関しては、VMware Workstationの例でわかるように、ホストOSに負けないレベルに達してきている、というのが現状だといえる。また、前回も指摘したように、3Dグラフィックスのサポートはほとんどないという現状でVistaのWindows Aeroも使えないなど、やはりゲストOSでは若干の制限がつきまとうことは事実だろう。従って、ゲストOSの環境をユーザーの一般的な環境として使いこなすというのは、ちょっと厳しいと思う。

 だから、現在仮想化ソフトウェアは主にサーバーの仮想化に利用されることが多い。サーバー環境であれば3Dは必要ないし、何はともあれ重要なのはCPUの処理能力だからだ。HDDの速度も、物理HDDをRAIDにするなどして性能を向上するという方法もある。

 では、コンシューマユーザーには関係のない話なのかといえば、筆者はそうではないと思う。今の段階でも以下のような使い方が考えられるからだ。

(1)新しいOSでは動かないようなソフトウェアを利用する

 すでに説明したように、3DアクセラレーションやTVチューナなど仮想マシンではサポートされていないハードウェアを利用するアプリケーションは無理だが、それ以外のアプリケーションであればゲストOSできちんと動作する。Vistaでは動作しないソフトウェアをゲストOSのWindows XPで走らせるという使い方が考えられる。たとえば、IntelのICHシリーズ用のRAID/AHCI用のF6ドライバフロッピーディスクを作成するツールは、そのままではVistaでは動作しない。そうした時に仮想マシン上のゲストOSにWindows Meをインストールし、そこから実行した結果、無事作成することができた。

(2)自分の環境を持ち歩いて出先のPCなどで利用する

 PCを持ち歩くのはなかなか大変な作業だが、仮想マシン上のゲストOSは、ホストOS上に1つのファイルとして存在しているので、それを持ち歩くということは可能だ。例えば、筆者は自分の環境で作成したXPの仮想マシンをiPodのHDDに入れて持ち運んでいる。出張時などに出先でノートPCが壊れるというのはあまり考えたくない事態だが、実際ないとは言い切れない。これまでは複数台のPCを持ち歩いていたのだが、それぞれにACアダプタやバッテリなどを持ち歩かないといけないことを考えると結構面倒くさい。

 しかし、最近ではそうした出先にも結構PCがあることが多い。例えば、筆者のような仕事をしていると、イベントのプレスルームにPCが用意されていて、それを自由に利用して作業をできるようになっていることが多い。海外の場合は、もちろん英語OSなのでこれまではあまり利用してこなかったのだが、Virtual PC 2007のバイナリと自分の環境のイメージファイルを持ち歩けば、万事解決ということに気がついて最近ではメインのノートPCが壊れたときにセカンダリとしてアテにしている。もっとも今のところはそういうことになったことはないのだが。筆者のような仕事でなくとも、出張先にPCがありそれを仮に使うことがあるというのは最近珍しくないのではないだろうか。そうした時にVirtual PCとイメージを持っていく、というのは使える方法だと思う。

あらかじめゲストOSをインストールしたイメージファイル(.vhd)を持ち歩けばいざという時に出先の借り物PCでも自分の環境で作業ができる

(3)セキュリティに危ないソフトウェアを隔離された環境で利用する

 筆者のような仕事をしていると、これって本当に大丈夫なのか? というセキュリティ的に不安があるソフトウェアをテストすることも少なくない。これまで、そうした時には、1台マシンを組み立てて、そこにインストールしていたのだが、ほとんど使わないし、電気代もかかるしあまりいいことがない。

 そこで、最近では仮想化ソフトウェアを利用してゲストOS上で走らせている。ゲストOSとホストOSでファイルを共有する機能を確実にOFFにしておけば、ゲストOSがウィルスに感染されても、そのゲストOSのイメージを削除してしまえば万事解決、ということで、セキュリティ的には最高の環境といえるのではないだろうか。もっとも、ネットワークを媒介として広がるワームやウィルスの場合、もちろん最強ではないので、ネットワークに接続されている各マシンのファイアウォールなどは適切に設定されている必要があるのは言うまでもない。

 ここ1、2年、自宅のPCにWinnyを入れてしまって、そこから個人情報などが流出して大騒ぎというニュースをよく見るが、その人たちも多分こうした仮想化ソフトウェアを利用していればかなり防げたんじゃないかなーと思ったりするのだが……。

●今後はチップセットやI/Oを含めた仮想化技術が実際の製品に搭載される

 今後の仮想化技術はどのようになっていくのだろうか。1つに見えている方向性として、ハードウェアレベルでの仮想化技術の実装がどんどん進んでいくということだ。現時点では、ハードウェアレベルで仮想化技術に対応しているのはCPUぐらいで、その他のハードウェアに関しての導入は進んでいないが、2007年の後半あたりにはチップセットの仮想化やEthernetコントローラなどのI/Oデバイスの仮想化技術が実際の製品になって登場する可能性が高い。

 チップセットの仮想化技術は、AMD I/O Virtualization(AMD-IOV)、IntelのVT-dなどすでに概要が発表されており、2007年の後半には対応製品が登場する予定であるという。OEMメーカー筋の情報によれば、Intelが2007年の第3四半期に製品投入を計画している、開発コードネーム“Barelake”には、このVT-dの機能が搭載されるという。搭載されるのは、企業向けPCのブランドであるvPro向けのSKUとして投入されるQ35という製品で、Intel VT for Directed I/Oとして搭載されるという。

 I/Oデバイスの仮想化は、PCI-SIGで現在策定が進められており、IOVという形でスペックが決定され、これを利用することでPCI Expressデバイスの仮想化が可能になるという。これにより、例えば1つのEthernetコントローラで、2つのゲストOSが効率よくネットワークの機能を利用したりなどが可能になる。

 おそらく将来的にはGPUの仮想化もできるようになるだろう。すでに、GPUは仮想化を簡単にできるほど、複数のデバイスを統合している。シェーダエンジンは、モジュール化されており、ディスプレイ出力はすでに2系統搭載されている。ドライバレベルでは、DirectX 10.1から仮想化に対応することが明らかにされており、こちらも時間の問題で仮想化に対応できるようになるのではないだろうか。

 こうしたことができるようになると、コンシューマ向けの製品に仮想化技術を利用するという動きも本格化してくるだろう。筆者は最近コンシューマ向けの応用用途として、この例を使っているのだが、たとえば“スゴ録VAIO”のようなソリューションが仮想化技術を利用することで、1つのハードウェアで実現できるようになるはずだ。

 要するに、1つのx86システム上でLinuxとWindowsを走らせ、Linux側で決して落ちない家電ライクなフィックスされたデバイスとして“スゴ録”を実現し、Windows側ではプログラマビリティを備えたPC環境としてVAIOを実現するわけだ。これが実現できれば、それぞれ別々に購入するよりも消費電力を抑えられるし、かつそれぞれの良いところが使える。家電は安定した環境を実現し、PCの側はこれまで通り柔軟なWindowsとして利用できるわけだ。

 そうした未来を考えると、コンシューマユーザーにとっても仮想化技術は要注目だと思う。

□マイクロソフトのホームページ
http://www.microsoft.com/ja/jp/default.aspx
□Virtual PC 2007の製品情報
http://www.microsoft.com/japan/windows/virtualpc/default.mspx
□VMWareのホームページ(英文)
http://www.vmware.com/
□VMWare Workstationの製品情報(英文)
http://www.vmware.com/products/ws/
□Parallelsのホームページ(英文)
http://www.parallels.com/
□Parallels Workstationの製品情報(英文)
http://www.parallels.com/en/products/workstation/
□InnoTekのホームページ(英文)
http://www.innotek.de/index.php?lang=en
□VirtualBoxのホームページ(英文)
http://www.virtualbox.org/
□関連記事
【3月8日】【笠原】Windows Vistaで使える仮想化ソフトを試す(前編)
http://pc.watch.impress.co.jp/docs/2007/0308/ubiq176.htm
【2月9日】【元麻布】Mac用仮想PCソフト「Parallels」RC2を試す
http://pc.watch.impress.co.jp/docs/2007/0209/hot467.htm
【2006年5月26日】【WinHEC】Longhorn Serverとハードウェア
http://pc.watch.impress.co.jp/docs/2006/0526/winhec03.htm

バックナンバー

(2007年3月15日)

[Reported by 笠原一輝]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp ご質問に対して、個別にご回答はいたしません

Copyright (c) 2007 Impress Watch Corporation, an Impress Group company. All rights reserved.