VServerは、専用カーネルを使用して、オーバーヘッドの少ない仮想環境を作成する仕組みのようだ。FreeBSDでいう、jailと同じようなものらしい。~
 debianでは、すべてパッケージが用意されていて構築が容易。
#contents

*パッケージのインストール [#n383d8ad]
 以下のモジュールをインストールする。x64環境での例なので、ほかの環境では読み替えること。
 # apt-get install linux-image-2.6-vserver-em64t-p4-smp
 # apt-get install util-vserver
 # apt-get install vserver-debiantools
 # apt-get install debootstrap
 モジュールをインストールしたら再起動し、VServerカーネルを選択する。

*仮想マシン構築 [#s267fbf7]
 以下のように簡単に仮想マシンが作成できる。仮想マシン内で実行するファイルなどをとってくるため、多少時間はかかる。
 # vserver <vserver> build --hostname hoge -m debootstrap \
   --interface 1=lo:127.0.0.1/8 --interface 1=eth0:192.168.0.125/24 -- -d etch

*基本操作 [#i1196a8f]
 仮想マシンの起動は以下のコマンドを使用する。
 # vserver <vserver> start
 仮想マシンの終了は以下のコマンドを使用する。
 # vserver <vserver> stop
 仮想マシンへの直接ログインは以下のコマンドを使用する。
 # vserver <vserver> enter

*仮想マシンの初期設定 [#ab684e0d]
 仮想マシンの設定ファイルを、いくつか修正する。
-/etc/hostsはないので作成
-/etc/hostnameはホストマシンと同じ名前になっているので仮想マシンのホスト名を設定
-/etc/apt/sources.listを必要に応じて修正

 一通り設定したら、パッケージを更新しておく。
 # apt-get update
 # apt-get upgrade

*サービス設定時の注意点 [#oad282d9]
 ネットワークサーバとして使う場合、待ち受けIPアドレスに注意する必要がある。~
 ホストマシンも仮想マシンも同一のNICを使用するため、両方から0.0.0.0で待ち受けるとおかしなことになる。このため、待ち受けるIPアドレスを明記する必要がある。~
 以下に、いくつかのサービスの設定方法をあげる。
|~サービス名|~設定ファイル|~設定例|
|sshd|/etc/ssh/sshd_config|ListenAddress 192.168.0.125|
|inetd((Debian標準の、openbsd-inetdの場合。))|/etc/inetd.conf|192.168.0.125:((最初の有効行として、追加する。))|
|vsftpd|/etc/vsftpd.conf|listen_address=192.168.0.125|
|exim4|/etc/exim4/update-exim4.conf.conf|dc_local_interfaces='192.168.0.125'|
|dovecot|/etc/dovecot/dovecot.conf|listen = 192.168.0.125|
|apache2|/etc/apache2/ports.conf|Listen 192.168.0.125:80|
|postgresql|/etc/postgresql/8.1/main/postgresql.conf|listen_addresses = '192.168.0.125'|
|bind9|>|仮想マシンで実行する方法がわからない((待ち受けIPアドレスの指定はできたけど、capabilityモジュールがないのが原因のようなエラーが出る。VServerはモジュールというのがない(見えない?)のでこれ以上は無理と判断した。))ので、ホストマシンで処理する。|
 ホストマシンのIPアドレスがDHCPで割り当てられる仕組みだと、固定のIPアドレスを受け取ったとしてもvsftpdとinetdは起動できなかった。

*ディレクトリ [#i2cf6dff]
 VServerに関係するディレクトリは以下のようになっている。
|~意味|~ディレクトリ|
|仮想マシンのルートディレクトリ|/var/lib/vservers/<vserver>/|
|設定|/etc/vservers/<vserver>/|

*自動起動&自動終了 [#r1270e43]
 以下のように、VServerごとに設定する。
 # echo default > /etc/vservers/<vserver>/apps/init/mark

*ディスク使用制限 [#g91e1f1d]
 これはなかなかやり方がわからなかった。日本語のページでの情報は見つからなかったし、英語のページでもよくわからない。試行錯誤の末に見つけ出した。
+マウントオプションの変更~
 ディスクの使用情報が保存できるように、マウントのオプションにtagxidを追加する。これにより、ファイルの情報に、使用されている仮想マシンが付加できるようになる。このオプションは、ルートパーティションには指定できないようだ。
 /dev/sdd3  /var/lib/vservers   jfs   defaults,tagxid     0     2
+仮想マシンの番号固定~
 VServerの名前と番号(CTX)を固定するために、設定ファイルに番号を記入する。番号には2〜49151が指定できた。ファイルと仮想マシンとを関連づけるための情報に、この番号を使用する。
 # echo 1000 > /etc/vservers/<vserver>/context
+ファイルに仮想マシン情報を付加~
 2.で指定した番号をファイルに追加する((この情報をつけた状態のディスクを、tagxidオプションを付けずにマウントすると、所有者などの情報がおかしくなっている。))。
 # chxid -c <vserver> -R /var/lib/vservers/<vserver>/
 設定内容を確認してみる。2.で設定した番号が表示されれば正常。仮想マシンが起動中だと、番号の代わりに仮想マシンの名前が表示される。
 # lsxid /var/lib/vservers/
+制限値を設定~
 いよいよ、目的の設定ができるようになった。~
 設定を適用するホストマシンのディレクトリ、iノード数、使用サイズ(KB)、root用予約率をすべて設定する。
 # mkdir -p /etc/vservers/<vserver>/dlimits/0/
 # echo /var/lib/vservers/<vserver> > /etc/vservers/<vserver>/dlimits/0/directory
 # echo 50000 > /etc/vservers/<vserver>/dlimits/0/inodes_total
 # echo 1000000 > /etc/vservers/<vserver>/dlimits/0/space_total
 # echo 5 > /etc/vservers/<vserver>/dlimits/0/reserved
 仮想マシンを起動し、仮想マシンからdfなどでサイズを見てみると、サイズなどが制限値となっていることが確認できる。

*リソースの使用制限 [#s8ae566f]
 各種リソースの使用制限は以下のように指定する。指定できるリソース名は、cpu, fsize, data, stack, core, rss, nproc, nofile, memlock,locksがある。
 # mkdir /etc/vservers/<vserver>/rlimits
 # echo 1000 > /etc/vservers/<vserver>/rlimits/rss
 以下のコマンドで確認する。
 # vlimit -c <vserver> -a

*特定の仮想マシンにだけ別のデフォルトゲートウェイを割り当てる [#d0644102]
 グローバルアドレスを二つ持っていて、どちらのグローバルアドレスに対しても同じマシンでサービスを提供する場合、常にどちらかしかパケットが出て行かないと片方しか通信が成り立たない。その場合は、特定のマシン用にデフォルトゲートウェイを用意する。~
 具体的には、ネットワークの設定を以下のように("up ip 〜"の部分)すればよい。
 auto eth0
 iface eth0 inet static
     address 192.168.10.20
     netmask 255.255.255.0
     gateway 192.168.10.254
     up ip route add 192.168.10.0/24 dev eth0 table 100
     up ip route add default via 192.168.10.253 dev eth0 table 100
     up ip rule add from 192.168.10.30 table 100
 この例では、192.168.10.30の仮想マシンのデフォルトゲートウェイを、192.168.10.253にしている。

*参考 [#xc34b5d5]
http://linux-vserver.org/~
http://opentechpress.jp/developer/article.pl?sid=07/01/10/0125237&pagenum=1~
http://www.ne.jp/asahi/open/gallery/linux/vserver/vserverfc5/vserverfc5.htm~
http://d.hatena.ne.jp/darashi/20070328/1175089122~
http://www.dth.net/new_machine/vserver.html~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS