昨今、仮想化という言葉を多く耳にする読者も多いと思うが、「仮想化」は「統合化」と並んで最近の情報インフラに関する2大テーマとなっている。この2つはリソースの有効活用、全体の最適化、コストの削減など享受できるメリットは似ている。
しかし「統合化」は、複数のx86サーバを1台のブレードサーバに集約するなどといった、物理的なアプローチであるのに対して「仮想化」は物理的には複数あるものを論理的にひとつに見せる、または物理的にはひとつのものを論理的に複数に見せるといったアプローチという違いがある。
そもそも仮想化とは?
そもそも「仮想化」とは何なのであろうか? 仮想化とは、ユーザーから直接的に見えない機能により、物理的な資源を論理的な資源に変換することで物理的な制約から逃れて、より柔軟にIT資源を利用できるための技術の総称であるといえる(図1)。
これにより、アプリケーション開発者やシステム利用者からは論理的な資源だけが見え、資源の物理的な特性は隠されて見えなくなってしまう。
ITの世界では仮想化は一般的な概念であるが、元々ITの歴史は仮想化の歴史と言っても過言ではない。現在はプログラムを作成するのに物理的メモリの容量を気にする人はいないが、これは仮想メモリの技術によって物理メモリの制限から開放されたからであり、ネットワークでもTCP/IPなどの通信プロトコルは物理的なケーブルの種類といった物理的な通信手段を隠してくれている。
仮想化には大きく分けて3つのパターンがある(図2)。
まずは、パーティショニング(分割)である。これは、ひとつの物理資源を複数の論理資源に見せる。典型的なものとしてはサーバの仮想化がある。
サーバの仮想化では、ひとつのサーバをあたかも複数のサーバがあるように見せる。1台のディスクドライブを分割して複数のディスクドライブに見せるディスクパーティショニングもこのパターンである。
次に、アグリゲーション(集約)である。これは複数の物理資源をひとつの論理資源に見せる。これの典型的なものとしてはストレージの仮想化がある。
複数のディスクドライブを集約してあたかもひとつの巨大なディスクドライブがあるように見せる。またグリッドコンピューティングも複数の小さなサーバをまとめて1台の巨大なサーバに見せるので、このパターンであると言える。
そして最後のパターンは、エミュレーション(模倣)であり、エミュレーションはある物理資源を別のタイプの物理資源のふりをする論理資源ことである。エミュレーションは物理的な差異を隠してしまう。典型的な例としてはJVM(Java Virtual Machine)やTelnet(仮想端末)などがこのパターンといえる。