パフォーマンスを向上させるために、
Domain-Uを、Domain-0上の仮想HDDファイルにインストールするのではなく、
Domain-0の使用していないHDD領域にDomain-U専用のLVMパーティションを作成し、
そのパーティションに直接Domain-UのCentOS5をインストールする方針である。
ただし、これをするとライブマイグレーションなどの恩恵にはあずかれない(と確か思った)
【Domain-0】
Xenの場合、語弊があるのですが、一般に「ホストOS」などと言われるやつです。
■CentOS5インストール
CentOS5のインストール時に「仮想化」のパッケージが必要なだけである。
それ以外はほとんど最小限にする。
GUIもいらない。
そうすれば、Domain-0は64MBのメモリでも運用できる。
○パーティションは特に考えず、
/dev/sda1 ext3 /
/dev/sda2 swap
としてあり、未使用領域にDomain-Uをインストールする計画である。
○起動daemon
# chkconfig --list | grep 3:on
~いろいろ~
xend 0:off 1:off 2:on 3:on 4:on 5:off 6:off
xendomains 0:off 1:off 2:off 3:on 4:on 5:off 6:off
※この2つがあればよい
■LVMパーティション作成
○下記のようにLVMパーティション(8e)を/dev/sda3に作成する
# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 36.3 GB, 36398825472 bytes
255 heads, 63 sectors/track, 4425 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 522 4192933+ 83 Linux
/dev/sda2 523 587 522112+ 82 Linux swap / Solaris
/dev/sda3 588 4425 30828735 8e Linux LVM
○Physical Volumeの作成
# pvcreate /dev/sda3
○Volume Groupの作成
# vgcreate vg /dev/sda3
○Logical Volumeの作成
# /usr/sbin/lvcreate -L 7000M -n lv_domain-u1 vg
# /usr/sbin/lvcreate -L 7000M -n lv_domain-u2 vg
# /usr/sbin/lvcreate -L 7000M -n lv_domain-u3 vg
○snapshotの作成
※snapshotは、OSインストール時や、大量ファイルコピー時には作成しないこと。
下記の設定の場合、snapshot作成時から2GB以上の差分が発生した場合、
snapshotが100%を超えて、破壊される恐れがある。
# /usr/sbin/lvcreate -s -L 2G -n snap_domain-u1 /dev/vg/lv_domain-u1
# /usr/sbin/lvcreate -s -L 2G -n snap_domain-u2 /dev/vg/lv_domain-u2
# /usr/sbin/lvcreate -s -L 2G -n snap_domain-u3 /dev/vg/lv_domain-u3
結果
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 vg lvm2 a- 29.40G 2.89G
# vgs
VG #PV #LV #SN Attr VSize VFree
vg 1 3 3 wz--n- 29.40G 2.89G
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
lv_domain-u1 vg owi-ao 6.84G
lv_domain-u2 vg owi-ao 6.84G
lv_domain-u3 vg owi-ao 6.84G
snap_domain-u1 vg swi-a- 2.00G lv_domain-u1 8.02
snap_domain-u2 vg swi-a- 2.00G lv_domain-u2 0.46
snap_domain-u3 vg swi-a- 2.00G lv_domain-u3 10.67
■xenの設定
○/etc/xen/xend-config.sxp
# domain0が使用するメモリを64MBにする設定
(dom0-min-mem 64)
# (network-script network-bridge)
(network-script network-xen-multi-bridge)
※これくらいしかいじっていない
network-scriptの引数を、network-bridgeから、network-xen-multi-bridgeに変更した理由は、
nicを複数使うからであり、その場合、network-xen-multi-bridgeファイルを改めて
/etc/xen/scripts内に作成する必要がある。
■xen 仮想ブリッジ 作成
# cd /etc/xen/scripts
# cp network-bridge network-bridge.xen
# vi network-xen-multi-bridge
---------------------------------------------
#!/bin/sh
# network-xen-multi-bridge
# Exit if anything goes wrong
set -e
# First arg is operation
OP=$1
shift
script=/etc/xen/scripts/network-bridge.xen
case ${OP} in
start)
$script start vifnum=1 bridge=xenbr1 netdev=eth1
$script start vifnum=0 bridge=xenbr0 netdev=eth0
;;
stop)
$script stop vifnum=1 bridge=xenbr1 netdev=eth1
$script stop vifnum=0 bridge=xenbr0 netdev=eth0
;;
status)
$script status vifnum=1 bridge=xenbr1 netdev=eth1
$script status vifnum=0 bridge=xenbr0 netdev=eth0
;;
*)
echo 'Unknown command: ' ${OP}
echo 'Valid commands are: start, stop, status'
exit 1
esac
---------------------------------------------
# cd /etc/xen
※これは上記と同様の編集である。
vi xend-config.sxp
(network-script network-bridge)
↓
# (network-script network-bridge)
(network-script network-xen-multi-bridge)
※OSをリブートし、その後、仮想インターフェースが増えているのがわかる
# reboot
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0B:DB:91:09:49
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr 00:0B:DB:91:09:4A
inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
peth1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
vif0.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
xenbr1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
【Domain-U】
いわゆるゲストOSというやつです。
このたびは、CentOS5を使用します。
■Domain-U インストール
Domain-0のCUIのvirt-installコマンドを使って
centos5をインストールします。
インストール先のパーティションは
/dev/vg/lv_domain-u3,[lv_domain-u1],[lv_domain-u2]
(それぞれ、7GB)
インストールポイントは
http://localhost/centos5/
のように、indexesを設定してあるWebサイトに
CentOS5のDVDの中身を全部コピーして公開しておくか、
hoge-server:/nfs/centos5
のように、CentOS5のDVDの中身を全部コピーしたサーバーの
ディレクトリをnfsマウントして公開しておく。
virt-installの誘導の通りにインストールしていってください。
■Domain-Uの設定
Domain-Uをインストールすると、
/etc/xen/domain-u1 などの設定ファイルができる
メモリ:
domain-u1 384MB
domain-u2 256MB
domain-u3 128MB
とした。
例:/etc/xen/domain-u1
○nic1枚で、Domain-0のeth0を使用したいとき
vif = [ 'mac=00:16:3e:1b:c8:36, bridge=xenbr0', ]
○nic2枚で、Domain-0のeth0とeth1を使用したいとき
vif = [ 'mac=00:16:3e:1b:c8:36, bridge=xenbr0', 'mac=00:16:3e:1b:c8:37, bridge=xenbr1', ]
※Domain-U上の/etc/sysconfig/network-script/ifcfg-ethxの
macアドレスとの整合性に注意すること
■xen Domain-U 自動起動設定
/etc/xen/autoの中にDomain-Uの設定ファイルのシンボリックリンクがあると
Domain-0が起動したときに、そのDomain-Uも自動起動する
# cd /etc/xen/auto
# ln -s /etc/xen/domain-u1
【Domain-Uのbackupの方法(xvdaへのアクセスの仕方)】
※参考:
http://pinet.jp/marron/som?ix=10046&ml=fedora
http://www.linux.or.jp/JF/JFdocs/Bootdisk-HOWTO-4.html
http://www.linux.or.jp/JM/html/util-linux/man8/losetup.8.html
1.まず、LVMの論理ボリューム/dev/vg/lv_domain-u3や
/dev/vg/snap_domain-u3をデバイスとして扱わなくてはならない。
しかし、Domain-Uが稼動中の場合、そのDomain-Uがインストール
されている論理ボリュームにアクセスすることは厳禁である。
そこで、バックアップのときは、snapshotをとり、
そのsnapshot領域をlosetupでデバイス化する。
snapshot領域をループバックデバイス/dev/loop0に割り当てる
# losetup /dev/loop0 /dev/vg/snap_domain-u3
2.fdiskで/dev/loop0の中身を確認してみる。
(構成がわかっている場合は必要ない)
# fdisk -l -u /dev/loop0
Disk /dev/loop0: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders, total 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/loop0p1 * 63 5751269 2875603+ 83 Linux
/dev/loop0p2 5751270 6281414 265072+ 82 Linux swap / Solaris
3.データの開始地点をシェル変数OFFSETに代入し、
/dev/loop0の$OFFSET byteの地点から/dev/loop1に割り当てる。
/dev/loop1は=/dev/xvda1とみなせる。
# ((OFFSET=63*512))
# losetup -o $OFFSET /dev/loop1 /dev/loop0
4./dev/loop1(=/dev/xvda1)はext3でmountできる。
これをtar cvzfなどする。
# mount -t ext3 /dev/loop1 /mnt/snapshot
# cd /mnt/snapshot/
# ls
account crash empty lib lock mail nis preserve spool yp
cache db ftp local log named opt run tmp
※または、ext3でmountせずにdumpする方法もある。
# dump -0uf /mnt/backup-server/domain-u3.dump /dev/loop1
5.終了処理は下記のようにする。
# cd /mnt
# umount /mnt/snapshot
# losetup -d /dev/loop1
# losetup -d /dev/loop0
バックアップスクリプトの例としては、
virsh dumpxml hoge を行い、
snapshotを/dev/loop1に割り当て、
/dev/loop1を/mnt/snapshotでmountし、
その中のroot,etc,usr/local/src,home,var,bootをtar cvzfする。
などが考えられる。