ディスクは次のように切っています。
[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
[root@centos4 Xen3.0]# tar xvpfz xen-3.0.4_1-src.tgz ... [root@centos4 xen-3.0.4_1-src]# make world
カーネルの定義内容を見直したいときは、作り直します。
dom0 ではネットワークインタフェースに dummy0 も使いたいので、 モジュールとして作るようにしておきます。
にて 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 ではなくなっています。
にて 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
[root@centos4 ~]# mv /lib/tls /lib/tls.disabled
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
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 用の 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/
/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:
Xen としての設定は済んでいるので、OS側での設定だけです。
NETWORKING=yes HOSTNAME=ora1 GATEWAY=192.168.1.1
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
nameserver 192.168.1.1.1
ここまで書いたら、eth0 を有効にすることで使えるようになります。 domU を再起動してもいいでしょう。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ./ifup eth0
groupinstall Base された状態では何も設定されていないので、 JST になりません。system-config-date をインストールします。
[root@localhost ~]# yum install system-config-date [root@localhost ~]# /usr/sbin/timeconfig
timeconfig では Asia/Tokyo を選びます。
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
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
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