博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
drbd学习
阅读量:6182 次
发布时间:2019-06-21

本文共 5917 字,大约阅读时间需要 19 分钟。

【背景】 

drbd是内核级别 文件--drbd--磁盘。

优点:速度快,基于block快进行同步

缺点:闲置一块从节点的磁盘。

【实践环境】

准备环境

操作系统和内核:

[root@master ~]# cat /etc/issue |head -1

entOS release 6.4 (Final)

[root@master ~]# uname -r

2.6.32-358.el6.x86_64

master网卡配置:

[root@master ~]# ifconfig  |grep -A1 "eth"

eth0      Link encap:Ethernet  HWaddr 00:0C:29:65:14:0F  

          inet addr:192.168.100.10  Bcast:192.168.100.255  Mask:255.255.255.0

--

eth1      Link encap:Ethernet  HWaddr 00:0C:29:65:14:19  

          inet addr:10.0.0.7  Bcast:10.0.0.255  Mask:255.255.255.0

slave网卡配置

[root@slave ~]# ifconfig  |grep -A1 "eth"

eth0      Link encap:Ethernet  HWaddr 00:0C:29:B7:34:9B  

          inet addr:192.168.100.13  Bcast:192.168.100.255  Mask:255.255.255.0

--

eth1      Link encap:Ethernet  HWaddr 00:0C:29:B7:34:A5  

          inet addr:10.0.0.8  Bcast:10.0.0.255  Mask:255.255.255.0

解析配置:/etc/hosts

10.0.0.7  master

10.0.0.8  slave

hostname配置:

[root@master etc]# hostname

master

[root@slave etc]# hostname

slave

防火墙配置:

[root@slave etc]# /etc/init.d/iptables status

iptables: Firewall is not running.

[root@slave etc]# getenforce 

Disabled

master磁盘配置(虚拟机添加一块磁盘并一个分区):

[root@master ~]# cat fdisk.txt 

n

p

1

1

+500M

w

[root@master ~]# fdisk /dev/sdb < fdisk.txt 

[root@master ~]# partprobe 

[root@master ~]# fdisk  -l |grep "/sdb1"

/dev/sdb1               1          65      522081   83  Linux

注意: (物理磁盘一定不能进行格式化挂载  因为需要存的是drbd meta文件格式)

slave磁盘配置同上:

......

【drbd的准备环境】

1
wget http:
//oss
.linbit.com
/drbd/8
.4
/drbd-8
.4.3.
tar
.gz

【drbd的安装过程】

master 和slave同步操作

1
2
3
4
5
tar 
xvf drbd-8.4.3.
tar
.gz 
cd 
drbd-8.4.3
.
/configure 
--prefix=
/usr/local/drbd 
--with-km
make 
KDIR=
/usr/src/kernels/
`
uname 
-r`/
make 
install

注意:drbd是基于内核的,所以要编译进内核。内核的路径 /usr/src/kernels/`uname -r`/。

如果出问题,是否你的内核有过升级。

【加载drbd内核模块】

master和slave同步进行

[root@master ~]# modprobe drbd

[root@master ~]# lsmod |grep drbd

drbd                  325754  0 

libcrc32c               1246  1 drbd

【配置drbd-配置文件】

cd /usr/local/drbd/etc/

> drbd.conf

master和slave配置一样如下:

global {

       usage-count no;

       # minor-count dialog-refreshdisable-ip-verification

}

common {

       protocol C;

       syncer {

               rate  100M;

               verify-alg sha1;

       }

}

resource  data {

       disk {

            on-io-error detach;

       }

#节点1

       on master {

              device  /dev/drbd0;   #drbd的裸设备

              disk   /dev/sdb1;     #数据在此分区

              address 10.0.0.7:7788;

              meta-disk  internal     ;

              }

#节点2

       on slave {

              device  /dev/drbd0;

              disk   /dev/sdb1;

              address 10.0.0.8:7788;

              meta-disk  internal  ;

              }

}

【启动drbd-】

master和slave上创建drbd meta元数据

[root@master etc]# drbdadm create-md data 

Writing meta data...

initializing activity log

NOT initializing bitmap

New drbd meta data block successfully created.

解释:对data这个资源初始化drbd

master和slave上启动data资源

drbdadm up data

[root@master etc]# drbdadm up data

Device '0' is configured!

Command 'drbdmeta 0 v08 /dev/sdb1 internal apply-al' terminated with exit code 20

注意:以上信息是正常的。

[root@master etc]# cat /proc/drbd 

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@master, 2016-08-28 11:49:02

 0: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----s

    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:522028

过一会后master和slave都需要出现以下信息:

[root@master etc]# cat /proc/drbd 

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@master, 2016-08-28 11:49:02

 0: 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:f oos:522028

【设置主节点】

[root@master etc]# drbdadm primary --force data 

[root@master etc]# cat /proc/drbd 

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@master, 2016-08-28 11:49:02

 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-

    ns:43140 nr:0 dw:0 dr:50848 al:0 bm:2 lo:1 pe:2 ua:8 ap:0 ep:1 wo:f oos:480044

        [>...................] sync'ed:  8.6% (480044/522028)K

        finish: 0:00:57 speed: 8,396 (8,396) K/sec

注意:看到此时数据正在同步。

最后

maste端的状态

cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----

slave端的状态

0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

【格式化磁盘存取数据】

mkfs.ext4 /dev/drbd0 

注意:

1 是对裸设备进行格式化,而不是物理磁盘。

2 只需要对maser端的裸设备进行格式化,因为格式化信息也会被同步到slave端的。

完成后master端和slave的ns:数据  值是一一样的

挂载

mount /dev/drbd0 /mnt/

【数据测试】

cd /mnt

[root@master mnt]# touch {a..f}

其实看到

cat /proc/drbd的状态正常就可以了

【非必要的测试手段1 ---验证slave端有数据了】

drbdadm down data

mount /dev/sdb1 /mnt/

[root@slave drbd-8.4.3]# cd /mnt/

[root@slave mnt]# ll

total 12

-rw-r--r-- 1 root root     0 Aug 28 13:34 a

-rw-r--r-- 1 root root     0 Aug 28 13:34 b

-rw-r--r-- 1 root root     0 Aug 28 13:34 c

-rw-r--r-- 1 root root     0 Aug 28 13:34 d

-rw-r--r-- 1 root root     0 Aug 28 13:34 e

-rw-r--r-- 1 root root     0 Aug 28 13:34 f

drwx------ 2 root root 12288 Aug 28 13:29 lost+found

此时表示:数据完全同步过来了。

恢复slave作为secondary 角色

[root@slave /]# umount /mnt/

[root@slave /]# drbdadm up data

[root@slave /]# cat /proc/drbd 

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@slave, 2016-08-28 11:53:45

 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

    ns:0 nr:24 dw:24 dr:0 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

【测试手段2--主备切换】

暂时省略....

【drbd的常用命令】

查看drbd的状态

cat /proc/drbd

命令查看drbd的配置文件

drbdadm dump all

查看角色

drbdadm role all

注意:

1 即使在secondary被down的情况下,primary端有有新的数据。在seconary恢复后,新的数据还会继续同步到secondary的

1 (如果之前做个磁盘实验)

需要清掉drbd meta数据

dd if=/dev/zero of=/dev/sdb1 count=1 bs=100M

注意:

2 启动报错

[root@master etc]# drbdadm up data

/usr/local/drbd/var/run/drbd: No such file or directory

/usr/local/drbd/var/run/drbd: No such file or directory

解决

mkdir -p /usr/local/drbd/var/run/drbd

4 创建磁盘

fdisk 分隔一块/dev/sdb1

(一定不能进行格式化挂载  因为存的是drbd meta文件格式)

5 创建drbd meta

drbdadm create-md data

起资源

启动服务

启动所有资源

drbdadm up all

或者 

drbdadm up data

6 如何使用

#把master节点作为主节点

Drbdadm primary --force data

#只能在一个节点上进行

mkfs.ext4 /dev/drbd0

#挂载drbd的裸设备进行使用

mount /dev/drbd0 /mnt/

7 常用查看

modprobe drbd

lsmod |grep drbd

drbdadm dump all

cat /proc/drbd

drbdadm role data

#变成secondary 

drbdadm secondary data

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1842651如需转载请自行联系原作者

cuizhiliang

你可能感兴趣的文章
第十九章:集合视图(十七)
查看>>
BIOS
查看>>
Elasticsearch之元数据(meta-fields)介绍
查看>>
基于Django+Bootstrap框架,可视化展示内存监控信息
查看>>
Pytorch | BERT模型实现,提供转换脚本【横扫NLP】
查看>>
biostar handbook: 第七周笔记汇总+调整通知
查看>>
涨薪必备|给你一份超详细Spring Boot知识清单
查看>>
YII2 关联查询,不修改search, 使用 GridView::widget 输出
查看>>
DNS服务-了解篇
查看>>
Apache Shiro在web开发安全技术中的应用
查看>>
源码安装MySQL 5.1 GA
查看>>
苹果电脑获取Android Studio的发布版SHA1和开发版SHA1
查看>>
How to troubleshooting RAC Vip Problem
查看>>
jar 命令 打包装class文件的文件夹
查看>>
CentOS 7.2 部署Saltstack
查看>>
centos7下安装MPlayer
查看>>
docker容器中安装vim
查看>>
smokeping 监控
查看>>
NTB EEPROM设置与跨节点数据传输
查看>>
IEEE 802.1Q Tunneling
查看>>