1
2
3
4
5
|
[root@drbd-master ~]
# cat /proc/drbd
version: 8.3.15 (api:88
/proto
:86-97)
GIT-
hash
: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by root@localhost.localdomain, 2013-09-15 17:06:03
0: cs:Connected ro:Primary
/Secondary
ds:UpToDate
/UpToDate
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:b oos:0
|
drbd 的状态显示,都可以从/proc/drbd中显示出来;在监控它之前,先看看他常见的一些状态;
第一行&第二行显示的是drbd版本信息和一些编译信息,重点在第三行:
cs(connection state) 连接状态:(可以通过 drbdadm cstate <res> 查看)
正常状态的是: connected
其余的均为不正常状态,可能是瞬间变化的;
standalone :资源没有连接(认证失败或者脑裂)或者被手动断开(drbdadm disconnect)
disconnect :认证失败或者脑裂
disconnecting、unconnected、timeout、brokerpipe、networkfailure、protocolerror、 teardown(对等节点连接关闭) 都是临时状态,最终都会经过unconnected状态最终转变为 下面的 wfconnection(等待和对等节点建立网络连接) 或者 wfreportparams(已建立好连接 正等待对等节点传来第一个数据包)
StartingSyncs:完全同步,由admin发起的刚刚开始同步,下一步状态为syncsource(以本节 点为同步源进行同步中)或者PausedSyncS(本地是一个持续同步源,由于可能另外一个同步 正在进行或者使用drbdadm pause-sync 暂停了同步)
WFBitmapS:部分同步刚刚开始,下一个状态可能是syncsource或者pausedsyncs
WFBitmapT:部分同步刚刚开始,下一个是WFSyncUUID (同步即将开始)
SyncTarget:以本节点为同步目标进行同步
PausedSyncT:以本节点为持续同步目标,但由于另一个同步正在进行或者使 用 drbdadb pause-sync 暂停了同步
VerifyS:以本地节点为验证源验证线上的设备
VerifyT:以本地节点为目标源验证线上的设备
第二个字段:ro 代表角色,无外乎三种, primary,secondary,unknown(这种角色一般在对等节点未连接的时候会出现)
第三个字段:ds,代表两个节点的磁盘状态,这个是很重要的;命令:drbdadm dstate <res>
正常情况下,两端都是 uptodate/uptodate
其他的状态,就需要修复啦:
Diskless ,本地没有块设备分配给drbd使用,可能是drbdadm 操作造成或者底层IO错误出发了 disklesee操作
attaching:读取元数据时候的状态;
failed:本地磁盘报告IO错误,下一个状态是diskless
Negotiating:在已连接的DRBD设备上进行attach读取元数据前的瞬间状态
inconsistent:数据不一致,多发生在第一次建立同步的时候;
outdated:数据一致但已过时;
Dunknown:对等节点网络暂时不可用
Consistent:这个状态多发生在一个没有连接的节点上,当建立连接后,它决定数据是uptodate或者是outdated
其实说了这么多,drbd之所以有这么多状态,软件作者已经很谨慎啦,判断出多种状态;
第四个字段(这个其实不怎么重要的): 这个是最短的,也是最不好判断的: 正常状态是r----- 表示IO状态,一共6个
1、IO suspension: r 表示运行, s表示suspended io 暂停状态
2、Serial resyncchronization: 串行同步,资源等待同步时延迟了重新同步,此时状态为A
3、Peer-initiated sync suspension:对等节点发起同步暂停,此时状态为p
4、Local initiated sync suspension:本地发起同步暂停,此时状态为u;
5、Locally blocked io, 可能的标识是: d:印一个短暂的磁盘状态导致drbd 内部出现IO阻塞
b:备用设备io阻塞; n:网络socket 出现阻塞; a设备的io和网络同时阻塞
6、activity log update suspension 活动日志更新暂停,此时标识为s
第五个字段可以说性能指标啦
ns nr 是相对应的,一个接受一个发送,单位都是KB
dw dr 是相对应的,写入和读取磁盘数据,单位都是KB
al (activity log):活动日志区的元数据更新
bm:(bit map) 位图区元数据更新
lo:(local coutn) 本地计数,drbd 请求开放本地IO子系统的数量;
pe:Number of requests sent to the partner, but that have not yet been answered by the latter.
ua:Number
of requests received by the partner via the network connection, but that have not yet been answered.
ap:(application pending):数据块IO请求到drbd,但drbd并为做出相应
ep:(epochs):一定数量的epoch,通常为1,使用阻碍或者没有排序写法时,会增加io负载;
wo:(write order 写入顺序)目前使用的方法:b(barrier 阻塞),f flush ,d drain n none
oos:(out of sync ) kB 同步
监控脚本,我偷个懒,不重复早轮子了,上个zabbix的 mpm的drbd 监控:
贴几个核心代码:
不过要提醒下zabbix 监控 drbd 需要的是root权限,各位当心,要不自己写也可以,下面只是个借鉴思路:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
my
@cmd
= `which drbd-overview`;
if
(
@cmd
== 0 ) {
$rc
= 2800;
&FromDualMySQLagent::mylog
(
$main::gParameter
{
'LogFile'
}, ERR,
"drbd-overview does not exist (rc=$rc)."
);
return
$rc
;
}
chomp
$cmd
[0];
my
@stdout
= `
$cmd
[0]`;
foreach
(
@stdout
) {
chomp
$_
;
if
(
$main::gParameter
{
'Debug'
} >= DBG ) {
&FromDualMySQLagent::mylog
(
$main::gParameter
{
'LogFile'
}, DBG,
$_
);
}
if
(
$_
=~ /^\s+(\d+):(\w+)\s+(\w+)\s+(\w+\/\w+)\s+(\w+\/\w+)\s+(\w)/ ||
$_
=~ /^\s+(\d+):(\?\?not-found\?\?)\s+(\w+)\s+(\w+\/\w+)\s+(\w+\/\w+)\s+(\w)/ ) {
push
(
@drbdDevices
, $1);
$drbdData
[$1]{
'name'
} = $2;
$drbdData
[$1]{
'cstate'
} = $3;
$drbdData
[$1]{
'role'
} = $4;
$drbdData
[$1]{
'dstate'
} = $5;
$drbdData
[$1]{
'protocol'
} = $6;
。。。。。。。
my
$file
=
'/proc/drbd'
;
if
( ! -r
$file
) {
$rc
= 2801;
&FromDualMySQLagent::mylog
(
$main::gParameter
{
'LogFile'
}, ERR,
"Cannot read on $file (rc=$rc)."
);
return
$rc
;
}
my
@stdout
= `cat
$file
`;
$_
=
$stdout
[0];
chomp
;
$gVersion
=
$_
;
my
$device
;
for
(
my
$i
= 1;
$i
<
$#stdout
;
$i
+= 2 ) {
# We are not intersted in 1st line because we got it already
# with the drbd-overview command
$_
=
$stdout
[
$i
+1];
chomp
;
if
(
$_
=~ /^\s+(\d+):/ ) {
$device
= $1;
}
|
本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1331408,如需转载请自行联系原作者