VPSの仕組み

VPSでは1台のコンピュータの上で複数のサーバーを動作させていますが、その鍵となるのが「仮想化」です。今回は、この仮想化を中心に、VPSの仕組みを解説します。

 

■VPSの鍵を握る「仮想化」

■ハイパーバイザー型の仮想化

■完全仮想化と準仮想化

■コンテナ型の仮想化

 

 

■VPSの鍵を握る「仮想化」

VPSは「Virtual Private Server」の略で、日本語では「仮想専用サーバー」と呼ばれます。VPSの基本的な仕組みは、複数のOS環境を「仮想化」し、1台の物理的なコンピュータの上で同時に動作させて、それぞれをユーザーに提供することです。この「仮想化」が、VPSの鍵となります。

「仮想化」とは、物理的なハードウェア(CPU、メモリ、ディスクなど)を抽象化して、OSやアプリケーションに提供する仕組みのことを言います。

例えば、Macをお使いの方の中には、「Parallels Desktop®」を使ったことがある方がいると思います。Parallels Desktop®はMacの上でWindows®を動作させることができる製品ですが、これは「Windows®が動作するパソコン」を仮想化して、Mac OS上で動作させるという仕組みをとっています。

VPSでは、「ハイパーバイザー型」か「コンテナ型」と呼ばれる仮想化が使われています。また、ハイパーバイザー型は「完全仮想化」と「準仮想化」に二分されます(図1)。

図1VPSで使われる仮想化技術

図1 VPSで使われる仮想化技術

 

 

■ハイパーバイザー型の仮想化

ハイパーバイザー(Hypervisor)型の仮想型は、「ハイパーバイザー」をベースにして、複数の「仮想マシン」を管理して動作させる仮想化です。

仮想マシンは、あたかも1台の独立したコンピュータのように動作し、それぞれに仮想的にCPU/メモリ/ディスクなどのハードウェアが割り当てられ、1台のコンピュータの上で、仮想マシンを複数同時に動作させることができます。また、個々の仮想マシンには別々のOSをインストールすることができます。

ハイパーバイザーは、個々の仮想マシンに仮想メモリなどのハードウェアリソースを割り当てたり、それらへの仮想ハードウェアへのアクセスを実際のハードウェアへのアクセスに変換したりなどして、仮想マシンを管理・動作させる働きをします(図2)。

ハイパーバイザーとしては、それ専用のソフトを使ったり、ハイパーバイザー機能を内包したOSを使います。最近のVPSでは、Linux標準のハイパーバイザーである「KVM」(Kernel-based Virtual Machine)が使われることが多くなっています。また、一部のVPSではかつて主流だった「Xen」を使っているところもあります。

ちなみに、Windows®やMacのパソコン上で動作する仮想化のソフトとして、「VirtualBox」や「VMWare Workstation」(Mac用は「VMWare Fusion」) などがあります。これらのソフトは、Windows®などのOS(ホストOS)の上で、ハイパーバイザー同様の動作をします。広い意味ではハイパーバイザーに含まれますが、サーバー向けのハイパーバイザーとは動作の仕組みがやや異なります。

図2ハイパーバイザー型の仮想型の仕組み

図2 ハイパーバイザー型の仮想型の仕組み

 

 

■完全仮想化と準仮想化

ハイパーバイザー型の仮想化は、さらに「完全仮想化」と「準仮想化」に大別されます。

完全仮想化(Full Virtualization)は、仮想マシンのメモリ等の各種のハードウェアを完全に仮想化する仕組みです。仮想マシンにインストールするOSからすると、あたかも通常のコンピュータと同じように仮想マシンが動作しますので、既存のOSをそのままインストールすることができます。一方で、仮想化の処理が複雑になるために負荷(オーバーヘッド)が大きく、処理速度が落ちるというデメリットがあります。

一方の準仮想化(Paravirtualization)では、仮想マシンにインストールするOSに、ハイパーバイザーと連携するための仕組みを用意します。これを「ハイパーバイザーコール」(Hypervisor Call)と呼びます。そして、ハードウェアへのアクセスをハイパーバイザーコールで行って、負荷(オーバーヘッド)を小さくします。

準仮想化では、完全仮想化と比べると、OSの動作が高速になるメリットがあります。一方、OS側が準仮想化に対応している必要がありますので、動作させられるOSが限定されるというデメリットがあります。

ただ、VPSで動作させるOSはほぼ限定されていて(Cent OSやUbuntuを使うことが多い)、それらのOSは準仮想化に対応しています。VPSはサーバーをできるだけ高速に動作させる必要がありますので、準仮想化が使われることが多いです。

 

 

■コンテナ型の仮想化

もう1つの仮想化の方式として、「コンテナ型」があります。コンテナ型では、OSの上に「コンテナ」と呼ばれる独立した空間を作り、その上でサーバーやアプリケーションなどを動作させます。

ベースとなるOSは1つであり、またコンテナはOSのカーネルより上位のレベルの部分だけを動作させるものなので、ハイパーバイザー型とは異なり、1台のサーバーマシン上で異なる複数のOSを動作させることはできません。例えば、OSとしてLinuxが動作しているサーバーマシンでは、コンテナ上でWindows®を動作させることはできません。この点はコンテナ型のデメリットです。

一方で、CPUやメモリなどのハードウェアを、それぞれのコンテナで共有することができます。このことから、ハイパーバイザー型と比べて、1台のサーバーマシンをより多くのユーザーにレンタルすることができ、利用料が安価なサービスを提供しやすくなっています。

また、ディスク等へのアクセスは仮想化せずに、ベース部分のOSで直接処理しますので、オーバーヘッドが少なく、動作が高速というメリットがあります。さらに、コンテナは起動・終了を高速に行うことができ、他のコンピュータに移動しやすいというメリットもあります。

VPSで使われているコンテナ型の仮想化としてはオープンソースのOpenVZなどがあります。

図3コンテナ型の仮想化

図3 コンテナ型の仮想化

 

 

 

 

 

 

うちだ
サービスクリエーション本部所属        (監修:とみなが)       

オススメ記事

関連サービス

VPS VPSクラウド