= OpenVz = 近年、VMWare、Xen、KVMなどのマシンの仮想化技術が注目を浴びています。仮想化技術とは、一つの物理マシン上で複数のOSを動作させる技術のことで、近年ハードウェアの進化に伴いあり余ってきているハードウェアリソースを有効に活用することができます。 しかしながら、VMWareやXen等の仮想化技術では、ハードウェア自身を仮想化し個別のOSを起動するため、OSのメモリ領域が取られたり、ディスクI/Oのエミュレーションが重くパフォーマンスが低下します。 OpenVzはLinuxに特化した仮想化ソリューションです。専用のカーネル上で複数のLinuxOS環境を動作させることができます。例えば、Ubuntu上でCentOSとDebianを動作させるといったことが可能です。他の仮想化ソリューションと比べて、ハードウェアまで仮想化しないため、軽快に動作するといった特徴があります。XenとOpenVzのパフォーマンスの比較について興味がある人はHP社から提供されている資料を読むとよいでしょう。 [http://www.hpl.hp.com/techreports/2007/HPL-2007-59.pdf 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の下記のサイトに用意されています。 [http://openvz.org/download/template/cache 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 }}}