CentOSをLinux-VServerで仮想化

メモリやハードディスクを共有した環境を作りたかったので入れてみた。
Linux-VServerを入れてみたのでメモ。

Vserver が動くカーネルにする

以下の内容を追記
$ vi /etc/yum.repos.d/dhozac-vserver.repo

[dhozac-vserver]
name=Linux-VServer related packages for CentOS $releasever - $basearch
baseurl=http://rpm.hozac.com/dhozac/centos/$releasever/vserver/$basearch
gpgkey=http://rpm.hozac.com/conf/keys/RPM-DHOZAC-GPG-KEY
yum をアップデートしてインストール
$ yum update yum
$ yum install kernel
$ reboot
子供のIPで親に入らないように、親の SSH が Listen するIPを指定する。
$ vi /etc/ssh/sshd_config

ListenAddress $親のIP

$ /etc/init.d/sshd restart
VServer をインストール
$ yum install util-vserver{,-core,-lib,-sysv,-build}
$ /etc/init.d/vprocunhide start
$ chkconfig vservers-default on 
$ yum update
仮想環境のテンプレートになる環境を作成

今後はこの環境をコピーして新しい環境を作成する。

# template という名前で作成
$ vserver template build -m yum --context 42 --hostname template.co.jp --interface eth0:192.168.255.1/24  -- -d centos5

# yum をインストール
$ vyum template -- install yum

# 仮想環境内で yum 管理できるようにする
$ vserver template pkgmgmt internalize

# resolv.conf をコピー
$ cp /etc/resolv.conf /vservers/template/etc/.

# テンプレートを起動
$ vserver template start

# テンプレートに入る
$ vserver template enter

# 時計を日本時間にする
$ cp /usr/share/zoneinfo/Japan /etc/localtime

# 最低限必要なパッケージをインストール
$ yum install vim-enhanced openssh-server openssh-clients passwd rootfiles

# sshd を起動
$ /etc/init.d/sshd start

# pam の設定を変える
$ sed --in-place -e "s/^session.*required.*pam_loginuid.so/# session\trequired\tpam_loginuid.so/g" /etc/pam.d/*

# passwd から shadow を作成
$ pwconv

# とりあえず root で ssh できるように root のパスワードを親のものに
$ vi /etc/shadow
親の root の行をコピーして上書き
root をコピーして新規環境を作成
# 親で実行
$ vserver test build -m clone --hostname test --interface eth0:192.168.255.2/24 -- --source /vservers/template
reboot 時に起動するようにする
# 親で実行
$ echo default > /etc/vservers/test/apps/init/mark 
起動している子供の一覧
$ /usr/sbin/vserver-stat