DRBD状态指标和性能指标简介

DRBD通过/proc/drbd文件监控DRBD设备的运行情况。

/proc/drbd  文件分为两大块,分别是当前配置的所有drbd资源的实时状态和DRBD性能指标。

DRBD状态指标和性能指标简介_第1张图片

其中,第一行是状态标志:

  • cs: Connection state,网络连接状态
  • ro: Resource roles, 节点的角色。格式:本地节点/对等节点
  • ds: Disk states, 磁盘状态
  • 同步协议 : protocol A、B和C
  • I/O状态标志位 : 表示格式为 [r/s][a/-][p/-][u/-][d/b/n/a/-][s/-]

第二行是性能指标(详细指标的说明参见 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 :**

 

(1) DRBD 网络连接状态

网络连接状态就是上述的性能指标中的  "cs:Connnect" 这一列信息,DRBD中所有的状态如下图所示,其中红色部分表示是临时状态。

DRBD状态指标和性能指标简介_第2张图片

  • StandAlone 独立的:网络配置不可用。资源还没有被连接或者是被管理断开(使用drbdadm disconnect命令),或者是由于出现认证失败或者是裂脑的情况。
  • Disconnecting 断开。
  • Timeout超时:与对等节点连接超时。
  • BrokerPipe:与对等节点连接丢失。
  • NetworkFailure:与对等节点失去连接后的临时状态。
  • ProtocolError. 与对等节点失去连接后的临时状态。
  • TearDown:对等节点连接关闭。
  • Unconnected :是尝试连接前的临时状态
  • WFConnection.等待和对等节点建立网络连接。
  • WFReportParams:已经建立TCP连接,本节点等待从对等节点传来的第一个网络包。
  • Connected 连接:Drbd已经建立连接,数据镜像现在可用,节点处于正常状态。
  • VerifyS:以本地节点为验证源的线上设备验证正在执行。
  • StartingSyncS:由管理者发起的完全同步开始同步。
  • WFBitMapS:部分同步刚刚开始
  • SyncSource:以本节点为同步源的同步正在进行。
  • PausedSyncS:以本地节点是一个持续同步的源,但是目前同步已经暂停。可能是因为另外一个同步正在进行或者是使用命令drbdadm pause-sync暂停了同步
  • VerifyT:以本地节点为目标源的线上设备验证正在执行
  • StartingSyncT:由管理者发起的完全同步刚刚开始
  • WFBitMapT:部分同步刚刚开始
  • WFSyncUUID:同步即将开始
  • SyncTarget:以本节点为同步目标的同步正在进行。
  • PausedSyncT:以本地节点为持续的同步目标,但是目前同步已经暂停,这可能是因为另外一个同步正在进行或者是使用命令drbdadm pause-sync暂停了同步。

 

其实,这些状态在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
};

 

(2) DRBD 磁盘状态

可以通过查看/proc/drbd 或者是使用命令drbdadm dstate查看资源的磁盘状态,主要有如下的磁盘状态:

  • Failed :本地块设备报告I/O 错误的下一个状态。其下一个状态为Diskless无盘。
  • Diskless:本地没有块设备分配给DRBD使用,这就意味着没有可用的备用设备,或者使用drbdadm detach命令手工分离或者是底层的I/O 错误导致自动分离。
  • Negotiating:在已经连接的DRBD设备进行Attach读取元数据前的瞬间状态。
  • Attaching :读取元数据时候的瞬间状态。
  • DUnknown  :对等节点(peer)网络不可用
  • Consistent :数据一致但是没有连接。当建立连接时,它决定数据是UpToDate 或者是Outdated。
  • Outdated : 数据一致但是已经过时
  • Inconsistent : 数据是不一致的,在两个节点上(初始的完全同步前)这种状态出现后立即创建一个新的资源。此外,在同步期间(同步目标)在一个节点上出现这种状态。
  • UpToDate  : 一致的最新的数据状态,这个状态是正常的状态。

 

同时,这些状态在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
};

 

(3) DRBD I/O状态标志位

通过查看/proc/drbd 的如下图所示的数据,包含有关I/O 操作的当前资源的信息。

其具体表示的信息如下:

DRBD状态指标和性能指标简介_第3张图片

从左到右分别表示:

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。正常为  –

 

(4) DRBD 性能指标

/proc/drbd 第二行包含每个资源的计数器和仪表状况的信息,如下图所示:

image

 

每个状态指标的含义如下所示。

  • ns(network send 网络发送):net数据以kibyte通过网络连接发送到对等节点
  • nr(network receive 网络接收):通过网络连接以kibyte接收net数据
  • dw(disk write 磁盘写入):net数据以kibyte写入本地磁盘 、
  • dr(disk read 磁盘读取):net数据以kibyte读取本地磁盘数据
  • al(activity log 活动日志):活动日志区的元数据更新
  • bm(bit map 位图):位图区元数据更新
  • lo(local count  本地计数):DRBD请求的开放本地I/O 子系统的数量
  • pe(pending 待定):发送到对等节点但是尚未节点对方回答的请求的数目
  • ua(unacknowledged 未确认):通过网络连接接收到对等节点的请求,但是尚未得到回复
  • ap(application pending应用程序挂起):数据块I/O 请求转发到DRBD,但是DRBD尚未回答
  • ep(epochs):一定数量的epoch对象,通常为1,使用阻碍或者是没有排序写的方法时可能增加I/O 负载。
  • wo(write order 写入顺序)目前使用的写入顺序的方法:b(barrier障碍)、f (flush  刷新)、d(drain 漏)或者是n(none无)
  • oos(out of sync):以Kibibytes同步当前存储

你可能感兴趣的:(DRBD状态指标和性能指标简介)