#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