http://www.drbd.org/docs/about/
http://oss.linbit.com/drbd/
一般我们会在生产环境的MYSQL中用drbd +ha做master 备份,当然这是应对中小访问量,大的访问量就上LVS了。 DRBD已经是很多年的事,以前DRBD只是有一个LINUX的外部内核模块, 然而在高版本的LINUX内核中,已经集成了其中的这个模块,在老的系统中我们常把这个包叫做KMOD-DRBD,其实就是内核模块安装包,这是最重要的一个部分,通过调用内核模块达到网络RAID1的功能。DRBD consists of two main components. The driver code in the kernel, and the user space tools to control, configure the driver, as well as integration programs and scripts that glues the DRBD system to cluster management software and other system components.由于这个内核模块已经被集成到相对高版本的LINUX内核中,因此可以这么看,低于Linux-2.6.33 kernel 内核,必须安装KMOD-DRBD模块,高于这个版本的内核则不用。有意思的是,在CENTOS5.X的时代,YUM INSTALLyum install -y drbd83 kmod-drbd83 既可以达到同时安装DRBD内核模块和管理工具包的目的,但是到了CENTOS6就不行了。直接YUM INSTALL是行不通的。在这种情况下,如果要安装二进制包文件,必须去找Binary packages provided by LINBIT,这是收费的。要么就是你升级内核,KMOD这个模块就不必安装了,直接安装管理包。CENTOS 6.3的内核很不幸的是2.6.32,尚未达到2.6.33之上,所以必须升级内核。看LINUX内核与DRBD的对应关系,相当明显:
为了drbd,更新了内核还是不支持,从2.6.32-431到2.6.32-642还是没有用
在linux 2.6.33以后的版本中,drbd已经集成到内核中,但在cs7.2中好像没有drbd.ko,但是在ubuntu14.04中有,所以只需要安装用户空间工具就行了root@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# cat /etc/issue
Ubuntu 14.04.4 LTS \n \lroot@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# modprobe -r drbdroot@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# lsmod |grep drbdroot@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# modprobe drbdroot@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# lsmod |grep drbddrbd 339968 0lru_cache 16384 1 drbdlibcrc32c 16384 1 drbdroot@wo-KVM:/lib/modules/4.2.0-27-generic/kernel/drivers/block# apt search drbd
Sorting... DoneFull Text Search... Donedrbd8-utils/trusty 2:8.4.4-1ubuntu1 amd64 RAID 1 over TCP/IP for Linux (user utilities)
安装drbd
# wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
# tar zxvf drbd-8.4.3.tar.gz# cd drbd-8.4.3# ./configure --prefix=/usr/local/drbd --with-km# make KDIR=/usr/src/kernels/2.6.32-279.el6.x86_64/yum -y install kernel-devel kernel-headers flex注意:安装kernel-devel一定要和你uname -r 看到的内核版本一致,建议kernel-devel用本地源安装,不要用网络源安装[root@node1 soft]# tar zxf drbd-8.4.3.tar.gz[root@node1 soft]# cd drbd-8.4.3[root@node1 drbd-8.4.3]# ./configure --prefix=/usr/local/drbd --with-km注意:--with-km是启用内核模块[root@node1 ~]# make KDIR=/usr/src/kernels/2.6.32-358.el6.i686注意KDIR的路径 (这个内核源码路径需要根据自己的系统修改)[root@node1 drbd-8.4.3]# make install[root@node1 ~]# mkdir -p /usr/local/drbd/var/run/drbd[root@node1 ~]# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d/[root@node1 ~]# chkconfig --add drbd[root@node1 ~]# chkconfig drbd on安装drbd模块回到刚刚解压drbd的目录,然后[root@node1 drbd-8.4.3]# cd drbd[root@node1 drbd]# make clean[root@node1drbd]# make KDIR=/usr/src/kernels/2.6.32-358.el6.i686[root@node1 drbd]# cp drbd.ko /lib/modules/`uname -r`/kernel/lib/[root@node1 drbd]# modprobe drbd查看模块是否加载成功[root@node1 drbd]# lsmod | grep drbddrbd 292307 0先看看系统的内核版本
# uname -r (目前的版本)2.6.32-279.el6.x86_64下面以安装drbd模块为例进行说明正确安装drbd模块后,使用modprobe进行加载# modprobe drbdFATAL: Module drbd not found.出现如上错误原因:这是因为系统默认的内核并不支持此模块,所以需要更新内核更新内核的方法:可以用 yum install kernel* 方式来更新。如果你要节约点时间的话可以只更新一下的几个包: kernel-devel kernel kernel-headers更新后,记得要重新启动操作系统!!!# depmod说明:在编译并准备好一个Linux内核加载模块后,modprobe前必须先执行命令depmod,此命令会生成新的modules.dep。[root@bd2 ~]# depmod[root@bd2 ~]# modprobe drbd[root@bd2 ~]# lsmod|grep drbddrbd 325786 0libcrc32c 1246 1 drbd编辑配文
[root@bd2 ~]# vi /etc/drbd.conf
resource r0{
protocol C;startup { wfc-timeout 0; degr-wfc-timeout 120;}disk { on-io-error detach;}net{ timeout 60;connect-int 10;ping-int 10;max-buffers 2048;max-epoch-size 2048;}syncer { rate 30M;}on bd1{ device /dev/drbd0;disk /dev/sdb1;address 172.16.2.1:7788;meta-disk internal;}on bd2{ device /dev/drbd0;disk /dev/sdb1;address 172.16.2.2:7788;meta-disk internal;}}创建分区
# fdisk /dev/sdb
----------------n-p-1-1-"+1G"-w----------------# mkdir /data创建DRBD设备并激活ro资源:(Primary,Secondary)# mknod /dev/drbd0 b 147 0
# drbdadm create-md r0等待片刻,显示success表示drbd块创建成功--== Thank you for participating in the global usage survey ==--
The server's response is:you are the 19411th user to install this versionno resources defined!因为配文错误应该是下面的位置,而不是/etc/drbd.conf[root@bd2 ~]# vi /usr/local/drbd/etc/drbd.conf
[root@bd2 ~]# drbdadm create-md r0Writing meta data...initializing activity logNOT initializing bitmapNew drbd meta data block successfully created.success命令汇总
[root@bd2 ~]# fdisk /dev/sdb
[root@bd2 ~]# mkdir /data[root@bd2 ~]# depmod[root@bd2 ~]# modprobe drbd[root@bd2 ~]# lsmod |grep drbd[root@bd2 ~]# mknod /dev/drbd0 b 147 0[root@bd2 ~]# drbdadm create-md r0[root@bd1 ~]# service drbd start[root@bd2 ~]# drbdadm -- --overwrite-data-of-peer primary r0[root@bd2 ~]# ps -ef|grep drbdroot 1405 2 0 Aug11 ? 00:00:00 [drbd-reissue]root 1410 2 0 Aug11 ? 00:00:00 [drbd_submit]root 1417 2 0 Aug11 ? 00:00:52 [drbd_w_r0]root 1421 2 0 Aug11 ? 00:00:52 [drbd_r_r0]root 1426 2 0 Aug11 ? 00:00:01 [drbd_a_r0]root 1753 1692 0 12:02 pts/0 00:00:00 grep drbd[root@bd1 ~]# netstat -anput |grep 7788tcp 0 40 172.16.2.1:7788 172.16.2.2:48538 ESTABLISHED -tcp 0 80 172.16.2.1:7788 172.16.2.2:53019 ESTABLISHED -[root@bd1 ~]# drbdadm cstate r0Connected[root@bd1 ~]# drbdadm dstate r0UpToDate/UpToDate[root@bd1 ~]# drbdadm role r0Secondary/Primary[root@bd1 ~]# drbd-overview 0:r0 cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----[root@bd2 ~]# service drbd statusdrbd driver loaded OK; device status:version: 8.4.3 (api:1/proto:86-101)GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@bd2, 2014-08-11 14:53:29m:res cs ro ds p mounted fstype0:r0 SyncSource Primary/Secondary UpToDate/Inconsistent C... sync'ed: 90.0% (1648/16376)M[root@bd1 ~]# cat /proc/drbdversion: 8.4.3 (api:1/proto:86-101)GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@bd2, 2014-08-11 14:53:29 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n- ns:15643840 nr:0 dw:0 dr:15645336 al:0 bm:954 lo:0 pe:3 ua:1 ap:0 ep:1 wo:f oos:1129680 [=================>..] sync'ed: 93.3% (1100/16376)M finish: 0:01:35 speed: 11,824 (11,492) K/sec第一次数据同步完成之后,就可以创建文件系统并挂载使用了,只能挂primary,备机只能接收主机数据[root@bd2 ~]# mkfs.ext3 /dev/drbd0[root@bd2 /]# mount /dev/drbd0 /data/