在DRBD进入使用阶段之后,要经常查看它的工作状态,通过这些状态来判断DRBD运行情况。
1) 使用drbd-overview命令观察状态
最为简便的方式就是运行drbd-overview命令
# drbd-overview
0:r0 Connected Primary/Secondary UpToDate/UpToDate C r—– /nfs ext4 20G 45M 19G 1%
2) 通过伪文件系统/proc/drbd 文件来运行状态
# cat /proc/drbd
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—–
ns:0 nr:0 dw:664 dr:2017 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
状态指示
第一行: 软件的版本号第二行: 有关构建DRBD的特定信息第三行: DRBD的主要信息
cs(Connect State):表示网络连接的状态ro(Role):表示运行节点的角色, Primary/Secondary 表示本机为主ds(Disk State):表示当前的硬盘状态Replication protocol:表示当前复制所使用的协议,可以是ABCI/O Flags:6个I/O输入输出标志,从各个方面反映了本地资源的状态Performance indicators:性能指标,这是一组统计数据和计数器,反映出资源的利用情况和性能
3) 连接状态
连接状态可以通过监控/proc/drbd文件得到具体信息,也可以使用drbdadm cstate命令来获取。
# drbdadm cstate r0
Connected
连接的状态也有可能是以下其中的一种:
StandAlone:没有可用的网络配置,资源没有被连接,或者执行过 drbdadm disconnect resource 命令,例子如下:
# drbdadm disconnect all
# drbdadm cstate r0
StandAlone
4) 资源角色
资源连接状态可以通过/proc/drbd或者使用drbdadm role resource来获取。
# drbdadm role all
Primary/Secondary
可能的角色为:
Primary:当前的资源是Primary角色,可以进行读取和定稿的操作。该角色在两个节点中仅能出现在一个节点[双节点模式除外]
Secondary:表示该角色为从节点,这种角色下既不能读取也不写入。这种角色可能会发生在一个或者两个节点上。
第一行:
Unknown:这种角色表示当前资源的角色不。本地资源不会有这种状态,它仅出现在用来表示对点的资源角色,而且仅在无法连接模式下。如下:
# drbdadm disconnect all
# cat /proc/drbd
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown r—–
ns:660 nr:4 dw:664 dr:1029 al:5 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
5) 磁盘状态
磁盘状态可以通过/proc/drbd或者使用drbdadm dstate resource来获取。
# drbdadm dstate r0
UpToDate/UpToDate
首先输入的是本地硬盘状态,后面的是远程硬盘状态。以下为硬盘的状态:
Diskless:无盘状态,当前没有与DRBD驱动相关块设备。这种状态通常代表着资源没有被附加上后台设备。可能是通过使用 rbdadm detach命令手工分离了后台设备。或者由于底层I/O的错误而自动分离。
Attaching:附加状态,这种状态是在读取元数据时出现的一种瞬间状态。
Failed:失败状态,也是一种瞬间状态,由于本地块设备报告,接着就是一个I/O错误,下一个状态就是Diskless.
Negotiating:协商状态,在已经连接的DRBD设备上进行“Attach”读取元数据的一个瞬间状态。
Inconsistent:数据不一致状态这种状态出现两个DRBD节点上的资源在创建了新的资源后立即建立连接时(就是完全初始化同步之前),这种情况下两个资源节点都会出现,另一种可能就是在同步过程中一个节点出现这种状态,而且是出现在同步的目标上。
Outdated:数据过期状态,资源数据一致,但是已经过期,这种情况需要进行进一步处理。
DUnknown:硬盘不明确状态,如果网络连接无效,那么这种状态将会被用于表示对点磁盘的状态。
Consisten:数据一致状态,在没有连接时数据一致的状态,当连接完成后将会决定数据的状态是UpToDate状态还是Outdated状态。
UpToDate:数据一致状态,而且是最新的数据一致状态。这也是正常状态模式。
6) I/O状态标志
在/proc/drbd文件中提供了有关I/O操作信息,这种标志信息一共有6个,可能的值如下:
- I/O暂停信息状态:可能看到的值两个,不是r就是s,r表示正在运行,s表示暂停,通过为r.
- 串行重新同步状态:当资源重新同步时,但是因为重新同步延时,那么这个标志将会变为a,通常为”-“.
- 对点初始化同步延时状态:在资源等待重新同步时,但是本地节点的使用者延时了同步,那么这个状态将变为”u”
- 本地I/O阻塞状态:通常为“-”,可能还会出现如下标志:
d:内部原因导致I/O阻塞,例如,瞬间状态出现时。b:后台设备i/o出现阻塞。n:网络字出现阻塞。a:同时出现设备i/o阻塞和网络阻塞。
- 活动日志更新暂时状态:当活动日志更新暂停时,这个标志变成了s。
7) 性能指标
在预览/proc/drbd时,每个资源的第二行都包含了计数器和度量值。
# cat /proc/drbd
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—–
ns:524420 nr:0 dw:525084 dr:2041 al:132 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
ns(network send):通过网络连接发送到对端的数据量,单位KB.nr(network receive):通过网络连接从对点接收的数据量,单位KB.dw(disk write):向本地硬盘写入网络数据,单位KB.dr(disk read):网络从本地硬盘读取的数据量,单位KB.al(activity log):元数据活动日志的更新次数。bm(bit map):元数据区域更新的资源。lo(local count):由DRBD产生的本地I/O请求数据。pe(pending):就是等待响应,已经发送到圣战,但是还没有得到对端回应的数量。ua(unacknow wledged):就是未确认,通过网络连接收到对方的请求,但是还没有做出处理的数量.ap(application pending):转发到DRBD的I/O请求,仍然没有被DRBD所响应。ep(epochs):epoch对象的数,通常为1。当使用barrier或者none写顺序方法时,可能会增加底层I/O负荷。wo(write order):当前使用的写顺序的方法:b(barrier)/f(flush)/d(drain)/n(none)。oos(out of sync):当前没有同步的数据总数量,单位为KB.
8) 启用/禁用资源
9) 重新配置资源//启用资源r0# drbdadm up r0提示:也可以将r0更改为all
//禁用资源r0# drbdadm down r0提示:也可以将r0更改为all
DRBD在运行时,允许用户重新配置资源,为了实现这个目的,需要进行以下操作:
1、在DRBD的配置文件/etc/drbd.conf(包括所有资源)中进行有必要的改变
2、在两个节点之间同步
DRBD的配置文件
3、在两个节点上执行drbdadm adjust <source>命令 (在执行此命令时,建议添加-d参数)
10) 导出当前
资源
配置信息
# drbdadm dump all
# /etc/drbd.conf
common {
protocol C;
}
# resource r0 on node2.dd.com: not ignored, not stacked
resource r0 {
on node1.dd.com {
device /dev/drbd0 minor 0;
disk /dev/sdb1;
address ipv4 192.168.198.201:7788;
meta-disk internal;
}
on node2.dd.com {
device /dev/drbd0 minor 0;
disk /dev/sdb1;
address ipv4 192.168.198.202:7788;
meta-disk internal;
}
syncer {
rate 100M;
}
}