xenの最近のブログ記事

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する。
などが考えられる。

  

このアーカイブについて

このページには、過去に書かれたブログ記事のうちxenカテゴリに属しているものが含まれています。

前のカテゴリはSolaris8です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

xen: 月別アーカイブ

Powered by Movable Type 4.1