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
CentOS で自作ルータ(2) 市販ルータの設定メモ
CentOS で自作ルータ(1) ネットワークの設定
市販の4000円くらいのルータじゃ心もとないので、ルータを自作することに。
構成
メインPC、サブPCは Windows。
複雑な処理に耐えれるように、ゲームのサーバとして使用するサブPCを自作ルータに直結させる。
(見づらい)図
自作ルータ 市販ルータ
インターネット ----- ppp0 | eth2 | eth1 ---- WAN | ポート1
| |
サブPC メインPC
IP
| 機器名 | インタフェース名 | IP | デフォルトゲートウェイ |
|---|---|---|---|
| インターネット | インターネット | - | - |
| 自作ルータ | ppp0 | グローバルIP/32 | - |
| 自作ルータ | eth1 | 192.168.10.101/24 | - |
| 自作ルータ | eth2 | 192.168.12.102/24 | - |
| 市販ルータ | WAN | 192.168.10.1/24 | 192.168.10.101 |
| 市販ルータ | ポート1 | 192.168.11.1/24 | - |
| メインPC | NIC | 192.168.11.12 | 192.168.11.1 |
| サブPC | NIC | 192.168.12.10 | 192.168.12.102 |
/etc/sysconfig/network-scripts/ifcfg-eth[0-2] の設定
それぞれの NIC は別々のネットワークアドレスになる。
ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
BROADCAST=192.168.10.255
IPADDR=192.168.10.101
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=192.168.10.0
HWADDR={NIC の MACアドレス}
ifcfg-eth2
DEVICE=eth2
BOOTPROTO=static
ONBOOT=yes
BROADCAST=192.168.12.255
IPADDR=192.168.12.102
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=192.168.12.0
HWADDR={NIC の MACアドレス}
編集終わればいったん network をリスタート
/etc/init.d/network restart
adsl-setup
パッケージのインストール
yum install rp-pppoe
接続設定
いくつか質問されるので、環境に合わせて入力する。
入力行だけ記述するので、詳しい内容は自分でコマンドたたいて確認。
$ adsl-setup Enter your Login Name (default root): プロバイダから指定されたID。 (default eth0): Enter Enter the demand value (default no):Enter Enter the DNS information here: プロバイダから指定されたDNS。 Enter the secondary DNS server address here: プロバイダから指定されたDNS。(セカンダリ) Please enter your Password: プロバイダから指定されたパスワード。 Please re-enter your Password: プロバイダから指定されたパスワード。(確認) normal user to start or stop DSL connection (default yes): no (rootのみ接続を許可するか) Choose a type of firewall (0-2): 2 (ほかのPCの中継をするので2) Please enter no or yes (default no):yes
最後に確認があるので y を入力すると設定が完了する。
完了すると設定ファイル名(ifcfg-ppp0)が表示される。
これがWAN側のインタフェース名になる。
設定が終わったので、再度リスタート
ppp0 の起動が [OK] になれば成功。
/etc/rc.d/init.d/network restart
参考にさせていただきました。
今回使用したNIC

- 出版社/メーカー: 玄人志向
- 発売日: 2005/08/08
- メディア: Personal Computers
- 購入: 1人 クリック: 44回
- この商品を含むブログ (12件) を見る
ドライバインストール
http://www.viaarena.com/Driver/velocity_driver_v31_via.zip
$ cd {解凍したディレクトリ}/nic/inst/LINUX/Velocity_1.30/
$ make install
$ insmod velocityget.ko
確認
$ lsmod | grep velocityget velocityget 48292 0
CentOS5.4の初期セットアップ
http://d.hatena.ne.jp/moogme/20091127 のつづき
hosts設定( mac側 )
$ sudo vim /etc/hosts 192.168.0.111 ao-xen01.moog.me $ ssh root@ao-xen01.moog.me
ユーザ作成、sudoers 追加 ( xen ゲストOS )
# adduser moogme # passwd moogme # visudo moogme ALL=(ALL) ALL # exit
鍵を送り、ログイン ( mac側 )
$ scp -r .ssh ao-xen01.moog.me: $ ssh ao-xen01.moog.me
サーバ用途記述 ( xen ゲストOS )
$ sudo /etc/motd <サーバ用途>
export PATH=$HOME/local/bin:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/bin:/usr/kerberos/sbin
sshd設定
http://d.hatena.ne.jp/moogme/20090622
# iptable設定
# http://d.hatena.ne.jp/moogme/20090623
これって、親でも設定しているから、いらないかな?
不要なパッケージを削除
パッケージ削除。
$ sudo yum remove dhclient dhcpv6-client NetworkManager rp-pppoe bluez-gnome bluez-libs bluez-utils ipsec-tools wpa_supplicant yp-tools ypbind nfs-utils nfs-utils-lib
削除したものは以下のもの。
dhclient, dhcpv6-client
- > IPは固定なのでDHCPは必要なし
rp-pppoe, NetworkManager
bluez-gnome, bluez-libs, bluez-utils
- > bluetooth関連
ipsec-tools, wpa_supplicant
- > IPsecVPN関連のパッケージ
不要なデーモンを停止
$ sudo chkconfig avahi-daemon off $ sudo chkconfig cups off $ sudo chkconfig gpm off $ sudo chkconfig pcscd off $ sudo chkconfig xfs off $ sudo chkconfig yum-updatesd off
avahi-daemon
- > ローカルネットワーク上のIPネットワーク機器を、 DNSサーバー などの所在地情報サーバーに頼らずに検知し、自動的に動作させる仕組みを与えるデーモン
cupsd
- > UNIX系OS標準のプリンタデーモン
gpm
- > 実機を CUI で使用する場合、マウス操作でコピー&ペーストを可能にするデーモン
pcscd
xfs
- > X-Window上で文字を表示するためのフォントサーバーデーモン
yum-updatesd
- > CentOS5のアップデートデーモン。勝手にアップデートされては困るので。
ntpインストール
インストール $ sudo yum -y install ntp $ sudo vim /etc/ntp.conf #server 0.centos.pool.ntp.org # コメントアウト #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server ntp1.jst.mfeed.ad.jp # 追加 server ntp2.jst.mfeed.ad.jp server ntp3.jst.mfeed.ad.jp 時刻を合わせる $ sudo ntpdate ntp1.jst.mfeed.ad.jp $ sudo hwclock --systohc $ /etc/rc.d/init.d/ntpd start $ chkconfig ntpd on
関係ないけどこれ、ちょっと笑った。
$ hwclock --systohc 残念ながら、ハードウェアク時計の変更はスーパーユーザでしか行なえません。 $ LANG=C hwclock --systohc Sorry, only the superuser can change the Hardware Clock.
参考にさせて頂きました。
http://www.sssg.org/blogs/naoya/archives/1571
http://p-lab.freeflux.net/blog/archive/2009/01/28/post-107.html
http://sixwish.jp/Technote/Xendomu/centos5-01/
http://www.obenri.com/_minset_cent5/daemon_cent5.html
http://www.obenri.com/_minset_cent5/yum_cent5.html
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/611usefllyum.html
xen の Domain-U(ゲスト) に CentOS5.4をインストール
http://d.hatena.ne.jp/moogme/20091126 のつづき。
CentOSにはこのような便利なコマンドがあるので使う。
$ sudo LANG=C virt-install \ %--paravirt \ %--name=xen01 \ %--vcpus=2 \ %--ram=512 \ %--file=/dev/VolGroup00/LogVol02 \ %--location=http://ftp.riken.jp/Linux/centos/5/os/i386/ \ %--nographics \ %--nonsparse Starting install... Retrieving file .treeinfo... | 413 B 00:00 Retrieving file vmlinuz... | 2.1 MB 00:02 Retrieving file initrd.img... | 6.6 MB 00:07Creating domain... | 0 B 00:00 error: Failed to get local hostname Domain installation still in progress. You can reconnect to the console to complete the installation process.
なんと!
$ sudo xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 512 2 r----- 18.8 xen01 1 511 2 -b---- 1.6
でも、できてる。
ここ http://blog.dc-d.jp/archives/343.html を見ながら、コンソールで再開する。
$ sudo xm console xen01
*** Choose a Language
-> Japanese
*** Configure TCP/IP
- Enable IPv4 support
-> Manual configuration
- Enable IPv6 support
-> Automatic neighbor discovery (RFC 2461)
*** Manual TCP/IP Configuration
| IPv4 address: 192.168.0.111___ / 255.255.255.0___ |
| Gateway: 192.168.0.1______________________________ |
| Name Server: 192.168.0.1______________________________ |
*** Retrieving
-> Retrieving images/stage2.img...
このあとすごく長い。。
*** Would you like to use VNC?
-> Use text mode
*** Language Unavailable
-> OK
*** CentOS
-> OK
*** Warning
The partition table on device xvda (Xen Virtual Block Device 51199 MB) ...
-> Yes
*** Partitioning Type
-> Yes
*** Warning
| You have chosen to remove all Linux partitions |
| (and ALL DATA on them) on the following drives: |
| |
| xvda (Xen Virtual Block Device 51199 MB)
-> Yes
*** Review Partition Layout
-> Yes
*** Partitioning
| Device Start End Size Type Mount Point | | VG VolGroup00 51072M VolGroup ^ |
| LV LogVol01 1056M swap : |
| LV LogVol00 50016M ext3 / : |
| /dev/xvda : |
| xvda1 1 13 101M ext3 /boot : |
| xvda2 14 6527 51097M physical v : |
-> OK
*** Boot Loader Configuration
-> OK
*** Boot Loader Configuration
-> OK
*** Boot Loader Configuration
-> OK
*** Boot Loader Configuration
-> OK
*** Boot Loader Configuration
-> OK
*** Configure Network Interface
-> OK
*** Network Configuration for eth0
| [*] Activate on boot |
| [*] Enable IPv4 support |
| [ ] Enable IPv6 support |
-> OK
*** IPv4 Configuration for eth0
-> OK
*** Miscellaneous Network Settings
-> OK
*** Hostname Configuration
| (*) manually ao-xen01.moog.me________ |
-> OK
*** Time Zone Selection
[ ] System clock uses UTC
Asia/Tokyo
-> OK
*** Root Password
| Password: ***********_____________ |
| Password (confirm): ***********_____________ |
*** Package selection
| [*] Server ^ |
| [*] Customize software selection |
*** Package Group Selection
追加した。
| [*] Development Libraries : |
| [*] Development Tools : |
削除した。
| [ ] FTP Server : |
| [ ] GNOME Desktop Environment : |
| [ ] Games and Entertainment : |
| [ ] Graphical Internet # |
| [ ] Graphics : |
| [ ] Java : |
| [ ] News Server : |
| [ ] Office/Productivity : |
| [ ] Printing Support : |
| [ ] Sound and Video # |
| [ ] Windows File Server : |
| [ ] X Window System v |
| [ ] Dialup Networking Support : |
Development 系にチェックを入れて、あと、いくつかはチェックを外した。
*** Installation to begin
-> OK
*** Package Installation
終わるまで待つ。
*** Complete
-> Reboot
あれ、親のコンソールに戻った。
$ sudo xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 512 2 r----- 20.9
しかも、xen01がない。
起動
$ sudo xm create xen01 Using config file "/etc/xen/xen01". Started domain xen01 $ sudo xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 512 2 r----- 22.4 xen01 2 511 2 -b---- 6.4
OK!
あとは普通にsshできる
$ ssh root@192.168.0.111
すばらしい。
参考にさせて頂きました。
http://tomo.ac/goodstream/xen/centos5/index.html
http://blog.dc-d.jp/archives/343.html
http://linux.die.net/man/1/virt-install
LV(論理ボリューム)のサイズを変更。
http://d.hatena.ne.jp/moogme/20091031 のつづき。
↑で、xen をインストールし Domein-0 (ホスト)は動いているの確認したので、Domein-U (ゲスト) をインストールしたい。
ゲスト のインストール先は、ディスクイメージファイルに行うか、LVMで行うかでパフォーマンスに差がでるので
http://mtl.recruit.co.jp/blog/2008/02/xendomainulvmfile.html
LVMベースで行うことにした。
しかし、こうなっていた。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
446G 2.1G 421G 1% /
/dev/sda1 99M 26M 69M 27% /boot
tmpfs 257M 0 257M 0% /dev/shm
none 256M 104K 256M 1% /var/lib/xenstored
$ sudo lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID 7urezM-Z1Sh-sGv7-vTan-pWLA-bO0G-MSvGpF
LV Write Access read/write
LV Status available
# open 1
LV Size 460.25 GB
Current LE 14728
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol01
VG Name VolGroup00
LV UUID 68KAFp-rZ3p-mrJh-d0lM-a1B9-kdSL-YNwicE
LV Write Access read/write
LV Status available
# open 1
LV Size 5.41 GB
Current LE 173
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
新しくLV(論理ボリューム)を作ろうにも、空きがない状態だった。
そのためホストが入っている LogVol00 ( 460G ) を20G程度に縮小し空きを作成する。
LiveCD からCentOSを起動しLVを操作する
http://ftp.riken.jp/Linux/centos/5.4/isos/i386/
からとってくる
mac 側で
$ wget "http://ftp.riken.jp/Linux/centos/5.4/isos/i386/CentOS-5.4-i386-LiveCD.iso"
CDに焼き、LiveCDをサーバに入れて起動。
# LV縮小の操作については、保存していた記事が消えたのでちょっと不安。
# こちらを見た方がよい -> http://nekoit.blog37.fc2.com/blog-entry-2.html
rootでログインし、
vg有効化 # lvm vgchange -a y /dev/VolGroup00 ファイルシステムの整合性を確認 # e2fsck -f /dev/VolGroup00/LogVol00 ファイルシステムの容量を変更 # resize2fs /dev/VolGroup00/LogVol00 20G 論理ボリュームの容量変更 # lvm lvresize -L 20G /dev/VolGroup00/LogVol00 再起動 # shutdown -r now
CDを抜き、通常通り起動する。
物理ボリュームの確認 $ sudo pvdisplay -C PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup00 lvm2 a- 465.66G 440.25G 論理ボリュームの確認 $ sudo lvdisplay -C LV VG Attr LSize Origin Snap% Move Log Copy% Convert LogVol00 VolGroup00 -wi-ao 20.00G LogVol01 VolGroup00 -wi-ao 5.41G
これで、ホストが入っている環境を 20G にできたので、440G の空きを作ることができた。
次にゲストを入れるためのLVを作る。
論理ボリュームの作成 VolGroup00/LogVol02 $ sudo lvcreate -L 50G -n LogVol02 VolGroup00 Logical volume "LogVol02" created 論理ボリュームの確認 $ sudo lvdisplay -C LV VG Attr LSize Origin Snap% Move Log Copy% Convert LogVol00 VolGroup00 -wi-ao 20.00G LogVol01 VolGroup00 -wi-ao 5.41G LogVol02 VolGroup00 -wi-ao 50.00G
OK.
次は ゲストのインストール。
参考にさせて頂きました。
http://nekoit.blog37.fc2.com/blog-entry-2.html