OpenVZは、Linuxで動作するコンテナベースの仮想化ソフトです。

本家URL

http://openvz.org/wiki

http://wiki.openvz.org/

OpenVZって何?

  • 読み方は「おーぷんぶいじー」
  • Linuxで動作するコンテナベースの仮想化ソフト
  • Virtuozzoという商用ソフトのオープンソース版
  • SWsoftというアメリカの会社が提供
    • 最近Parallelsを買収したらしい
    • 本家Linuxカーネルに組み込まれることが彼らの野望
    • すでに 一部の機能は組み込まれていたりもする

仮想化って?

ひとつのマシンのリソースを複数の実行環境に分割すること。 一口に仮想化といっても、以下の三種類がある。

  1. 仮想マシン (Virtual machines)
    • VMware, QEMU, Parallels, Microsoft Virtual Server
  2. 準仮想化 (Paravirtualization)
    • Xen, UML
  3. OSレベルの仮想化 (Virtualization on the OS level)
    • OpenVZ, Virtuozzo, Linux-VServer, Solaris Zones, FreeBSD Jails

(参考: http://wiki.openvz.org/Introduction_to_virtualization)

OSレベルの仮想化って?

仮想マシンや準仮想化と比べて、

  • 長所
    • 軽い!
    • 集約度が高い!
  • 短所
    • 仮想環境にLinuxディストリビューションしか動作しない!
    • できないことが多い!

イメージとしては、chrootにリソース制限機能を付加したという感じでいいと思います。 コンテナ(仮想環境)内でファイルシステムのフォーマットをしたりだとか、カーネルを動作させるといったことはできません。

OpenVZの特徴

  • 仮想化によるCPUのコストは1-2%と低い
  • 各コンテナ毎にファイルシステム, プロセス, IPCが独立している
  • デバイスファイルにはアクセス制限ある
  • 各コンテナ毎にネットワークが独立している
  • Fair CPU scheduler
  • I/O scheduler
  • live migration機能

個人的な使用感としては、同じOSレベルの仮想化である Linux Vserverよりも高機能だと思います。

インストール

Wikiが充実しているので、そちらを見るのがてっとり早いです。 ここではURLを紹介して起きます。

インストール

http://wiki.openvz.org/Quick_installation

リソース制限

http://wiki.openvz.org/Category:Resource_management

http://wiki.openvz.org/Category:UBC

オペレーション

ドキュメントは以下のサイトにあります。

http://wiki.openvz.org/Basic_operations_in_OpenVZ_environment

インストール後、VE(ゲスト)を起動してみます。

$ vzctl start 101
 Starting VE ...
 VE is mounted
 Adding IP address(es): 192.168.1.151
 Setting CPU units: 60000
 Configure meminfo: 2147483647
 VE start in progress...

起動しているVEの一覧を見てみます。

$ vzlist
 VEID NPROC STATUS IP_ADDR HOSTNAME
 101 14 running 192.168.1.151 -

無事に起動されています。 オプションに-aをつければ起動していないVEも一覧できます。

$ vzlist -a
 VEID NPROC STATUS IP_ADDR HOSTNAME
 101 14 running 192.168.1.151 -
 102 - stopped 192.168.1.152 -
 103 - stopped 192.168.1.153 -

このホストでは、ID 101のVEの他に、102、103もインストールしています。 ホストから、VE 101のなかに入ってみます。

$ vzctl enter 101

VEの内部では普通のLinuxのように操作できます。

$ ps -ef
 root 1 0 0 Apr10 ? 00:00:00 init [3]
 root 16357 1 0 Apr10 ? 00:00:00 syslogd -m 0
 root 16383 1 0 Apr10 ? 00:00:00 /usr/sbin/sshd
 root 17416 1 0 Apr10 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
 root 17462 1 0 Apr10 ? 00:00:00 crond
 root 18120 1 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18122 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18123 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18124 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18125 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18126 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18127 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18128 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 apache 18129 18120 0 Apr10 ? 00:00:00 /usr/sbin/httpd
 root 22165 1 0 05:51 ? 00:00:00 vzctl: pts/0
 root 22166 22165 1 05:51 pts/0 00:00:00 -bash
 root 22180 22166 0 05:51 pts/0 00:00:00 ps -ef

IPアドレスが振られているインターフェースは、eth0でなくvenet0:0となっており、OpenVZ特有のものです。

$ ifconfig
 lo Link encap:Local Loopback
 inet addr:127.0.0.1 Mask:255.0.0.0
 inet6 addr: ::1/128 Scope:Host
 UP LOOPBACK RUNNING MTU:16436 Metric:1
 RX packets:92 errors:0 dropped:0 overruns:0 frame:0
 TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0
 RX bytes:6164 (6.0 KiB) TX bytes:6164 (6.0 KiB) venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
 RX packets:57785 errors:0 dropped:0 overruns:0 frame:0
 TX packets:59062 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0
 RX bytes:47179824 (44.9 MiB) TX bytes:71213725 (67.9 MiB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
 inet addr:192.168.1.151 P-t-P:192.168.1.151 Bcast:192.168.1.151 Mask:255.255.255.255
 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

exitして、VEを停止します。

$ exit
 exited from VE 101
 $ vzctl stop 101
 Stopping VE ...

最後に

仮想化と言えば一般的にはVMwareかXenなのかもしれませんが、OSレベルの仮想化であるOpenVZの特徴はなんと言っても1台のサーバへの集約度を高められることです。 特定用途で、効果的な使い道があるかもしれません。

  • このエントリーをはてなブックマークに追加
Feedforce Developer Blog

新しいブログへ移行しました!こちらもよろしくお願いします。