検索
特集

Linux-VServerをインストールするLinux Hacks(2/2 ページ)

Linux-VServerを使えば、物理的に1台のハードウェアで複数の仮想サーバを簡単に実行できる。より複雑な仮想化のスキームほどの柔軟性はないものの、実装が容易でパフォーマンスにも優れている。ここではLinux-VServerの導入ノウハウを伝授しよう。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

仮想サーバの構築

 仮想サーバの構築はとても簡単で、次のようなvserverコマンドを使って行う。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 このコマンドによって、vserver1.mydomain.comというホスト名の仮想サーバ“vserver1”と、CIDR表記のプレフィックス長が24の192.168.1ネットワーク内のIPアドレス192.168.1.31を持つ仮想イーサネットデバイスが構築される。

 この仮想サーバのパッケージデータベースとファイルシステムを配置するのが、debootstrapというコマンド(同名のパッケージから取得)で、Ubuntu Dapper Drakeのパッケージリポジトリからパッケージを取得するために引数dapperが渡されている。

 この手順の実行には数々のパッケージのダウンロードとインストールが必要になるので少し時間が掛かるが、本格的なディストリビューションのインストールを行う場合ほどではない。というのもdebootstrapは必要最小限のパッケージのダウンロードとインストールしか行わないからだ。そのほかのパッケージは後でインストールできる。ただしdebootstrapが使えるのは、Debianベースのシステムのブートストラップ処理だけである。

 Debianベースでないディストリビューションをインストールする場合は、別のツールを使う必要がある。RPMベースのディストリビューションのインストールには、rpmstrapを検討するとよい。

 続いて以下のコマンドにより、新しく構築した仮想サーバを起動し、そのサーバに入る。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 これで仮想サーバ内に入ることができたわけだが(exitと入力すれば出られる)、最低限のパッケージしかインストールされていないことに注意が必要だ。topと入力すれば、この仮想サーバではプロセスがほとんど実行されていないことが分かる。またdfを実行すれば、ルートファイルシステムが仮想ブロックデバイスに用意されていることが分かる。この仮想ブロックデバイスの名は、おそらく/dev/hdv1になっているはずだ。

追加の設定

 この時点で非常に基本的な仮想サーバが出来上がっているので、たいていは追加パッケージのインストールやシステムへのユーザー登録を行うことになるだろう。その方法は、ホストシステムで一般的に用いられているものと少しも変わらない。以下に、簡単だが役に立つ例を示す。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 これで仮想マシンに対してsshを実行できるようになる。Apache、BIND、SMTPといったサーバのインストールも同様に簡単で、それぞれのサーバプロセスでApache、BIND、SMTPなど種類の異なる仮想サーバを立てることもできる。

 実際、これはセキュリティの点から見て非常に優れたアイデアである。というのは、こうしたプロセスのそれぞれを分離し、ほかのプロセスに悪影響がおよぶのを回避できるからだ(とはいえ、プロセスはすべて同じ物理的ハードウェア上で実行されているので、停電やハードウェア障害が起これば1つ残らず消滅してしまう)。

 あるいは、DebianGentooのそれぞれの最新バージョンを試したい場合も、両者を別々の仮想マシン上にインストールすることができる。さらに、実験版のすべてのソフトウェアやアップグレードを別々の仮想マシンにインストールすることも可能で、そうすればシステムを破壊してしまう危険がなくなる。このように仮想化には数多くの用途がある。

まとめ

 Linux-VServerによって、わずかなオーバーヘッドで優れたパフォーマンスを生み出し、それでいてセキュリティ性と障害分離性の向上も果たせるライトウェイトな仮想マシンを生成することができる。ハードウェアへの追加投資なしに、セキュアでフォールトトレラントなシステムを生成するのに利用できるわけだ。また、Linux-VServerを使えば、わざわざもう1台マシンを用意したりシステムの破壊について心配したりすることなく、ほかの開発環境の再現や最新のLinuxディストリビューションの試用も行える。


準仮想化と完全仮想化

 仮想化といえば、ハードウェアのレベルに至るまで仮想マシンをエミュレートし、エミュレートされたハードウェア上でオペレーティングシステム(OS)を実行する完全仮想化(full virtualization)のソフトウェアを思い浮かべる人が多い。これは、VMwareQEMUBochsといった著名なソフトウェアパッケージが採用しているアプローチだ。

 完全仮想化のソフトウェアでは、プロセッサ、BIOS、入出力デバイスなど、広い範囲にわたってハードウェアの仮想化を行っている。このアプローチの利点の1つは、どんなOSでも仮想化ハードウェア上で実行できることにある。欠点は、ハードウェアのレイヤまでエミュレートしているためにオーバーヘッドが大きく、多くの場合、ゲストおよびホストの両OSで著しくパフォーマンスが低下することだ。

 近年、準仮想化(paravirtualization)と呼ばれるもう1つの仮想化手法に多くの関心が集まっている。準仮想化の場合、仮想マシンは仮想マシンモニタ(VMM)すなわちハイパーバイザ内で実行され、そのサービスへのアクセスはソフトウェアインタフェースを介して行われる。

 準仮想化というのは、実はIBMのメインフレームの時代にまで遡る古い手法だが、最近、Parallels WorkstationXenなどのソフトウェアを搭載したパーソナルコンピュータへの適用が増えつつある。しかし、準仮想化にも欠点はあり、ハイパーバイザをサポートするためのゲスト OSの修正か、IntelやAMDの比較的新しいプロセッサによる特別なハードウェアのサポートのどちらかが通常必要になる。

 ただし、ゲストOSをLinuxに限定すれば、より抽象度の高いレベルで仮想化を行い、パフォーマンスの向上をもたらすUser-mode Linux(UML)やLinux-VServerのような選択肢も考えられる。UMLを利用すれば、Linuxカーネルを(EmacsやVimのようなほかのLinuxのプロセスと同じように)ユーザープロセスとして「ホスト」側のLinux OSの内部で実行することができる。

 この興味深いテクノロジーには、UMLが有効な最近のカーネルから任意のものを選んで実行できる、ゲストシステムのカーネルを従来よりも容易にデバッグできる、といった数々の利点がある。

関連キーワード

Linux | 仮想化 | Xen | Linux Hacks


前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る