DRBD狀態指標和性能指標簡介

DRBD經過/proc/drbd文件監控DRBD設備的運行狀況。html

/proc/drbd  文件分爲兩大塊,分別是當前配置的全部drbd資源的實時狀態和DRBD性能指標。網絡

image_thumb[2]

其中,第一行是狀態標誌:app

  • 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): less

nns:** nr:** dw:** dr :** al :** bm :** lo :** pe :** ua :** ap :** ep :** wo :** oos :** socket

 

(1) DRBD 網絡鏈接狀態

網絡鏈接狀態就是上述的性能指標中的  "cs:Connnect" 這一列信息,DRBD中全部的狀態以下圖所示,其中紅色部分表示是臨時狀態。ide

image_thumb[7]

  • 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 */ui

    /* 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,this

    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,.net

    /* 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 操做的當前資源的信息。

image

其具體表示的信息以下:

image

從左到右分別表示:

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同步當前存儲
相關文章
相關標籤/搜索