#contents
* 設計 [#p0aec1b7]
- [0] 共通 domain0
-- centos4
--- RAM 256MB
--- swap 2GB
--- eth0 192.168.1.2
- [1] Oracle 通常環境
-- ora1
--- RAM 1024MB
--- swap 1GB
--- HDD 15GB
--- eth0 192.168.1.11
-- ora2
--- RAM 768MB
--- swap 1GB
--- HDD 15GB
--- eth0 192.168.1.12
- [2] Oracle RAC 環境 ([1]とデュアルブート)
-- rac1
--- RAM 896MB
--- swap 1GB
--- HDD 15GB
--- HDD共有 5GB
--- eth0 192.168.1.21
--- eth1 192.168.10.21
-- rac2
--- RAM 896MB
--- swap 1GB
--- HDD 15GB
--- HDD共有 5GB
--- eth0 192.168.1.22
--- eth1 192.168.10.22
* CentOS 4.4 のインストール [#m2a4ac77]
ディスクは次のように切っています。
[root@centos4 ~]# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/hda1 9.0G 7.5G 1009M 89% /
none 129M 0 129M 0% /dev/shm
/dev/mapper/Volume00-ora1
15G 69M 14G 1% /opt/ora1
/dev/mapper/Volume00-ora2
15G 69M 14G 1% /opt/ora2
/dev/mapper/Volume00-rac1
15G 69M 14G 1% /opt/rac1
/dev/mapper/Volume00-rac2
15G 69M 14G 1% /opt/rac2
/dev/mapper/Volume00-racshare
4.9G 42M 4.6G 1% /opt/racshare
* ソースコードからインストール [#xcc7ae73]
[root@centos4 Xen3.0]# tar xvpfz xen-3.0.4_1-src.tgz
...
[root@centos4 xen-3.0.4_1-src]# make world
* カーネルの再構築 [#xb59b5cd]
カーネルの定義内容を見直したいときは、作り直します。
dom0 ではネットワークインタフェースに dummy0 も使いたいので、
モジュールとして作るようにしておきます。
- Device Drivers
-- Network device support
--- Dummy net driver support
にて M にします。
[root@centos4 xen-3.0.4_1-src]# make linux-2.6-xen0-config CONFIGMODE=menuconfig
# make linux-2.6-xen0-build
# make linux-2.6-xen0-install
# depmod 2.6.16.33-xen0
# mkinitrd -v -f --with=sd_mod --with=scsi_mod /boot/initrd-2.6.16.33-xen0.img 2.6.16.33-xen0
domU では共有ディスク用に OCFS2 を使います。
raw device は kernel 2.6 ではなくなっています。
- File systems
-- OCFS2 file system support (EXPERIMENTAL)
にて M にします。
[root@centos4 xen-3.0.4_1-src]# make linux-2.6-xenU-config CONFIGMODE=menuconfig
# make linux-2.6-xenU-build
# make linux-2.6-xenU-install
# depmod 2.6.16.33-xenU
# mkinitrd -v -f --with=sd_mod --with=scsi_mod /boot/initrd-2.6.16.33-xenU.img 2.6.16.33-xenU
* tlsを無効にする [#y3535c97]
[root@centos4 ~]# mv /lib/tls /lib/tls.disabled
* /etc/grub.conf の設定 [#sf35a3bf]
dom0 用の設定を追記します。メモリを 256MB にしています。
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS dom0 (2.6.16.33-xen0)
root (hd0,0)
kernel /boot/xen-3.0.4-1.gz dom0_mem=262144
module /boot/vmlinuz-2.6.16.33-xen0 root=/dev/hda1 ro console=tty0
initrd /boot/initrd-2.6.16.33-xen0.img
title CentOS (2.6.9-42.0.8.EL)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-42.0.8.EL ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.9-42.0.8.EL.img
title CentOS-4 i386 (2.6.9-42.EL)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-42.EL ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.9-42.EL.img
* dom0 で起動 [#eced992c]
grub のメニューで選んで起動します。
メモリは実メモリは2GBなのですが、
256MBに制限されていることがわかります。
[root@centos4 ~]# uname -r
2.6.16.33-xen0
[root@centos4 ~]# cat /proc/meminfo
MemTotal: 262496 kB
MemFree: 15960 kB
Buffers: 8776 kB
Cached: 102712 kB
SwapCached: 10692 kB
Active: 143448 kB
Inactive: 71116 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 262496 kB
LowFree: 15960 kB
SwapTotal: 2096472 kB
SwapFree: 2048216 kB
Dirty: 28 kB
Writeback: 0 kB
Mapped: 128080 kB
Slab: 17220 kB
CommitLimit: 2227720 kB
Committed_AS: 247124 kB
PageTables: 2096 kB
VmallocTotal: 696312 kB
VmallocUsed: 1492 kB
VmallocChunk: 694792 kB
* domU の構築 [#c5426a6c]
domU 用の swap を作ります。
[root@centos4 ~]# cd /opt
[root@centos4 opt]# dd if=/dev/zero of=ora1-swap.img bs=1M count=1024
[root@centos4 opt]# dd if=/dev/zero of=ora2-swap.img bs=1M count=1024
[root@centos4 opt]# dd if=/dev/zero of=rac1-swap.img bs=1M count=1024
[root@centos4 opt]# dd if=/dev/zero of=rac2-swap.img bs=1M count=1024
[root@centos4 opt]# for i in *.img
> do
> mkswap $i
> done
Setting up swapspace version 1, size = 1073737 kB
Setting up swapspace version 1, size = 1073737 kB
Setting up swapspace version 1, size = 1073737 kB
Setting up swapspace version 1, size = 1073737 kB
/opt/ora1 に CentOS 4.4 をインストールするため、
ディレクトリなどの準備をします。
[root@centos4 opt]# cd ora1
[root@centos4 ora1]# mkdir bin boot dev etc home initrd lib media misc mnt opt proc root sbin srv sys tmp usr var
[root@centos4 ora1]# mkdir -p var/lock/rpm
[root@centos4 ora1]# rpm --root /opt/ora1 --initdb
[root@centos4 ora1]# rpm --root /opt/ora1 --import http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-4
[root@centos4 ora1]# mkdir -p var/cache/yum
/etc/fstab を書きます。
ディスクは後で sda1 と sda2 として見せるようにします。
[root@centos4 ora1]# cat etc/fstab
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/sda2 swap swap defaults 0 0
deviceファイルを作ります。
[root@centos4 ora1]# cd /opt/ora1/dev
[root@centos4 dev]# MAKEDEV -d /opt/ora1/dev -x console
[root@centos4 dev]# MAKEDEV -d /opt/ora1/dev -x null
[root@centos4 dev]# MAKEDEV -d /opt/ora1/dev -x zero
[root@centos4 dev]# MAKEDEV -d /opt/ora1/dev -x random
CentOS 4.4 を /opt/ora1 にインストールします。
DVD を入れて、/media/cdrom に mount しておきます。
[root@centos4 ora1]# mkdir /media/cdrom
[root@centos4 ora1]# mount -o ro /dev/cdrom /media/cdrom
[root@centos4 ora1]# yum --disablerepo=\* --enablerepo=c4-media --installroot=/opt/ora1 groupinstall Base
domU でも /lib/tls は無効にしておきます。
[root@centos4 ora1]# mv lib/tls lib/tls.disabled
最後に、domU 用のカーネルモジュールを入れておきます。
[root@centos4 ora1]# cp -Rp /lib/modules/2.6.16.33-xenU lib/modules/
* domU の起動 [#z22f8097]
/opt/ora1 を umount したいところですが、うまくいきません。
/etc/fstab にて /opt/ora1 の mount を外して再起動します。
domU の設定ファイル /opt/ora1.conf を書きます。
kernel = "/boot/vmlinuz-2.6.16.33-xenU"
ramdisk = "/boot/initrd-2.6.16.33-xenU.img"
memory = 1024
name = "ora1"
vif = [ 'mac=XX:YY:ZZ:1F:63:CB, bridge=xenbr0' ]
disk = [ 'phy:Volume00/ora1,sda1,w', 'file:/opt/ora1-swap.img,sda2,w' ]
root = "/dev/sda1 ro"
extra = "4"
起動してみます。プロンプトが出て来れば成功です。
[root@centos4 opt]# xm create -c ora1.conf
...
CentOS release 4.4 (Final)
Kernel 2.6.16.33-xenU on an i686
localhost login:
* domU でのネットワークの設定 [#mec9092e]
Xen としての設定は済んでいるので、OS側での設定だけです。
- /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ora1
GATEWAY=192.168.1.1
- /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=XX:YY:ZZ:1F:63:CB
IPADDR=192.168.1.11
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
- /etc/resolv.conf
nameserver 192.168.1.1.1
ここまで書いたら、eth0 を有効にすることで使えるようになります。
domU を再起動してもいいでしょう。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ./ifup eth0
* domU の timezone の設定 [#m50c39d6]
groupinstall Base された状態では何も設定されていないので、
JST になりません。system-config-date をインストールします。
[root@localhost ~]# yum install system-config-date
[root@localhost ~]# /usr/sbin/timeconfig
timeconfig では Asia/Tokyo を選びます。
* domU の複製 [#t0856abe]
1つ動く環境ができたら、他の domU にもコピーして簡単に複製できます。mount しておいて、cp するだけです。
[root@localhost ~]# cp -Rp /opt/ora1/* /opt/ora2/
ホスト名やネットワークの設定を変えるのを忘れないようにしましょう。
あとは domU の設定ファイル /opt/ora1.conf をコピーして書き換えます。
同じように rac1 や rac2 も用意しました。
メモリの量なのですが、hypervisor が少々使うため、
上の設計通りにはいきません。xm list や xm info の出力を見て調整しましょう。
[root@localhost ~]# xm info
* 2つのブリッジインタフェースを作成 [#c55ca355]
Oracle 10g RAC のように2つのネットワークが必要な場合、
ブリッジも2つ作る必要があります。
/etc/xen/scripts/my-network-bridge を作ります。
NIC が1枚しかないので、eth0 と dummy0 にしています。
#!/bin/sh
set -e
OP=$1
shift
script=/etc/xen/scripts/network-bridge
case ${OP} in
start)
$script start vifnum=0 bridge=xenbr0 netdev=eth0
$script start vifnum=1 bridge=xenbr1 netdev=dummy0
;;
stop)
$script stop vifnum=0 bridge=xenbr0 netdev=eth0
$script stop vifnum=1 bridge=xenbr1 netdev=dummy0
;;
status)
$script status vifnum=0 bridge=xenbr0 netdev=eth0
$script status vifnum=1 bridge=xenbr1 netdev=dummy0
;;
*)
echo "Unknown command: ${OP}"
echo "$0 : {start|stop|status}"
exit 1
esac
実行権限を付けておきます。
[root@centos4 ~]# cd /etc/xen/scripts/
[root@centos4 scripts]# chmod 755 my-network-bridge
/etc/xen/xend-config.sxp を編集して、
network-bridge の代わりに my-network-bridge が呼ばれるように設定します。
#(network-script network-bridge)
(network-script my-network-bridge)
dummy0 を有効にするため、/etc/modprobe.conf に下記の2行を追記します。
alias dummy0 dummy
modprobe で読み込みます。
[root@centos4 ~]# modprobe dummy
dummy0 にも IP アドレスを振っておくため、
/etc/sysconfig/network-scripts/ifcfg-dummy0 を書いておきます。
HWADDR (MACアドレス) は要りません。
DEVICE=dummy0
BOOTPROTO=static
BROADCAST=192.168.10.255
# HWADDR=XX:YY:ZZ:1F:63:EA
IPADDR=192.168.10.2
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes
TYPE=Ethernet
dummy0 を up にしておきます。
[root@centos4 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@centos4 network-scripts]# ./ifup dummy0
xend を再起動します。
[root@centos4 ~]# /etc/init.d/xend stop
[root@centos4 ~]# /etc/init.d/xend start
brctl で見ると、2つブリッジが出来ていることがわかります。
[root@centos4 ~]# brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.feffffffffff no peth0
vif0.0
xenbr1 8000.feffffffffff no pdummy0
vif0.1
* 2つのネットワークの動作確認 [#c8cf194b]
rac1 と rac2 のそれぞれの domU にて、
eth0 と eth1 の設定をします。
[root@rac1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
HWADDR=XX:YY:ZZ:1F:63:DA
IPADDR=192.168.1.21
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
[root@rac1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.10.255
HWADDR=XX:YY:ZZ:1F:63:DB
IPADDR=192.168.10.21
NETMASK=255.255.255.0
NETWORK=192.168.10.0
ONBOOT=yes
TYPE=Ethernet
rac2 も同様です。
これで domU を再起動すると、無事2つのネットワークができました。
ping して確認しましょう。
[root@rac1 ~]# ping 192.168.1.22
PING 192.168.1.22 (192.168.1.22) 56(84) bytes of data.
64 bytes from 192.168.1.22: icmp_seq=0 ttl=64 time=0.729 ms
64 bytes from 192.168.1.22: icmp_seq=1 ttl=64 time=0.224 ms
--- 192.168.1.22 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.224/0.476/0.729/0.253 ms, pipe 2
[root@rac1 ~]# ping 192.168.10.22
PING 192.168.10.22 (192.168.10.22) 56(84) bytes of data.
64 bytes from 192.168.10.22: icmp_seq=0 ttl=64 time=0.293 ms
64 bytes from 192.168.10.22: icmp_seq=1 ttl=64 time=0.221 ms
--- 192.168.10.22 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1007ms
rtt min/avg/max/mdev = 0.221/0.257/0.293/0.036 ms, pipe 2
----
#comment