株式会社フィードフォース技術チームのサイト。社内勉強会資料や開発の様子および成果の公開など。

OpenVZ - OSレベルの仮想化について

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台のサーバへの集約度を高められることです。
特定用途で、効果的な使い道があるかもしれません。

No comments yet.

(required)

(required)


Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

powered by WordPress
copyright(c) 2006-2010 feedforce