一、DRBD简介
Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。官网地址: http://www.drbd.org
二、基础知识
1. 管理工具
2. 资源
在DRBD中,资源是特指某复制的存储设备的所有方面。包括:
Resource name: 名字中不能有空格
DRBD device: 这个设备总是被命名为/dev/drbdn,n是镜像设备的编号,它的主设备号是147
Disk configuration: 使本地数据可以为DRBD所用
Network configuration: 与对方通信
3. 资源角色
4. DRBD模式
单主模式:在单主模型下drbd可以使用任意的文件系统
双主模式:在双主模型下只能使用集群文件系统,常用的集群文件系统有oracle公司的OCFS和redhat公司的GFS
5. 数据同步模式
异步:protocol A,本地已经写到磁盘了,并且同步数据已经被放到tcp缓冲区等待发送的队列中,这样就认为同步完成
半同步: protocol B,本地已经写到磁盘了,并且同步数据已经发送到对方内存缓冲区,对方已经确认收到数据,这样就认为同步完成
同步:protocol C,本地已经写到磁盘了,从服务器也写入完成了
三、安装DRBD
drbd共有两部分组成:内核模块和用户空间的管理工具。其中drbd内核模块代码已经整合进Linux内核2.6.33以后的版本中,因此,如果内核版本高于此版本的话,你只需要安装管理工具即可。
[root@ipvs ~]# uname -r 2.6.32-358.el6.x86_64 #redhat6.4内核是2.6.32版本的
准备:
[root@ipvs ~]# vim /etc/hosts 172.16.1.1 ipvs1.com ipvs1 172.16.1.2 ipvs2.com ipvs2
1. 安装drbd软件
[root@ipvs ~]# tar xf drbd-8.4.4.tar.gz [root@ipvs ~]# cd drbd-8.4.4 [root@ipvs drbd-8.4.4]# ./configure --prefix=/usr/local/drbd --with-km --sysconfdir=/etc/ [root@ipvs drbd-8.4.4]# make && make install #安装完成 [root@ipvs drbd-8.4.4]# chkconfig --add drbd [root@ipvs drbd-8.4.4]# chkconfig --list drbd #设置开机自动启动 drbd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2. 完善安装
[root@ipvs ~]# vim /etc/profile export PATH=$PATH:/usr/local/drbd/sbin/ #最后增加这一行 [root@ipvs ~]# . !$ [root@ipvs ~]# vim /etc/man.config MANPATH /usr/local/drbd/share #增加这一行 [root@ipvs ~]# cd drbd-8.4.4 [root@ipvs drbd-8.4.4]# cp scripts/drbd.conf.example /etc/drbd.d/resource.res #将配置文件拷贝过去
3. 将drbd模块加载进内核
[root@ipvs ~]# modprobe drbd #加载进内核 [root@ipvs ~]# lsmod | grep drbd drbd 340487 0 libcrc32c 1246 2 drbd,ip_vs [root@ipvs ~]# modprobe -r drbd #从内核中移除
4. 配置DRBD(需拷贝一份到另一个节点上)
drbd的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中
global { usage-count no; #是否记录DRBD的使用次数 # minor-count dialog-refresh disable-ip-verification } common { protocol C; handlers { } startup { wfc-timeout 120; degr-wfc-timeout 120; #指定降级超时时间 } disk { on-io-error detach; #磁盘IO错误就拆除磁盘 fencing resource-only; #资源级别隔离 } net { cram-hmac-alg "sha1"; #指定数据传输的校验算法为sha1 shared-secret "tcnetadmin"; #指定共享密码 } }
global_common.conf中主要定义global段和common段,global段必须位于配置文件的最开始处,common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。
5. 定义一个资源
[root@ipvs drbd.d]# vim resource.res resource share { on ipvs1.com { device /dev/drbd0; disk /dev/sdb1; #要先创建这个分区 address 172.16.1.1:7789; meta-disk internal; } on ipvs2.com { device /dev/drbd0; disk /dev/sdb1; address 172.16.1.2:7789; meta-disk internal; } } [root@ipvs drbd.d]# scp resource.res root@ipvs2:/etc/drbd.d/ #并且把它直接拷贝到节点2上去
6. 初始化已定义的资源并启动服务(2个节点都做)
[root@ipvs drbd.d]# drbdadm create-md share #初始化share资源,share是个名字 [root@ipvs drbd.d]# service iptables stop [root@ipvs drbd.d]# /etc/init.d/drbd start #启动服务 [root@ipvs drbd.d]# drbdadm -- --overwrite-data-of-peer primary share #将其中一个节点设置为Primary [root@ipvs drbd.d]# watch -n 0.5 'drbd-overview' #监视数据同步过程
7. 在当前的主节点上格式化文件系统并使用
[root@ipvs drbd.d]# mkfs.ext4 /dev/drbd0 #只有主节点可以格式化和挂载 [root@ipvs ~]# mount /dev/drbd0 /mnt/ [root@ipvs ~]# cp -a /etc /mnt/ [root@ipvs ~]# umount /mnt/ [root@ipvs ~]# drbdadm secondary share #将这个节点置为备节点
8. 将另一个节点置为主节点并查看文件
[root@ipvs2 ~]# drbdadm primary share [root@ipvs2 ~]# drbd-overview 0:share/0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mnt ext4 1020M 57M 911M 6% [root@ipvs2 ~]# mount /dev/drbd0 /mnt/ [root@ipvs2 ~]# cd /mnt/ [root@ipvs2 mnt]# ls etc lost+found #在这个节点上成功看到文件