仮想化が大流行だ。毎日報道されるIT系ニュースの中には、少なくとも1つや2つは仮想化に関連するものがあるだろう。しかし、仮想化と一口に言っても、さまざまな仮想化の技術がある。サーバの仮想化、ストレージの仮想化、ネットワークの仮想化、さらにはアプリケーションの仮想化にファイルやメモリの仮想化などというものまである。
流行の仮想化なのだが、自分でどれくらい中身を理解できているだろうか。よく耳にする「仮想化の技術は最近のものではなく、昔からメインフレームなどでは当たり前の技術だ」という話もある。古いものから新しいものまで、そしてさまざまな領域のすべての仮想化技術を詳細に把握することは難しい。それでもなんとか時代に乗遅れないために、これから数回に渡って流行の仮想化の技術をやさしく紐解いていきたいと思う。
「まずはサーバの仮想化について説明を始めよう」というのが、普通の進め方かもしれない。しかし、今回はなるべく分かりやすくということで、仮想化タイプの違いから考えてみたい。
仮想化のワザその1:分身の術
まず最初の仮想化の形は、分身の術だ。白土三平氏の忍者マンガなどでよく登場するワザだが、忍者が高速に移動すると残像ができいくつもの分身に見えるのが分身の術。仮想化技術における分身の術も、これと同じ理屈と言ってもいいかもしれない。高速に移動できる、つまりは高速なCPUなどでリソースに余裕があるときにはそれを分割し、あたかも複数の仮想化マシンがあるように見せかけることができるのだ。
この余裕のあるリソースを分割するというのが、いまもっとも流行している仮想化の技術であろう。これはCPUのリソースに限った話ではない。十分に大きなストレージであれば、これを分割し複数のサーバからあたかも自分専用のストレージ装置のように見せかけて利用することもできる。
仮想化のワザその2:合体の術
分身の次は合体だ。こちらは小さなリソースを合体して、大きなリソースに見せかけるというもの。あいにく忍びの術に該当するものはないが、SFなら複数の乗り物が合体して巨大なロボットになる場面を思い描けばいいだろう。Oracleなどの推奨しているグリッド技術がこの典型的なものだ。簡単に説明すれば、複数のサーバがあっても、合体してアプリケーションからは1台の強力なデータベースサーバに見えるというものだ。
ストレージの場合には、RAID装置などを思い浮かべてもらえればいいだろう。RAIDの種類の細かい違いについてはここでは説明しないが、RAIDでは複数の物理的なディスク装置を1つの大きなストレージとして利用できる(実際には、必ずしもサイズが大きくなるとは限らないが)。
ネットワークの例も挙げよう。過去に普及したISDNで、1本なら64kbpsだが2回線分を使って2本で128kbpsというサービスを利用していた人もいるのではないだろうか。この時もメールやウェブのアプリケーションが1本使うのか2本使うのかを切り替えていたわけではない。これも、物理的な2回線分を束ね、あたかも高速な1回線に見せかけていた仮想化技術だったのだ。