Powered by
Movable Type 4.1

« Courier-imapdのインストールと起動 | メインですよ(エントリーアーカイブ) | IPv4アドレスとリモートデスクトップの設定 »

CentOS5でのXen

パフォーマンスを向上させるために、
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する。
などが考えられる。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)