ZDNet Japan Brand Site:
ZDNet Japan
builder

CPUの仮想化サポート技術は一体何をサポートしているのか--仮想化技術をひも解く(5)

ここ数年、プロセッサメーカーがこぞって仮想化技術をCPUに搭載するようになってきた。プロセッサによる仮想化サポート技術とは、一体何をどうサポートしているのだろうか。

谷川耕一  2007年8月1日 08時00分

 前回はサーバの仮想化技術について、その概要を説明した。その際にも触れたが、現状の仮想化ブームを後押ししているのはサーバの仮想化だ。そのサーバの仮想化を後押ししているのが、VMwareやXenといった仮想化を実現するソフトウェアの普及であり、IntelAMDなどのプロセッサが提供するサーバ仮想化をサポートする技術の登場であろう。

 プロセッサにもさまざまなものがあるが、LinuxやWindowsといった現在最も身近に普及しているOSの仮想サーバを実現するのであれば、いわゆるx86アーキテクチャをサポートするIntelAMDプロセッサ搭載マシンがプラットホームとなる。今回は、IntelAMDが提供する仮想化サポート技術をひも解いてみたい。

本来は1台のマシンに1つのOS

 一部のハードウェアを除き、これまでは物理的に1台のマシンでは1つのOSだけが動くようなアーキテクチャになっていた。そのため、1つのOSがすべてのハードウェアリソースを占有できたが、仮想化により複数のOSが1台で動くようになると、本来1つのOS用に用意されていたリソースを複数のOSで共有して利用しなければならない。

 ストレージのようにゲストOS 1の領域、2の領域と分けられるリソースならば問題はないが、もともと1つのOS用に用意されたリソースには分離できないものもある。そのため、仮想サーバを実現しようとすると、仮想化ソフトウェアがゲストOSの要求に応じ、分離できないリソースを切り分けてゲストOSに渡す必要がある。

 プロセッサによる仮想化サポート技術がない場合は、この切り分け処理をソフトウェア的に行わなければならない。そのためにゲストOSのソースコードを変更したり、ゲストOSからのハードウェアに対する命令を仮想化ソフトウェアでバイナリ変換する必要があった。OSのソースコードを変更するとなると、ソースコードが公開されている必要がある。また、OSパッチを適用する際には、その都度動作を検証する必要があるかもしれない。

 当然ながら、複数のゲストOS間で頻繁にリソースの切り替えが発生する場合、ソフトウェアのバイナリ変換処理で仮想化すると仮想化ソフトウェアに大きな負荷が発生する。また、このゲストOSの命令を代理実行する実装はかなり複雑で、仮想化ソフトウェアを提供するベンダーは、システムの信頼性を確保するためにそれなりの時間と手間が必要だ。ゲストOSに対しソースコードの改変が必要となるのが、旧来のXenの仮想化実現方法だ。一方、ソフトウェアでバイナリ変換処理をするのが、VMwareのハイパーバイザーということになる。

最初から仮想サーバが動くようにする

 このような仮想化の問題点を大幅に解決したのが、プロセッサ仮想化サポートの技術だ。簡単に言ってしまえば、従来1台につき1つのOSしか動かなかったプロセッサのアーキテクチャを、最初から複数のOSが動くように変えてしまうというものだ。

 この仮想化のための拡張をIntelでは「Intel-VT(Virtualization Technology)」、AMDでは「AMD-V(Virtualization)」と呼んでいる。

ホワイトペーパー
http://japan.zdnet.com/sp/feature/07virtual/story/0,3800078143,20353850,00.htm
CPUの仮想化サポート技術は一体何をサポートしているのか--仮想化技術をひも解く(5)

Intel Video Series

sponsored by Intel

ZDNet Japan ニューズレター

企業情報システムの選択、導入、運用管理に役立つ情報を毎朝メール配信します。

ニューズレターの登録・登録情報変更 »