1. drbd 是什么?
DRBD(Distributed Replicated Block Device,分布式复制块设备)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。DRBD是镜像块设备,是按数据位镜像成一样的数据块。
2. DRBD与RAID1区别
RAID1也是实现不同存储设备间的数据镜像备份的,不同的是RAID1各存储设备是连接一个RAID控制器接入到一台主机上的,而DRBD是通过网络实现不同节点主机存储设备数据的镜像备份。
这里不叙述安装流程。
如何查看drbd 状态
drbd-overview
各个字段根据本机实际准,释义如下:
0:test1/0 drbd盘id
Connected 连接状态
Primary/Secondary 本地盘角色/对端盘角色
UpToDate/UpToDate 本地同步状态/对端盘同步状态
/data/test 挂载点(盘被挂载才会显示)
xfs 文件系统(盘被挂载才会显示)
4.1T 总容量(盘被挂载才会显示)
485G 已用容量(盘被挂载才会显示)
3.7T 剩余容量(盘被挂载才会显示)
12% 使用率(盘被挂载才会显示)
2.内核查看
root@sr01n02:~# cat /proc/drbd
version: 8.4.11-1 (api:1/proto:86-101)
GIT-hash: 66145a308421e9c124ec391a7848ac20203bb03c build by root@c165, 2019-08-19 15:26:38
0: cs:Connected ro:Primary/Secondary ds:UpToDate/Diskless A r-----
ns:1607893187 nr:0 dw:865871622 dr:1018289021 al:19682555 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:204143444
1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate A r-----
ns:0 nr:438102284 dw:2129640104 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0
cs: connect state
ro:表示角色信息
ds: 磁盘状态信息Inconsistent/UpToDate
ns/nr:网络发送/接收的数据包信息
dw/dr:设备读写信息
3.查看资源连接状态
drbdadm cstate 资源名
Unconfigured状态的处理
root@test01:~# drbd-overview
0:test01/0 WFConnection Primary/Unknown UpToDate/DUnknown /data/test xfs 4.1T 322G 3.8T 8%
1:test02/0 Connected Secondary/Primary UpToDate/UpToDate
root@test02:~# drbd-overview
0:test02/0 Connected Primary/Secondary UpToDate/UpToDate /data/test xfs 4.1T 485G 3.7T 12%
1:test01/0 Unconfigured . .
可以看到02上的从盘状态为Unconfigured,这说明该盘处于down的状态,可以用 “drbdadm up 盘id” 命令来修改状态,执行
root@test02:~# drbdadm up test01
之后用drbd-overview 再次查看状态是否为同步状态
主、备盘角色正确,主盘WFConnection,备盘StandAlone 状态的处理
root@r01n02:~#drbd-overview
0:s01n02/0 SyncSource Primary/Secondary UpToDate/Inconsistent C r----- /data xfs 19T 209G 18T 2%
[==========>.........] sync'ed: 57.9% (8120/19272)Mfinish: 0:03:57 speed: 34,976 (25,716) K/sec
1:s01n03/0 StandAlone Secondary/Unknown UpToDate/DUnknown r-----
root@r01n03:~#drbd-overview
0:s01n03/0 WFConnection Primary/Unknown UpToDate/DUnknown C r----- /data xfs 19T 107G 19T 1%
1:s01n02/0 SyncTarget Secondary/Primary Inconsistent/UpToDate C r-----
[===========>........] sync'ed: 62.3% (7272/19272)Mfinish: 0:03:31 speed: 35,224 (26,144) want: 71,720 K/sec
可以看到sr01n03/0 这组盘没有同步,主盘角色为Primary,备盘角色为Secondary,说明主、备盘角色是正确的,不需要调整,这时只要丢弃备盘中的数据即可使之同步。示例如下
root@s1r01n02:~#drbdadm connect --discard-my-data s1r01n03
主、备盘角色不正确的处理
主、备盘角色不正确有以下几种情况,修改盘角色之前,需要先将盘卸载掉。
3.1 主备盘都为Primary/Unknown
处理方法,将备盘状态修改正确
root@备盘节点:~# drbdadm secondary 备盘id
3.2 主备盘都为Secondary/Unknown
处理方法,将主盘状态修改正确
root@主盘节点:~# drbdadm primary --force 主盘id
3.3 主盘状态为Secondary/Unknown,备盘状态为Primary/Unknown
这种情况要保证备盘数据都已经迁移走,先调整主盘角色为Primary,再调整备盘角色为Secondary
root@主盘节点:~# drbdadm primary --force 主盘id
root@备盘节点:~# drbdadm secondary 备盘id
drbd盘修改状态失败,提示Device is held open by someone 或 busy 的处理
root@test01:~# drbdadm secondary test02
1: State change failed: (-12) Device is held open by someone
Command 'drbdsetup-84 secondary 1' terminated with exit code 11
先看是否有进程占用盘
lsof /dev/drbd1
Diskless 状态的处理
root@s01n02:~#drbd-overview
0:s01n02/0 Connected Primary/Secondary UpToDate/Diskless C r----- data/ xfs 19T 205G 18T 2%
1:s01n03/0 Connected Secondary/Primary UpToDate/Diskless C r-----
diskless原因通常是磁盘故障/raid卡故障,或者是操作系统kernel panic引起的,任何操作都会hang,所以无法远程重启,必须现场手工重启硬件。
挂载故障盘
root@test03:~# drbd-overview
0:test03/0 WFConnection Primary/Unknown UpToDate/DUnknown /data xfs 19T 459G 18T 3%
1:test02/0 StandAlone Secondary/Unknown UpToDate/DUnknown
test02 故障
挂载drbd1:
drbdadm primary --force test02 # 将这块drbd1设置为primary才能挂载
mount /dev/drbd1 /path
如果开启了限速,可手动加速
drbdadm disk-options --c-plan-ahead=0 --resync-rate=250M <resource_id>