用drbd模拟盘阵镜像进行oracle备份测试(二):DRBD安装及使用
作者:blue_stone(blue_stone@xinhuanet.com)转载请注明出处: http://bluestone.cublog.cn
DRBD()在真实的物理磁盘和文件系统之间增加了一层, 截获了文件系统和物理磁盘之间的数据流, 并将数据流复制到 的工作原理见下图:
DRBD支持异步和同步复制, 也支持多主复制(目前支持2个primary host), 在这个测试中我么使用同步模式的Primary/Secondary复制.
RHEL AS5 update 2不包含DRBD, 可以从源代码安装DRBC, 我下载了CentOS的rpm包, 下载地址为:
也可以从如下地址下载对应的软件包
DRBD的设置文件为/etc/drbd.conf, 我使用的drbd.conf文件配置如下:
# # please have a a look at the example configuration file in # /usr/share/doc/drbd82/drbd.conf # global { usage-count no; } common { protocol C; } resource r0 { protocol C; on oem2.blueice.com{ device /dev/drbd0; disk /dev/sdb1; address 10.0.1.32:7788; meta-disk internal; } on oem3.blueice.com{ device /dev/drbd0; disk /dev/sdb1; address 10.0.1.33:7788; meta-disk internal; } } resource r1 { protocol C; on oem2.blueice.com{ device /dev/drbd1; disk /dev/sdb2; address 10.0.1.32:7789; meta-disk internal; } on oem3.blueice.com{ device /dev/drbd1; disk /dev/sdb2; address 10.0.1.33:7789; meta-disk internal; } } |
关于drbd.conf文件的更多信息, 可以在man drbd.conf或者http:///docs/install/找到.
我定义了2个资源, 资源r0对应的磁盘为/dev/sdb1, 对应的逻辑设备为/dev/drbd0, 文件系统格式为ext3, 挂载于/u02 资源r2对应的磁盘为/dev/sdb2, 对应的逻辑设备为/dev/drbd1, 文件系统格式为ext3, 挂载于/u03,用于控制文件及归档文件的备份.
在oem2和oem3上使用了相同的drbd.conf配置文件.
在每一个资源使用前, 必须先建立metadata, 对于每个资源,这一步需要在每台机器上做一次,
drbdadm create-md |
其中 resource对应/etc/drbd.conf中的resource的名称, 如r0, r1等.
metadata建立后, 就可以将resource attach, connect供应用程序使用.
drbdadm attach drbdadm connect
|
第一次使用之前, 需要先同步resource,
drbdadm -- --overwrite-data-of-peer primary
|
通过查看/proc/drbd可以查看所有drbd资源当前的状态.
[root@oem3 ~]# cat /proc/drbd version: 8.2.6 (api:88/proto:86-88) GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17 0: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:811016 dw:811016 dr:0 al:0 bm:61 lo:0 pe:0 ua:0 ap:0 oos:0 1: cs:Connected st:Secondary/Secondary ds:UpToDate/UpToDate C r--- ns:0 nr:8 dw:8 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 oos:0 |
其中cs表示连接的状态, 常见的状态有,
StandAlone,
WFConnection,
Connected等,
Connected表示该resource的节点已经建立连接, WFConnection表示在等待连接, 常在启动过程中, 或者另外一方运行disconnect后出现, StandAlone表示没有可用的网络配置, 常在运行disconnect后出现. ds表示磁盘的状态,
常见的状态有UpToDate
, Unknown
等, UpToDate表示表示数据是最新的,这一状态为正常状态, Unknow表示对方状态是未知的, 网络断开后, 对方节点的磁盘状态常变为Unknown. drbd kernel module 会写一些日志到系统日志中, 可以通过dmesg查看
mirrorview的fracture/synchronize过程模拟如下:
1 在2个节点上attatch, connect resource,
2 检查磁盘状态为UpToDate/UptoDate, 连接状态为Connected, 状态为Primary/Secondary
3 在2个节点上disconnect resource, 此时连接状态应变为StandAlone, 状态变为Primary/Unknown(第1个节点)或Secondary/Unknown, 磁盘状态变为UpToDate/DUnknown
drbdadm disconnect
|
4 在第2个节点上将resource置为primary, 状态变为Primary/Unknown
drbdadm primary
|
5 在第2个节点上对resource对应的逻辑设备进行操作, 比如挂载文件系统, 备份等.
6 操作结束后, 停止对resource对应的逻辑设备的访问, 卸载文件系统
7 在第2个节点上, 将resorce置为Secondary
drbdadm secondary
|
8 在第1个节点上连接资源
drbdadm connect
|
9 在第2个节点上忽略数据变化, 同步数据,
drbdadm -- --discard-my-data connect
|
如果使用了普通的connect数据, 则一个节点处于WFconenct, 一个节点处于Standalone状态, dmesg信息中显示
drbd0: Split-Brain detected, dropping connection! drbd0: self BF739B73E097B05E:D3B06FBE563C5580:7D4CAACF55C1C208:A625E780FF79A3B7 drbd0: peer 2FE125710E63486F:D3B06FBE563C5581:7D4CAACF55C1C208:A625E780FF79A3B7 drbd0: helper command: /sbin/drbdadm split-brain drbd0: conn( WFReportParams -> Disconnecting ) |
此时只需要执行步骤8和9即可.
10 通过/proc/drbd检查同步状态, 直到磁盘状态变为UpToDate/UptoDate