DRBD通过/proc/drbd文件监控DRBD设备的运行情况。
/proc/drbd 文件分为两大块,分别是当前配置的所有drbd资源的实时状态和DRBD性能指标。
其中,第一行是状态标志:
第二行是性能指标(详细指标的说明参见 http://drbd.linbit.com/users-guide-8.4/ch-admin.html#s-proc-drbd):
nns:** nr:** dw:** dr :** al :** bm :** lo :** pe :** ua :** ap :** ep :** wo :** oos :**
网络连接状态就是上述的性能指标中的 "cs:Connnect" 这一列信息,DRBD中所有的状态如下图所示,其中红色部分表示是临时状态。
其实,这些状态在DRBD源码中也可以看到:
/* The order of these constants is important.
* The lower ones (<C_WF_REPORT_PARAMS) indicate
* that there is no socket!
* >=C_WF_REPORT_PARAMS ==> There is a socket
*/
enum drbd_conns {
C_STANDALONE,
C_DISCONNECTING, /* Temporal state on the way to StandAlone. */
C_UNCONNECTED, /* >= C_UNCONNECTED -> inc_net() succeeds *//* These temporal states are all used on the way
* from >= C_CONNECTED to Unconnected.
* The 'disconnect reason' states
* I do not allow to change between them. */
C_TIMEOUT,
C_BROKEN_PIPE,
C_NETWORK_FAILURE,
C_PROTOCOL_ERROR,
C_TEAR_DOWN,C_WF_CONNECTION,
C_WF_REPORT_PARAMS, /* we have a socket */
C_CONNECTED, /* we have introduced each other */
C_STARTING_SYNC_S, /* starting full sync by admin request. */
C_STARTING_SYNC_T, /* starting full sync by admin request. */
C_WF_BITMAP_S,
C_WF_BITMAP_T,
C_WF_SYNC_UUID,/* All SyncStates are tested with this comparison
* xx >= C_SYNC_SOURCE && xx <= C_PAUSED_SYNC_T */
C_SYNC_SOURCE,
C_SYNC_TARGET,
C_VERIFY_S,
C_VERIFY_T,
C_PAUSED_SYNC_S,
C_PAUSED_SYNC_T,C_AHEAD,
C_BEHIND,C_MASK = 31
};
可以通过查看/proc/drbd 或者是使用命令drbdadm dstate查看资源的磁盘状态,主要有如下的磁盘状态:
同时,这些状态在DRBD源码中也可以看到
enum drbd_disk_state {
D_DISKLESS,
D_ATTACHING, /* In the process of reading the meta-data */
D_FAILED, /* Becomes D_DISKLESS as soon as we told it the peer */
/* when >= D_FAILED it is legal to access device->ldev */
D_NEGOTIATING, /* Late attaching state, we need to talk to the peer */
D_INCONSISTENT,
D_OUTDATED,
D_UNKNOWN, /* Only used for the peer, never for myself */
D_CONSISTENT, /* Might be D_OUTDATED, might be D_UP_TO_DATE ... */
D_UP_TO_DATE, /* Only this disk state allows applications' IO ! */
D_MASK = 15
};
通过查看/proc/drbd 的如下图所示的数据,包含有关I/O 操作的当前资源的信息。
其具体表示的信息如下:
从左到右分别表示:
1. I/O suspension,r表示运行I/O,s表示suspended I/O,正常情况下为r
2. Serial resynchronization 串行同步:当资源等待同步时却推迟了重新同步,这则个标志变成A,正常情况为 –
3. Peer-initiated sync suspension 对等节点发起的同步暂停:当资源正在等待重新同步时,对等节点因为一些原因发起暂停同步。这个标志变成p。正常为–
4. Locally initiated sync suspension 本地发起的同步暂停:当资源等待重新同步时,在本地节点上用户发起同步暂停,这个标志变成u。正常为 –
5. Locally blocked I/O 。正常为 -。可能会是一下标志:
d:如因为一个短暂的磁盘状态导致的drbd内部出现I/O 阻塞
b:备用设备的I/O 阻塞
n:网络socket出现阻塞
a:设备的I/O 阻塞和网络阻塞的组合
6. Activity Log update suspension 活动日志更新暂停:当活动日志更新暂停,这个标志变成s。正常为 –
/proc/drbd 第二行包含每个资源的计数器和仪表状况的信息,如下图所示:
每个状态指标的含义如下所示。