インテル バーチャライゼーション・テクノロジー(以下VT)とは仮想化支援機能のことである。そもそも仮想化とは何かというとコンピュータ資源(CPU、メモリー、ハードディスクなど)物理的な構成に拠らず柔軟に分割、統合することである。(仮想化の説明のみIT用語辞典を引用・一部改変)
簡単に例をあげて説明すると、CPU4コア(CPUの個数は1個、i7などのクアッドコアをイメージしてほしい。)、メモリー16GB、HDD1TBのマシンがあったとする。ここで仮想化ソフトウェア(VMware ESXiやHyper-Vなど)を用いると複数台の仮想マシンに分割することができる。なお分割の際、本来はオーバーヘッド(特にメモリー)を考慮しなければならないのでコンピュータ資源をすべて仮想マシンに割り当てることはできないが説明の都合上オーバーヘッドについては無視する。
ここでは、上記構成の物理マシン1台を仮想マシン4 台に 分割した例である。各マシンの構成は次の通りである。1台目はOSがWindows 7でCPU1コア・HDD300GB・メモリー4GB、2台目はOSがWindows Server 2008でCPU1コア・HDD300GB・メモリー3GB、3台目はOSがUbuntuServerでCPU1コア・HDD100GB・メモリー1GB、4台目はWindows 8でCPU1コア・HDD300GB・メモリー8GBという具合に構成にした。
もちろん、仮想マシンの数を増やしたり各仮想マシンに割り当てる資源を変更したりできるが、安易に資源を割り当てると資源不足でソフトが落ちたり動作が遅くなったりするため注意が必要である。
仮想化は身近なソフトでも使われており一番なじみがある物としてWindows 7のWindows XPモードがある。またVM Player、Virtual PC、Virtual BOX、VM Fusionも仮想化ソフトウェアである。
さて、ここで仮想化支援機能がなくても仮想化は可能かということを考えてみる。答えは可能である。実際XPモードはCPUの仮想化支援機能を必須としていない。では、仮想化支援機能があると何がいいのかということになる。
実は、(ご存知かもしれないが)仮想化支援機能の登場の前から仮想化のソフトは存在していた。しかし、仮想化ソフトウェア(仮想マシンで実行しているOSも含む)がCPUの一部命令を実行するにあたり仮想化支援機能がないとどうしても性能が落ちてしまうという問題があった。仮想化支援機能は仮想化による性能低下を防ぐために搭載された機能である。
今回レビューするCore i7 3770はVTを搭載しておりVTの中でもVT-dを搭載している。もう一つVT-xがあるが下記であわせて説明する。
VT-xは仮想化支援機能の中でも仮想化におけるオーバーヘッド対策のために搭載された機能である。なおAMD社製CPUではVT-xのことをAMD-Vと呼んでいる。
VT-xに対してVT-dはVT-xの機能に加えI/Oの仮想化も含まれている。I/O仮想化によりVT-dではLANボードやGPUカード(ただし、実際は非常に制約があるため利用するのは難しい)が仮想マシンから利用可能となり仮想マシン上でより高度な処理が可能となるなどの恩恵がある。なお、AMD社製CPUではVT-dことをAMD-Viと呼んでいる。
ESXiによる仮想化
ESXiにて仮想化を行いました。
パソコンの構成は下記の通りです。
CPU i7 3770
Mother BOXDQ77MK
Mem 12GB
Storage HDD40GB
HDD160GB
SSD64GB(SATA6G)
Total 264GB
電源 500W
仮想マシンは4台作成しました。
構成は
1台目 UbuntuServer メモリー384MB ディスク30GB 1コア割当
2台目 Windows Server 2008 メモリー2GB ディスク80GB 1コア割当
3台目 Windows Server 2008 R2 メモリー2GB ディスク70GB 1コア割当
4台目 Windows 8 メモリー2GB ディスク50GB 1コア割当
です。
Storageの使用内訳は
HDD40GB→ESXi+UbuntuServer
HDD160GB→Windows Server 2008+Windows Server 2008 R2
SSD64GB→Windows 8
です。
下の画像は実際の動作の様子です。
まずサーバー(今回作ったマシン)側の写真から。
簡単な画面表示でF2キーを押すことでサーバーそのものの最低限の設定が可能です。(仮想マシンの設定はできない。ここで設定できるのはipアドレスの固定設定等の設定のみ。)
次はクライアント側です。
クライアントPCよりESXi上のOSを操作します。
クライアントPCになれるのはWindows機のみです。
これは管理ソフトがWindows用しかないためです。
ちなみにウェブ上や端末からの接続でも設定できるらしいですが、両者ともに設定がわからない(SSLの設定等。あと前者は確か有料機能だったような・・・)ため使用しませんでした。この場合クライアント側のOSの選択肢は増えると思われます。
上図は仮想マシンが同時起動している様子をキャプチャーしました。
が、しかしこの直後中古で買った500GBのHDDがクラッシュorz
購入してすぐだったのでお店で返金してもらい急遽SSDを購入。再度レビューいたします。
ちなみにSSDにした理由は特にありません。
SSDに改装しSSD上にWindows 8、HDD上にWindows Server 2008 R2をインストール中です。
使用状況のキャプチャー写真です。メモリー使用量が高いことがわかります。
CPUも結構使用していますがまだキャパシティーがあります。
上記の状態はWindows Server 2008 R2にSP1を当てていて他のOSは何もしていないときのキャプチャーだったと思います。
なおUbuntuServerが起動していないのはVMware Toolsがインストールできず正確な負荷測定ができないためです。 今までVMware Toolsがインストールされていない状態でも仮想マシンはインターネットに接続できていましたが、今回UbuntuServerのみ調子が悪くインストール時に必要なソフト(gcc) がインストールできず、最終的にVMware Toolsがインストールできませんでした。
さて、せっかくですのでWindows 8のエクスペリエンスインデックスを起動してみました。
エクスペリエンスインデックスを起動するにあたり、VMware Toolsというドライバーの導入とWindows Updateにてすべてのバッチを適用を行いました。ちなみに実際ドライバーを当てなくても全く使用できないことはありませんが、動作がぎこちなかったり付加機能が利用できたりするため普通はインストールします。
エクスペリエンスインデックスの結果について考察です。
プロセッサの値が低いのは1コアしか割当ていないためです。
通常環境でコアをすべて割当てれば7、8ぐらい余裕で出るはずです。
またメモリーも2GBしか割当ていないためスコアが低くなっています。
グラフィックスはVMのドライバーで動作しているため低いのだと考えられます。
ハードディスクのスコアが高いのはSSDを装着しているからですが、仮想マシン上でも8.9と高評価です。多分ですがSSDに関してはほとんどオーバーヘッドはないでしょう。
ちなみにコア4割当、メモリー3GBの結果はこうなりました。
再計測したところメモリーのスコアはあがりましたが、CPUのスコアに変更はありませんでした。
というわけで、ここまではVT-x+ESXiの使用レビューと全く変わりません。
本題はここからです。VT-dを実際に使用します。
上図はマザーボード上のデバイスが表示されています。LANやサウンドなど様々な物が 表示されています。
これらのデバイスを仮想マシンで使用可能にしようというのがVT-dです。
(すごく大雑把な説明です。またVT-dでも使用できない物も含まれています。)
蛇足ですがUSBに関してはVT-xでも仮想マシンから使用可能です。
手元にパーツがないためわかりませんがPCIで増設したUSBはVT-x環境だと使用できないかもしれません。
マザーボード上に元々あるUSB端子に接続されたUSBデバイスは仮想マシンの設定を編集することで仮想マシンに認識することができます。
今回はTVチューナーボードの接続し仮想マシン上に録画サーバーを構築したいと思います。
まず仮想マシンに接続したい機器を選択します。今回は下4つの機器が対象です。
チェックボックスを入れてOKを押すとESXiの再起動が求められますので再起動します。
再起動後、仮想マシンの設定より接続したい機器を選択します。
先ほどチェックボックスを入れた機器を選択します。
これをチェックボックスに入れた機器すべてに対して行います。
そして機器の登録が終わったらOKを押して編集を終了します。
ここで仮想マシンを起動したところ大変なことに・・・
ESXiがダウンしてしまいました。クライアント上ではサーバー(ESXiマシン)に接続できないとエラーが・・・
このとき友人と電話していて紫スクリーンのことを話したところ、この紫スクリーンは「紫式部」と命名されました。
登録台数をかえて再度トライしましたが結局4紫式部(4回すべて紫スクリーン発生)となってしまいました。
※歴史上の偉人、紫式部さんには心よりお詫び申し上げます。
ここで「今回のレビューはここまでです」というと反感を買いそうですのでもう少しトライしてみます。
今回のテレビチューナーはPCI接続ですがいろいろ調べたところ内部的にはUSBでつながっているという記事を見かけました。
画像にはありませんが確かにPCI機器を登録するときUSB Controllerの文字がありました。
つまりUSBで接続するタイプのチューナと変わりがないということです。
(詳しく説明すると今回買ったチューナーはUSB 増設カードにUSB TVチューナーを接続した場合と同じ構成)
となると、先ほどVT-xで書いた「手元にパーツがないためわかりませんがPCIで増設したUSBはVT-x環境だと使用できないかもしれません。」という私の憶測は間違っていて、USBであれば元々のインターフェイスによらず接続できる(チップセット提供のUSBかPCIのUSB Controller提供のUSBかという意味)のではという結論に至りました。
しかし、本当かどうかわからないため試してみます。
まずパススルーの設定を有効にした状態でTVチューナー上のUSBデバイスの接続を試みます。
まずUSBコントローラを追加します。
USB2.0/1.1をサポートする設定にします。
次へを押すと確認画面が出るので問題がなければOKを押します。
次にUSBデバイスを選択しようとしましたが使用不可となっており接続できませんでした。
今度はPCIパススルーを無効にした状態で同じ作業を行います。
パススルーの設定画面でチェックボックスのチェックを外します。
外したらOKを押してESXiを再起動します。
再起動後、仮想マシンの設定よりUSBデバイスの設定を行うと項目が有効になっていました!
USBデバイスを選択します。
設定終了後、OSを見てみると
デバイスマネージャー上に機器が表示されていました。
ここまでくれば通常のTVチューナー設定作業と同じです。
ドライバーを入れます。
ここでピンときた方がいると思いますがこのチューナーはいろいろ楽しめるチューナーです。が、今回は通常環境で使用します。
視聴ソフトをインストールします。
そして視聴ソフトが起動してチャンネル設定ですが動作が今ひとつです。せっかちな私はOK押したりもう一度起動して設定し直したりしました。それでも遅かったので強制終了しようとしたところフリーズしてしまいました。これが新たな悲劇を生むことに・・・
強制終了を実行したところ、Windows 8がクラッシュしてしまいました。
そして再起動してもう一度視聴ソフトを起動したところ「機器が認識できません」とのメッセージが・・・
先ほどのクラッシュでドライバーが飛んだのかと思いドライバーの再インストールを使用としたところ・・・
またもや認識できず・・・
もしかすると仮想マシンの設定が変わったのかと思い設定を見てみると衝撃の事実が・・・
追加したはずのデバイスが見えない・・・
ESXiを再起動したり他の仮想マシンで認識できないか確認したりしましたが結局認識できず・・・
まだ確定ではありませんがTVチューナーボードはだめになってしまったようです。
(おそらくチップ制御中に無理矢理操作しようとしたため。)
地デジサーバーの夢はここで崩れ去ってしまいましたorz
では、VT-dの検証は失敗したのかということになりますが不幸中の幸いうまくパススルーできた物がありました。
オンボードのサウンドです。
ESXi(VMware Tools)は仮想のサウンドカードをもっていないため物理的か仮想サウンドカードを準備する必要があります。
ということでオンボードのサウンドをパススルーしました。
パススルー設定後起動するとOS上でサウンドを検出しました。
パススルーを設定すると他の設定の変更に制約が出る場合があります。(特にメモリー。)
メモリーを3GBにして再度エクスペリエンスインデックスを行おうとしたところ、仮想マシンの設定画面でエラーが出てしまいました。この場合は一度パススルーしたデバイスを削除し、メモリーを増やしてから再度追加するとうまくいきます。またはESXi側が増やしたメモリー量に合わせて設定変更しますかと聞いてくる場合があります。エラーが出たのは設定変更をしかなったためだと思いますが詳しく覚えていないです。
VT-dのまとめは下記の通りです。
○PCIの機器であっても何でもパススルーできる訳ではない
○インターフェイスがPCIであっても内部的にUSB接続の物はPCIパススルーではなくUSBパススルーで認識できる
○よって、インターフェイスがPCIであっても内部的にUSB接続の機器はVT-dに対応していなくても接続できるはず。※
(※本来はVT-dを切って再度検証しなければならないが切ってしまうとサウンドが認識できなくなり視聴ソフトが動かなくなること、おそらくTVチューナーカードが壊れてしまいこれ以上の検証はできないことから最後に関しては私の憶測という扱いにします。)
最後に仮想化支援機能を使用するためには1 CPUが仮想化支援機能に対応していること、2 マザーボード(チップセット)が仮想化支援機能に対応していること、3 UEFI(BIOS)が仮想化支援機能に対応していることです。
3 について詳しく説明します。マザーボードのメーカーに拠ってはUEFI(BIOS)に仮想化支援機能の設定項目がなく仮想化支援機能を有効にできない場合があります。(だいたいの場合出荷時に仮想化支援機能は使用しないという設定になっているため)よって設定項目がない場合、仮想化支援機能を利用できません。
以上でVTの検証を終了いたします。
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。