OpenVZ - OSレベルの仮想化について
OpenVZは、Linuxで動作するコンテナベースの仮想化ソフトです。
本家URL
http://openvz.org/
wiki
http://wiki.openvz.org/
OpenVZって何?
- 読み方は「おーぷんぶいじー」
- Linuxで動作するコンテナベースの仮想化ソフト
- Virtuozzoという商用ソフトのオープンソース版
- SWsoftというアメリカの会社が提供
- 最近Parallelsを買収したらしい
- 本家Linuxカーネルに組み込まれることが彼らの野望
- すでに一部の機能は組み込まれていたりもする
仮想化って?
ひとつのマシンのリソースを複数の実行環境に分割すること。
一口に仮想化といっても、以下の三種類がある。
- 仮想マシン (Virtual machines)
- VMware, QEMU, Parallels, Microsoft Virtual Server
- 準仮想化 (Paravirtualization)
- Xen, UML
- 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台のサーバへの集約度を高められることです。
特定用途で、効果的な使い道があるかもしれません。




RSSフィード