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