wiki:linux/openvz

OpenVz?

近年、VMWare、Xen、KVMなどのマシンの仮想化技術が注目を浴びています。仮想化技術とは、一つの物理マシン上で複数のOSを動作させる技術のことで、近年ハードウェアの進化に伴いあり余ってきているハードウェアリソースを有効に活用することができます。

しかしながら、VMWareやXen等の仮想化技術では、ハードウェア自身を仮想化し個別のOSを起動するため、OSのメモリ領域が取られたり、ディスクI/Oのエミュレーションが重くパフォーマンスが低下します。

OpenVz?はLinuxに特化した仮想化ソリューションです。専用のカーネル上で複数のLinuxOS環境を動作させることができます。例えば、Ubuntu上でCentOSとDebianを動作させるといったことが可能です。他の仮想化ソリューションと比べて、ハードウェアまで仮想化しないため、軽快に動作するといった特徴があります。XenとOpenVzのパフォーマンスの比較について興味がある人はHP社から提供されている資料を読むとよいでしょう。

 Performance Evaluation of Virtualization Technologies for Server Consolidation

ここでは、UbuntuでOpenVzを利用する方法を紹介します。

インストール

/etc/apt/sources.listに次のapt-lineを追加します。

deb http://debian.systs.org/ etch openvz 

apt-getでOpenVzに対応したカーネルとユーティリティ、OSのテンプレートをインストールします。

# apt-get install vzctl vzquota vzdump vzctl-ostmpl-debian
# apt-get install linux-headers-2.6.18-fza-5-686 linux-image-2.6.18-fza-5-686

VEの作成

VEとは、OpenVz?で動作する仮想的なOS環境のことです。ここでは、上記のインストール手順でインストールしたDebianのOSテンプレートからVEを作成してみましょう。まず最初に、OpenVz?を起動します。

# /etc/init.d/vz start

他のWebページを見ると、/etc/sysctl.confを変更しろとか書いていますが、Debian版のOpenVzをインストールすると勝手にsysctl.confを書き換えてくれるので設定は不要です。

次に、インストールするテンプレートの確認を行います。テンプレートは/var/lib/vz/template/cacheディレクトリにあるので、テンプレート名を確認しておくと良いでしょう。

# ls /var/lib/vz/template/cache
debian-4.0-i386-minimal.tar.gz

テンプレートのファイル名から、.tar.gzを除いたものがテンプレート名になります。VEを作成するには、次のようにvzctl createを利用します。

# vzctl create 1001 --ostemplate debian-4.0-i386-minimal --ipadd 192.168.1.10 --hostname vzdebian

1001はVEのIDです。VE毎に異なるIDを指定してください。以下、このIDを利用してVEを操作することになります。

OpenVz?で利用できるテンプレートは、openvz.orgの下記のサイトに用意されています。

 Precreated Template

SuSE,CentOS,Debian,Fedora等が用意されています。

VEの操作

作成したVEを起動するには、

# vzctl start 1001

とします。vzlistで起動中のVEを確認します。

# vzlist
      VEID      NPROC STATUS  IP_ADDR         HOSTNAME                        
      1001          6 running 192.168.1.10       vzdebian

VEのルートユーザのパスワードを変更するには、次のようにします。

# vzctl set 1001 --userpasswd root:root --save

--saveをつけないと、次回VEを起動したときに設定が無効になります。デフォルトではDNSが無効になっているため、次のようにしてDNSを設定しておきます。

# vzctl set 1001 --nameserver 218.176.253.66

VEにログインするには、次のようにします。

# vzctl enter 1001
root@localhost:/#  

VE内でSSHを起動しておけば、他のOSからログインできます。

root@localhost:/# /etc/init.d/ssh