1台の物理サーバ上に複数の仮想的なサーバを動作させる技術。
サーバ仮想化とは、1台の物理サーバ(実際のハードウェア)の上に、ソフトウェアで複数の独立したサーバを作り出す技術です。この仮想的なサーバ1つ1つを仮想マシン(VM=Virtual Machineのこと)と呼びます。
身近な例で考えると、1棟のマンションを複数の部屋に区切るのに似ています。建物(物理サーバ)は1つでも、中を仕切れば独立した部屋(仮想サーバ)として何世帯も住めます。各部屋の住人は、ほかの部屋を意識せず暮らせます。
上の図のように、物理サーバ1台のCPU・メモリ・ストレージを仮想化層(仮想化ソフトウェア)が分割し、それぞれを仮想サーバに割り当てます。各仮想サーバは自分専用のOS(ゲストOS)とアプリを持ち、まるで別々のサーバのように振る舞います。
サーバ仮想化には、主に次のような利点があります。
・ハードウェアの集約:何台もの物理サーバを1台にまとめられるので、台数・設置スペース・電力・コストを減らせます
・リソースの有効活用:1台のサーバで余っていたCPUやメモリを、複数の仮想サーバで分け合って使えます
・構築が速い:新しいサーバが必要なとき、物理機材を買わずソフトウェア操作だけで数分で用意できます
・隔離・移行が容易:各仮想サーバは独立しているので互いに影響しにくく、別の物理サーバへまるごと引っ越し(移行)もしやすいです
かつては「1サービス=1物理サーバ」で運用することが多く、各サーバの能力が半分以上余っていることもありました。仮想化はこの「もったいない余り」をまとめて使い切るための仕組みでもあります。
サーバ仮想化は、仮想化層をどこに置くかで大きく3種類に分けられます。
・ハイパーバイザ型(Type1):ハードウェア上に直接、仮想化ソフト(ハイパーバイザ)を置く方式。ホストOSがなく高速で、サーバ用途に向きます
・ホスト型(Type2):WindowsやmacOSなどのホストOSの上に、アプリとして仮想化ソフトを入れる方式。手軽で個人の検証向きです
・コンテナ型:ゲストOSを持たず、ホストOSのカーネル(OSの中核)を共有して軽量にアプリを隔離する方式。代表はDockerです
上の図のように、下から「ハードウェア」が共通の土台で、その上に何を積むかが方式ごとに異なります。3方式のそれぞれの詳しい仕組みは、別ページで1つずつ解説しています。
なぜわざわざ集約するのか。その理由は、物理サーバを「1台に1役」で使うとほとんどのサーバで能力の大半が余ってしまうからです。
たとえばCPUの使用率が平均30%のサーバが3台あるとすると、70%ずつ余っています。仮想化で1台に集約すれば、3台分のリソース(CPU・メモリ・ストレージ)を無駄なく使い回せます。
・コスト削減:機器の購入費・電気代・設置スペース代がまとめて減る
・リソースの有効活用:忙しい仮想サーバには多くのCPUを、暇な仮想サーバには少なく割り当てて、全体で効率よく使える
・管理の簡素化:物理サーバの台数が減るほど、故障対応・ソフト更新などの管理作業が減る
仮想化は「新しい能力を得る技術」ではなく、「すでにある能力を無駄なく使う技術」です。電力会社が余った電気をほかの地域に回すのと同じ発想で、余ったコンピュータリソースを必要なところに振り向けます。これがクラウドコンピューティング(インターネット越しにコンピュータリソースを使う仕組み)の基盤にもなっています。
仮想化の核心はハイパーバイザ(=物理サーバと仮想サーバの間に入る管理ソフトウェア)です。ハイパーバイザは物理サーバのリソース(CPU・メモリ・ストレージ)を各仮想サーバに分配する「交通整理役」として働きます。
仮想サーバは「自分専用のCPUとメモリがある」と思って動いていますが、実際にはハイパーバイザが物理リソースを仮想的に見せているだけです。各仮想サーバはほかのVMを意識せず動けるため、仮想サーバ1が壊れても仮想サーバ2には影響しません(隔離性)。
・割り当て:CPU何コア・メモリ何GBをどのVMに渡すかを管理
・隔離:VM同士が互いのデータを読み書きできないように仕切る
・調整:あるVMが暇なとき、そのリソースを忙しいVMに一時的に回す
身近な例で考えると、ハイパーバイザはホテルのフロント係のようなものです。1棟の建物(物理サーバ)の部屋(リソース)を各宿泊客(仮想サーバ)に割り当て、他の部屋に入れないよう管理します。宿泊客はホテルの管理業務を意識せず自室で過ごせます。これが仮想化の中心的な仕組みです。
Q1. サーバ仮想化の説明として最も適切なものはどれか。
Q2. サーバ仮想化の利点として適切でないものはどれか。
Q3. サーバ仮想化の代表的な3つの方式の組み合わせとして正しいものはどれか。