ラベル DRBD の投稿を表示しています。 すべての投稿を表示
ラベル DRBD の投稿を表示しています。 すべての投稿を表示

2008/07/25

Xen DomU上でDRBDを使う・その6・ベンチマーク

DRBDデバイス/dev/drbd0に直接書込み、速度を測定する。
[root@dc2 ~]# dd bs=64M if=/dev/zero of=/dev/drbd0
dd: writing `/dev/drbd0': No space left on device
64+0 records in
63+0 records out
4294799360 bytes (4.3 GB) copied, 227.723 seconds, 18.9 MB/s
[root@dc2 ~]#
このとき、もう一方のノードdc3の/var/log/messagesには、次のようなメッセージが記録される。この原因は不明。
Jul 24 22:32:08 dc3 kernel: drbd0: local disk flush failed with status -95


この結果を、『その2・DRBD設定前の確認』のときの結果と比較してみよう。DRBDを経由せず、直接/dev/xvdbに書込んだ場合が39.9Mbyte/秒、DRBD経由で/dev/drbd0に書込んだ場合が18.8Mbyte/秒。
/dev/drbd0に書込む場合、/dev/xvdbに書込む場合に比べて、ディスクへの書込みが二倍以上発生する。なぜなら、/dev/drbd0に書込むということは、dc2上の/dev/xvdbとdc3上の/dev/xvdbの両方にデータ書込んだ上で、メタデータも書込むからだ。これらの書込みは結局、Dom0上の同一ディスクへの書込みとなるため直列化され、倍以上の時間が掛かっていると考えられる。

この結果より、/etc/drbd.confで設定した「rate 5M」は、初期同期の場合には効いているが、通常のディスクアクセス時には効いていない事も解る。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その5・初期同期

両ノードdc[23]で設定およびDRBDリソースの初期化を行った時点では、ディスクの同期が取れていない不一致(Inconsistent)状態にある。これを解消するため、『The initial device synchronization』に従い、初期同期を行う。
初期同期コマンドは、dc[23]のどちらか一方からのみ実行すればよい。もし、有効なデータがどちらかにのみ入っている場合は、そのノードで実行する。そうでない場合は、どちらで実行してもよい。
[root@dc3 ~]# drbdadm -- --overwrite-data-of-peer primary r0
drbd0: Forced to consider local data as UpToDate!
[root@dc3 ~]#
しばらく待って/proc/drbdを確認する。
[root@dc3 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:8976 nr:0 dw:0 dr:8976 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:4185164
[>....................] sync'ed:  0.3% (4185164/4194140)K
finish: 4:04:08 speed: 244 (240) K/sec
[root@dc3 ~]#
同期速度が、直近244Kbyte/秒、平均240Kbyte/秒しか出ていない(しつこいようだが、Mbpsではないことに注意)。「rate 5M」と設定したので、5Mbyte/秒出るはずだが、どうもデフォルト値の250Kbyte/秒(『Appendix A. DRBD system manual pages』参照)が適用されているようだ。
これを回避するために、設定を再読み込みさせる。
[root@dc3 ~]# drbdadm adjust r0
[root@dc3 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:86320 nr:0 dw:0 dr:86320 al:0 bm:5 lo:60 pe:68 ua:60 ap:0 oos:4108092
[>....................] sync'ed:  2.2% (4108092/4194140)K
finish: 0:12:43 speed: 5,344 (1,244) K/sec
[root@dc3 ~]#
設定の通り、5Mbyte/秒に近い数字が出ている。これは、dc2側でも実行する。
しばらくすると同期が完了する。ログ/var/log/messagesを確認する。
Jul 24 22:14:33 dc2 kernel: drbd0: peer( Secondary -> Primary ) pdsk( Inconsistent -> UpToDate )
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:14:33 dc2 kernel: drbd0: Becoming sync target due to disk states.
Jul 24 22:14:33 dc2 kernel: drbd0: Writing the whole bitmap, full sync required after drbd_sync_handshake.
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:14:33 dc2 kernel: drbd0: writing of bitmap took 0 jiffies
Jul 24 22:14:33 dc2 kernel: drbd0: 4096 MB (1048535 bits) marked out-of-sync by on disk bit-map.
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:14:33 dc2 kernel: drbd0: conn( Connected -> WFBitMapT )
Jul 24 22:14:33 dc2 kernel: drbd0: conn( WFBitMapT -> WFSyncUUID )
Jul 24 22:14:33 dc2 kernel: drbd0: helper command: /sbin/drbdadm before-resync-target
Jul 24 22:14:33 dc2 kernel: drbd0: conn( WFSyncUUID -> SyncTarget )
Jul 24 22:14:33 dc2 kernel: drbd0: Began resync as SyncTarget (will sync 4194140 KB [1048535 bits set]).
Jul 24 22:14:33 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:16:09 dc2 kernel: drbd0: Writing meta data super block now.
Jul 24 22:29:06 dc2 kernel: drbd0: Resync done (total 872 sec; paused 0 sec; 4808 K/sec)
Jul 24 22:29:06 dc2 kernel: drbd0: conn( SyncTarget -> Connected ) disk( Inconsistent -> UpToDate )
Jul 24 22:29:06 dc2 kernel: drbd0: helper command: /sbin/drbdadm after-resync-target
Jul 24 22:29:06 dc2 kernel: drbd0: Writing meta data super block now.
4,194,140KBの同期に14分33秒掛かっている。およそ4.7Mbyte/秒で、ほぼ設定値の通り。
この時点では、dc3がprimaryとなっているが、dual-primaryモードで設定しているので、dc2もprimaryへ切り替える。
[root@dc2 ~]# drbdadm primary r0
[root@dc2 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:Connected st:Primary/Primary ds:UpToDate/UpToDate C r---
ns:0 nr:4194140 dw:4194140 dr:0 al:0 bm:256 lo:0 pe:0 ua:0 ap:0 oos:0
[root@dc2 ~]#


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その4・DRBDの初期化

Enabling your resource for the first time』に従ってDRBDリソースr0を初期化する。まず、dc2から作業する。
[root@dc2 ~]# drbdadm create-md r0
v08 Magic number not found
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
[root@dc2 ~]# drbdadm attach r0
drbd0: No usable activity log found.
drbd0: Barriers not supported on meta data device - disabling
[root@dc2 ~]# drbdadm connect r0
[root@dc2 ~]# 
この時点では、dc3が初期化されていないため、接続が完了しないことを確認する。
[root@dc2 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:WFConnection st:Secondary/Unknown ds:Inconsistent/DUnknown C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:4194140
[root@dc2 ~]#
以下のことが判る。
  • 接続状態(cs)が接続待ち(WFConnection)、
  • ロール(st)は、自分自身(dc2)がSecondary、相手(dc3)が不明(Unknown)
  • ディスク状態(ds)は、自分自身(dc2)が不一致、相手(dc3)が不明

続いて、dc3を初期化する。
[root@dc3 ~]# drbdadm create-md r0
v08 Magic number not found
v07 Magic number not found
v07 Magic number not found
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
[root@dc3 ~]# drbdadm attach r0
drbd0: No usable activity log found.
drbd0: Barriers not supported on meta data device - disabling
[root@dc3 ~]# drbdadm connect r0
[root@dc3 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:4194140
[root@dc3 ~]#
この時点では、dc[23]の両方が初期化されているため、通信状態(cs)が確立(Connected)となっている。両ノードともロール(st)がSecondaryで、ディスク状態(ds)が不一致(Inconsistent)となっている。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その3・drbd.confの設定

各DomU dc[23]上の/etc/drbd.confを以下の通り設定する。
global {
usage-count no;
}
common {
protocol C;
}
resource r0 {
net {
allow-two-primaries;
shared-secret "9wEtE83PFS4xChqY+aT";
}
startup {
become-primary-on both;
}
syncer {
rate 5M;
verify-alg sha1;
}
device    /dev/drbd0;
disk      /dev/xvdb;
meta-disk internal;
on dc2.xencluster {
address   192.168.56.8:7789;
}
on dc3.xencluster {
address   192.168.56.9:7789;
}
}
設定内容は以下の通り。
  • リソースr0を定義。dc[23]からアクセスされる。
  • 両ノードが同時にprimaryになることができる(allow-two-primaries)。
  • ネットワーク接続時の認証のためのパスワードを設定している(shared-secret)。
  • 起動時に、両ノードがprimaryとなる(become-primary-on)。
  • 同期速度は5Mbyte/秒(rate)。単位がMbpsでないことに注意。
  • 両ノードとも、低レベルデバイスは/dev/xvdb(disk)、DRBDデバイスは/dev/drbd0(device)。
  • メタデータ形式はinternal(meta-disk)。つまり、/dev/xvdb内にメタデータを持つ。
  • dc[23]はそれぞれ、192.168.56.[89]の7789/tcpで接続を待つ。

なお、各ノードの設定の共通部分(disk、deviceおよびmeta-disk)をまとめて記述できるのは、DRBD 8.2系から。RPM package drbd82-xenではなくdrbd-xenをインストールしている場合は、これらの設定は、on ノード名節の中でそれぞれ記述する。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その2・DRBD設定前の確認

各DomU dc[23]上には、OSイメージが格納されている/dev/xvdaの他に、/dev/xvdbが見えている。
[root@dc2 ~]# ls -l /dev/xvd*
brw-r----- 1 root disk 202,  0 Jul 24 21:41 /dev/xvda
brw-r----- 1 root disk 202,  1 Jul 24 21:41 /dev/xvda1
brw-r----- 1 root disk 202,  2 Jul 24 21:41 /dev/xvda2
brw-r----- 1 root disk 202, 16 Jul 24 21:41 /dev/xvdb
[root@dc2 ~]#
OSインストール直後は、DRBDの設定が行われていないため、/proc/drbdにはリソースが何も表示されない。
[root@dc2 ~]# cat /proc/drbd
version: 8.2.6 (api:88/proto:86-88)
GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-bui
ld, 2008-06-26 16:40:54
[root@dc2 ~]#
この状態で、/dev/xvdbに対する書き込み速度を計測する。
[root@dc2 ~]# dd bs=64M if=/dev/zero of=/dev/xvdb
dd: writing `/dev/xvdb': No space left on device
65+0 records in
64+0 records out
4294967296 bytes (4.3 GB) copied, 107.757 seconds, 39.9 MB/s
[root@dc2 ~]#
[root@dc3 ~]# dd bs=64M if=/dev/zero of=/dev/xvdb
dd: writing `/dev/xvdb': No space left on device
65+0 records in
64+0 records out
4294967296 bytes (4.3 GB) copied, 107.6 seconds, 39.9 MB/s
[root@dc3 ~]#
ほぼ40Mbyte/秒の速度が出ている。単位がMbpsではないことに注意。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

Xen DomU上でDRBDを使う・その1・Xen環境の準備

Xen環境構築の詳細については、『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる』を参照。ここでは、DomUのKickstart設定ファイルを紹介する。以下の点に注意して欲しい。
  • RPMパッケージdrbd82およびkmod-drbd82-xenをインストールする。
  • ファイアウォール設定で、DRBDの通信、TCPポート7788~7799を許可する。

logging --host=192.168.55.32 --level=debug

install
url --url http://Repository.LocalDomain/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
network --device eth0 --bootproto dhcp --hostname=localhost.localdomain
rootpw --iscrypted $1$NG4SU1bL$I8FOJo.81cUrO6Xj4dau41
firewall --enabled --ssh --port=snmp:udp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=xvda --append="console=xvc0"

services --enabled=ntpd,oddjobd,snmpd --disabled=acpid,apmd,avahi-daemon,bluetooth,cpuspeed,cups,gpm,hidd,lm_sensors,mdmonitor,microcode_ctl,nfslock,pcscd,smartd,xfs,yum-updatesd

clearpart --all --drives=xvda --initlabel
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
repo --name=base --baseurl=http://Repository.LocalDomain/centos/5/os/i386/
repo --name=updates --baseurl=http://Repository.LocalDomain/centos/5/updates/i386/
repo --name=addons --baseurl=http://Repository.LocalDomain/centos/5/addons/i386/
repo --name=extras --baseurl=http://Repository.LocalDomain/centos/5/extras/i386/

reboot

%packages
@admin-tools
@base
@cluster-storage
@clustering
@core
@emacs
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@web-server
-smartmontools
-OpenIPMI*
-squid
-samba-*
-system-config-samba
lynx
tftp
kernel-xen
kmod-gfs-xen
-kernel
-kmod-gfs
-kmod-gnbd
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
iscsi-initiator-utils
-apmd
-acpid
drbd82
kmod-drbd82-xen
-kmod-drbd82

%post --log=/mnt/sysimage/root/install-post.log
### network
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

/bin/cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0
/bin/sed 's/^HWADDR=/#HWADDR=/' < /tmp/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0

/bin/egrep -v '^#' /etc/sysconfig/network-scripts/ifcfg-eth0 | /bin/sed 's/eth0/eth1/' > /etc/sysconfig/network-scripts/ifcfg-eth1
/bin/egrep -v '^#' /etc/sysconfig/network-scripts/ifcfg-eth0 | /bin/sed 's/eth0/eth2/' > /etc/sysconfig/network-scripts/ifcfg-eth2
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth[12]

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### yum update from the local repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/Repository.LocalDomain/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
Atf+JoYSVwnPqBR8vnbG68EaY/Y4sr570YywcWXUcsZD6BwQAMA0x62YIMSlHArX60JzvNeh95x7
<<略>>
EN00EFaiso4dDtVaX2RYJf30RExW4E312yu+XwoXjrES0uLIK33p0HToOXUX3RjsCqYuM7ulE5iD
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key

##### iptables
/bin/cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.dist
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 7788:7799 -i eth1 -s 192.168.56.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 7788:7799 -i eth2 -s 192.168.57.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### sshd
/bin/cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.dist
/bin/sed 's/^PasswordAuthentication yes/PasswordAuthentication no/' < /etc/ssh/sshd_config.dist > /etc/ssh/sshd_config

/bin/mkdir ~root/.ssh
/bin/chmod 600 ~root/.ssh
/bin/cat > ~root/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA<<略>>
EOL
/bin/chmod 644 ~root/.ssh/authorized_keys2

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`SmtpServer.LocalDomain')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root:             marc
---
> root:              root@LocalDomain
EOL
/usr/bin/newaliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost           COMMUNITY_STRING
com2sec localnet  192.168.55.0/24    COMMUNITY_STRING

group   gOpLocalhost   v1            localhost
group   gOpLocalhost   v2c           localhost
group   gOpLocalnet    v1            localnet
group   gOpLocalnet    v2c           localnet

view    all           included   .1
view    systemview    included   REDHAT-CLUSTER-MIB:RedHatCluster

access  gOpLocalhost   ""      any       noauth    exact  all    none    all
access  gOpLocalnet    ""      any       noauth    exact  all    none    all

syslocation Unknown
syscontact root@LocalDomain

disk /     100000

load 10

# for cluster
dlmod RedHatCluster     /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibs +REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

### NTP on Xen DomU
/bin/cat >> /etc/sysctl.conf <<EOL

# For ntpd on Xen DomU.
xen.independent_wallclock = 1
EOL

### cron
/bin/cp -p /etc/crontab /etc/crontab.dist
/bin/sed 's/^\(..\) 4 /\1 5 /' < /etc/crontab.dist > /etc/crontab

### grub
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.dist
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.dist > /boot/grub/grub.conf

### /etc/bashrc
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc
この設定を元に、Xen DomU dc0を作成する。
# virt-install --name=dc0 --ram=256 --file=/dev/VolGroupXX/LogVolDc0 --mac='00:16:3e:1d:91:00' --bridge=br4000 --nographics --location='http://Repository.LocalDomain/centos/5/os/i386' --extra-args='ks=http://Repository.LocalDomain/centos/conf/DomU-DRBD-ks.cfg'
DomU dc0のインストールが完了したら、LV(logical volume, 論理ボリューム) /dev/VolGroupXX/LogVolDc0を元にDomU dc[23]用のLVをスナップショットLVとして作成する(『XenとLVM・その3・スナップショットLVの利用』参照)
# lvcreate --snapshot --size=1G --name=LogVolDc2 /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc2" created
# lvcreate --snapshot --size=1G --name=LogVolDc3 /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc3" created
#
続いて、dc[23]に/dev/xvdbとしてエクスポートするためのLVを作成する。
# lvcreate --size=4G --name=LogVolR0-2 /dev/VolGroupXX
Logical volume "LogVolR0-2" created
# lvcreate --size=4G --name=LogVolR0-3 /dev/VolGroupXX
Logical volume "LogVolR0-3" created
#
DomU dc2の設定ファイル/etc/xen/dc2は以下の通り。
name = "dc2"
uuid = "3cc1d59c-b2b1-42a6-b31a-35be18db188d"
maxmem = 512
memory = 256
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "phy:/dev/VolGroupXX/LogVolDc2,xvda,w",
"phy:/dev/VolGroupXX/LogVolR0-2,xvdb,w" ]
vif = [ "mac=00:16:3e:1d:91:02,bridge=br4000",
"mac=00:16:3e:1d:92:02,bridge=br4001",
"mac=00:16:3e:1d:93:02,bridge=br4002" ]
DomU dc2を起動する。
# xm create -c dc2
<<略>>
INIT: version 2.86 booting
Welcome to  CentOS release 5.2 (Final)
Press 'I' to enter interactive startup.
<<略>>
Starting DRBD resources:    no resources defined!
no resources defined!
[ ]no resources defined!
.
no resources defined!
no resources defined!
[  OK  ]
<<略>>

CentOS release 5.2 (Final)
Kernel 2.6.18-92.1.6.el5xen on an i686

dc2.LocalDomain login:
DRBDの設定を行っていないため、その旨警告メッセージが表示されている。DomU dc3についても同様に作業する。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク

2008/07/23

Xen DomU上でDRBDを使う・その0・概要

DRBDは、ネットワーク越しにディスクのミラーリング(RAID1)を実現するソフトウェア。Xen DomU上でこの動作検証を行う。以下は今回検証環境の概念図。

今回は、『The DRBD User's Guide』の『Chapter 5. Configuring DRBD』を実行・検証する。
CentOSのRPMパッケージには、drbd 8.0系であるdrbdおよびkmod-drbd-xenと、8.2系であるdrbd82およびkmod-drbd82がある。今回は、8.2系を使用する。
検証内容は以下の通り。
  • Xen Dom0 fs1上にDomU dc[23]を作成する。
  • DomU dc[23]に対して、それぞれDom0 fs1上のLV(logical volume, 論理ボリューム) LogVolR0-[23]を/dev/xvdbとして与える。
  • DomU dc[23]上で、/dev/xvdbを低レベルデバイスとするDRBD /dev/drbd0を作成する。
  • /dev/xvdbおよび/dev/xvdbに対する書き込み速度を比較する。
なお、CentOS5では、DRBDはextra扱いであり、実用システムに適用すべきではないかもしれない。


その0・概要』『その1・Xen環境の準備』『その2・DRBD設定前の確認』『その3・drbd.confの設定』『その4・DRBDの初期化』『その5・初期同期』『その6・ベンチマーク