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) 市販ルータの設定メモ

市販のルータの設定をいろいろといじったのでメモ。
ちなみに機器名:BBR-4HG

LAN 側設定

項目名
LAN側IPアドレス 192.168.11.1
サブネットマスク 255.255.255.0
DHCPサーバ 使っても使わなくても

WAN側設定

項目名
WAN側IPアドレス 192.168.10.1
サブネットマスク 255.255.255.0
デフォルトゲートウェイ 192.168.10.101
DNSプライマリ(必要?) 指定されたもの
DNSセカンダリ(必要?) 指定されたもの

ネットワーク設定

項目名
アドレス変換 使用しない
NBTとMicrosoft-DSのルーティングを禁止する チェックをはずす(禁止しない)
その他 デフォルトで大丈夫なはず

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-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=no
HWADDR={NICMACアドレス}
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={NICMACアドレス}
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={NICMACアドレス}
編集終わればいったん network をリスタート
/etc/init.d/network restart
ping で確認

LinuxWindows
WindowsLinux
それぞれのIPに対して ping が通るか試す。
LinuxWindows は市販ルータでアドレス変換してると通らないかも

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
接続確認

外部のサイトに ping を打って確認する。


以上でインターネットの接続までの設定が完了。
次回は iptables の設定。

参考にさせていただきました。

http://centossrv.com/linux-router.shtml

今回使用したNIC

玄人志向 GBE-PCI2 LAN

玄人志向 GBE-PCI2 LANカード/ボード

玄人志向 GBE-PCI2 LANカード/ボード

ドライバインストール

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
 <サーバ用途>


vim .bash_profileとかに。

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

  • > PPPoE, NetworkManager( 線LANなどの複数の NIC を搭載しているとき、無線LANの暗号化キーなどの管理を行い、利用状況に応じてNICの自動切換えを行う ) 使わない

bluez-gnome, bluez-libs, bluez-utils

ipsec-tools, wpa_supplicant

  • > IPsecVPN関連のパッケージ

yp-tools, ypbind, nfs-utils, nfs-utils-lib

不要なデーモンを停止

$ 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のアップデートデーモン。勝手にアップデートされては困るので。

yum upate を行う

カーネルをアップデート対象から外し、アップデート

$ sudo vim /etc/yum.conf
exclude=kernel*

$ sudo yum update

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




つづく
http://d.hatena.ne.jp/moogme/20091128

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



つづく
http://d.hatena.ne.jp/moogme/20091127