天天看点

DRBD上路---安装配置篇

DRBD的全称为:Distributed Replicated Block Device (DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,基于软件的,无共享(shared-nothing),对硬盘、分区、逻辑卷进行复制镜像的存储解决方案。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络RAID。

工作原理:Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。DRBD不需要任何的硬件投资,利用drbd作为共享存储设备,比存储网络要实惠的多;原理图:

<a href="http://blog.51cto.com/attachment/201311/181538109.png" target="_blank"></a>

安装部分:

如果系统内核(linux)版本低于2.6.33,在安装软件之前需要加载DRBD模块,如果高于(或等于)2.6.33,则只安装客户端软件。

如果没有安装DRBD模块,会在启动drbd时出现如下错误:

Starting DRBD resources: Can not load the drbd module.

从www.drbd.org下载drbd-8.3.8.1.tar.gz,分别在两个节点上编译安装:

注意,DRBD需要内核模块支持,2.6.33后的Linux内核已内置DRBD的支持,在此版本前,安装时需要kernel-devel包,同时编译drbd时要带上--with-km。

#./configure --prefix=/ --with-km

#make

#make install

安装成功之后/sbin目录下面有drbdadm,drbdmeta,drbdsetup命令,以及/etc/init.d/drbd启动脚本。(多半时候是在使用drbdadm ,它其实调用的是drbdsetup drbdmeta两个命令)

在这里我准备的是两个物理分区,分区大小必须一致;

配置部分:

/etc/drbd.conf

global {

usage-count no; #统计drbd的使用

}

common {

syncer {rate 100M;} #同步速率,单位是字节

resource r0 {

protocol C; #使用协议C.表示收到远程主机的写入确认后,则认为写入完成. 

disk {

on-io-error detach; 

net { #通信验证算法信息,及脑裂处理信息

cram-hmac-alg "sha1";

shared-secret "FootFunFactory";

after-sb-0pri discard-younger-primary;

after-sb-1pri call-pri-lost-after-sb;

rr-conflict disconnect;

syncer {

rate 100M;

al-extents 257;

on drbd-master{ #具体主机磁盘信息,后面是主机名,在/etc/hosts 注明;端口是7789

device /dev/drbd0;

disk /dev/sdb;

address 192.168.6.101:7789;

meta-disk internal;

on centos.weipengfei.net{

device /dev/drbd0; #device名字必须是drbd开头,后面是数字,从0开始,最大为147

disk /dev/sdc;

address 192.168.6.135:7789;

} 配置的详细信息,后续再谈;

启动之前的操作:

分别在两台主机的drbd分区上,创建DRBD记录信息的数据块,分别在两台主机上运行:

drbdadm create-md r0

在两节点分别启动服务:

/etc/init.d/drbd start

查看节点状态:

cat /proc/drbd

1: cs:Connected ro: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 ep:1 wo:b oos:2007644

设置主节点:

于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:

drbdadm -- --overwrite-data-of-peer primary all

第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:

/sbin/drbdadm primary r0

执行此命令后,开始同步两台机器对应磁盘的数据

如果第一次设置主备节点时使用“/sbin/drbdadm primary r0”命令,那么会提示如下错误:

0: State change failed: (-2) Need access to UpToDate data Command '/sbin/drbdsetup 0 primary' terminated with exit code 17

只要第一次用上面命令成功后,以后就可以用“/sbin/drbdadm primary r0”命令了。

格式化文件系统:

由于mount操作只能在主节点进行,所以只有设置了主节点后才能格式化磁盘分区,然后挂载:

mkfs.ext3 /dev/drbd0

mount /dev/drbd0 /mnt

主备节点切换

1、停止drbd服务的切换:

关闭主节点服务,此时挂载的drbd分区就自动在主节点卸载了,然后在备用节点执行切换命令:

当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。

2、正常切换

在主节点卸载磁盘分区,然后执行

drbdadm secondary all

如果不执行这个命令,直接在备用节点执行切换到主节点的命令,会报错:

2: State change failed: (-1) Multiple primaries not allowed by config

Command 'drbdsetup 2 primary' terminated with exit code 11

接着,在备用节点执行

drbdadm primary all

最后在备用节点挂载磁盘分区即可;

本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1322770,如需转载请自行联系原作者