当前位置: 首页 > 工具软件 > DRBD > 使用案例 >

drbd常见运维故障处理

徐茂材
2023-12-01

drbd 简介

1. drbd 是什么?
DRBD(Distributed Replicated Block Device,分布式复制块设备)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。DRBD是镜像块设备,是按数据位镜像成一样的数据块。

2. DRBD与RAID1区别
RAID1也是实现不同存储设备间的数据镜像备份的,不同的是RAID1各存储设备是连接一个RAID控制器接入到一台主机上的,而DRBD是通过网络实现不同节点主机存储设备数据的镜像备份。

基本操作

这里不叙述安装流程。

  1. 如何查看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  资源名
    
  • 资源连接状态;因为情况不同,表现的状态不一样可能是以下的一种:
    资源的连接状态;一个资源可能有以下连接状态中的一种
    StandAlone 独立的:网络配置不可用;资源还没有被连接或是被管理断开(使用 drbdadm disconnect 命令),或是由于出现认证失败或是脑裂的情况
    Disconnecting 断开:断开只是临时状态,下一个状态是StandAlone独立的
    Unconnected 悬空:是尝试连接前的临时状态,可能下一个状态为WFconnection和WFReportParams
    Timeout 超时:与对等节点连接超时,也是临时状态,下一个状态为Unconected悬空
    BrokerPipe:与对等节点连接丢失,也是临时状态,下一个状态为Unconected悬空
    NetworkFailure:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
    ProtocolError:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空
    TearDown 拆解:临时状态,对等节点关闭,下一个状态为Unconected悬空
    WFConnection:等待和对等节点建立网络连接
    WFReportParams:已经建立TCP连接,本节点等待从对等节点传来的第一个网络包
    Connected 连接:DRBD已经建立连接,数据镜像现在可用,节点处于正常状态
    StartingSyncS:完全同步,有管理员发起的刚刚开始同步,未来可能的状态为SyncSource或PausedSyncS
    StartingSyncT:完全同步,有管理员发起的刚刚开始同步,下一状态为WFSyncUUID
    WFBitMapS:部分同步刚刚开始,下一步可能的状态为SyncSource或PausedSyncS
    WFBitMapT:部分同步刚刚开始,下一步可能的状态为WFSyncUUID
    WFSyncUUID:同步即将开始,下一步可能的状态为SyncTarget或PausedSyncT
    SyncSource:以本节点为同步源的同步正在进行
    SyncTarget:以本节点为同步目标的同步正在进行
    PausedSyncS:以本地节点是一个持续同步的源,但是目前同步已经暂停,可能是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
    PausedSyncT:以本地节点为持续同步的目标,但是目前同步已经暂停,这可以是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步
    VerifyS:以本地节点为验证源的线上设备验证正在执行
    VerifyT:以本地节点为验证目标的线上设备验证正在执行
  1. 查看硬盘状态
    drbdadm dstate 资源名
    本地和对等节点的硬盘有可能为下列状态之一:
  • Diskless 无盘:本地没有块设备分配给DRBD使用,这表示没有可用的设备,或者使用drbdadm命令手工分离或是底层的I/O错误导致自动分离
    Attaching:读取无数据时候的瞬间状态
    Failed 失败:本地块设备报告I/O错误的下一个状态,其下一个状态为Diskless无盘
    Negotiating:在已经连接的DRBD设置进行Attach读取无数据前的瞬间状态
    Inconsistent:数据是不一致的,在两个节点上(初始的完全同步前)这种状态出现后立即创建一个新的资源。此外,在同步期间(同步目标)在一个节点上出现这种状态
    Outdated:数据资源是一致的,但是已经过时
    DUnknown:当对等节点网络连接不可用时出现这种状态
    Consistent:一个没有连接的节点数据一致,当建立连接时,它决定数据是UpToDate或是Outdated
    UpToDate:一致的最新的数据状态,这个状态为正常状态

drbd 常见故障处理

  1. 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 再次查看状态是否为同步状态

  2. 主、备盘角色正确,主盘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. 主、备盘角色不正确的处理
    主、备盘角色不正确有以下几种情况,修改盘角色之前,需要先将盘卸载掉。
    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
    
  4. 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

  5. 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,所以无法远程重启,必须现场手工重启硬件。

  6. 挂载故障盘

    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

drbd 同步加速

如果开启了限速,可手动加速
drbdadm disk-options --c-plan-ahead=0 --resync-rate=250M <resource_id>

 类似资料: