Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2413003
  • 博文数量: 384
  • 博客积分: 10193
  • 博客等级: 上将
  • 技术积分: 3785
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-09 18:02
文章分类

全部博文(384)

文章存档

2011年(10)

2010年(29)

2009年(39)

2008年(36)

2007年(43)

2006年(198)

2005年(29)

分类: LINUX

2008-12-23 17:45:41

用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

其中 resource对应/etc/drbd.conf中的resource的名称, 如r0, r1等.

metadata建立后, 就可以将resource attach, connect供应用程序使用.

drbdadm attach resource
drbdadm connect resource

第一次使用之前, 需要先同步resource,

drbdadm -- --overwrite-data-of-peer primary resource

通过查看/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 resource

4 在第2个节点上将resource置为primary, 状态变为Primary/Unknown

drbdadm primary resource

5 在第2个节点上对resource对应的逻辑设备进行操作, 比如挂载文件系统, 备份等.

6 操作结束后, 停止对resource对应的逻辑设备的访问, 卸载文件系统

7 在第2个节点上, 将resorce置为Secondary

drbdadm secondary resource

8 在第1个节点上连接资源

drbdadm connect resource

9 在第2个节点上忽略数据变化, 同步数据,

drbdadm -- --discard-my-data connect resource

如果使用了普通的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


阅读(2324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~