サービスレベルでの仮想化
サービスレベルでの仮想化は、Webサーバやメールサーバなどのサービスだけを仮想化する方法である。サービスレベルで利用できる仮想化技術の代表例が、バーチャルドメイン機能だ(図2)。
バーチャルドメイン機能は、1つのサーバ(1つのIPアドレス)に対して複数のドメインを割り当てて、それぞれで異なるサービスを同時に稼働させる機能である。これにより、1つのサーバで複数のドメイン、すなわち複数の企業や組織ごとに異なるサービスを提供できるようになるため、サービスの集約化が実現する。
バーチャルドメインを使うと、たとえばWebサーバでは、リクエストされたドメインに応じて異なるWebサイトを表示させることが可能になる。また、メールサーバでは、1台のメールサーバで異なるドメイン宛のメールを受信できる。もし同じアカウント名でもドメイン名が異なっていれば、それぞれ違うメールボックスに振り分けられるようになる。
バーチャルドメインを利用するメリットは、前述のように1つのシステムで複数のドメインを管理可能なため、ドメインごとに別々のサーバを用意する必要がなくなるという点である。また、仮想マシンで複数サーバを用意する場合と比較すると、仮想マシンのエミュレートなどによるリソース消費がなく、オーバーヘッドによるパフォーマンス低下も起こらない。そのため、リソースを大幅に節約できるというわけだ。
ただし、複数ドメインから同時に負荷が集中してサービスがダウンした場合や、急なハードウェア障害によってシステムがダウンした場合は、すべてのドメインのサービスが停止してしまうため、運用には注意が必要である。
ファイルシステムレベルのパーティショニング
ここでいうパーティショニングとは、ファイルシステム上のあるディレクトリをルートディレクトリとみなすことで、仮想のファイルシステムを作成する技術である(図3)。つまり、ディレクトリツリーの一部分だけを独立したファイルシステム(仮想ファイルシステム)とみなして運用することを意味する。仮想ファイルシステムでは、外のファイルシステムが見えなくなり、触れることさえ一切できなくなるのが特徴だ。そのため、サービスのセキュリティ対策や、OSレベルでの仮想化に使用されている。
赤枠の中がそれぞれファイルシステムとして独立している。外側の枠が本当のファイルシステム、内側の2つの枠が仮想のファイルシステムとなる
BINDの例
サービスのセキュリティ対策の利用例では、ネームサーバ(DNSサーバ)「BIND」のnamedがポピュラーだろう。namedは、Linuxの場合、/var/named/chroot/var/named以下に設定ファイルが配置されており、サービス起動時には/var/named/chrootディレクトリがnamedにとってのルートディレクトリとみなされる。
万が一、namedのセキュリティが破られてファイルシステムにアクセスされても、/var/named/chrootがルートディレクトリとして見えるため、侵入者はこれより上のディレクトリにはアクセスできない。つまり、被害をそのサービス内のみに食い止められるのだ。
OSレベルのパーティショニング
一方、OSレベルでのパーティショニングは、仮想ファイルシステムにOSをインストールする方法だ。この方法によって用意されたOSを「OSインスタンス(仮想化実体)」もしくは「仮想環境(VE)」と呼ぶ。
この方法は、OSレベルでの仮想化であるため、後述するハイパーバイザ型の仮想マシンよりもオーバーヘッドが大幅に少なく、1つのサーバに多量のOSインスタンスを作成することが可能である。そのうえ、仮想マシンと同様にそれぞれ別のシステムとして稼働しているように見せられ、どれか1つのOSインスタンスがクラッシュしても、他のOSインスタンスには影響しない。ただし、WindowsとLinux両方という風に、ほかのOS同士の混在はできない。これについては、次のパートでより詳しく説明する。
(次ページ、「仮想マシンによるサーバ仮想化」に続く)
この連載の記事
-
第7回
ソフトウェア・仮想化
ネットワーク機器で用いられる仮想化技術 -
第6回
ソフトウェア・仮想化
サーバだけじゃない!ストレージ仮想化の重要性 -
第5回
ソフトウェア・仮想化
クライアントPCを仮想化するVDIの正体 -
第4回
ソフトウェア・仮想化
パーティショニングによる仮想化とは? -
第3回
ソフトウェア・仮想化
実行効率の高いハイパーバイザ型の仮想化ソフト -
第1回
ソフトウェア・仮想化
さまざまな仮想化技術の基本を理解する -
ソフトウェア・仮想化
すっきりわかった仮想化技術<目次> - この連載の一覧へ