DRBD狀態和磁盤狀態


狀態

/proc/drbd文件中的狀態信息如下:

[root@drbd1 ~]# cat /proc/drbd version: 8.4.10-1 (api:1/proto:86-101) GIT-hash: a4d5de01fffd7e4cde48a080e2c686f9e8cebf4c build by mockbuild@, 2017-09-15 14:23:22 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:76408 nr:0 dw:76408 dr:3441 al:22 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 

其中第三行中:

  • 0是drbd的次設備號(minor),表示該行是/dev/drbd0資源的信息。
  • cs是connect state,即節點的連接狀態。
  • ro是roles,即節點的角色狀態。
  • ds是disk state,即磁盤的狀態,也即drbd底層設備的狀態。
  • C是drbd的復制協議,即A、B、C協議。
  • r-----是IO標記,反應的是該資源的IO狀態信息。共有6種IO狀態標記符號。

第四行是drbd同步過程中的狀態,總體概括為"性能指標"。

DRBD連接狀態

  • WFConnection當前節點正在等待對端節點出現。例如對方節點drbdadm down后,本節點將處於本狀態。
  • StandAlone無連接。出現這種狀態可能是因為:未連接過、使用drbdadm disconnect斷開連接、節點由於身份驗證的原因未成功加入drbd集群使得連接被刪除、腦裂后斷開連接。
  • Disconnecting:斷開連接的一個臨時過渡狀態。它很快就會切入下一狀態就是StandAlone。
  • Unconnected:嘗試再次發起TCP連接時的一個臨時連接狀態(是連接超時后再次發送連接請求產生的狀態),它的下一個狀態可能是WFConnection,也可能是WFReportParams。
  • Timeout:和對端通信超時時的臨時狀態。下一個狀態就是Unconnection。
  • BrokenPipe:和對端連接丟失時的臨時狀態。下一個狀態是Unconnection。
  • NetworkFailure:和對端連接丟失時的臨時狀態。下一個狀態是Unconnection。(沒錯,和上面的一樣)
  • ProtocolError:和對端連接丟失時的臨時狀態。下一個狀態是Unconnection。(沒錯,還是和上面的一樣)
  • TearDown:對端關閉TCP連接時的臨時狀態。下一個狀態是Unconnection。
  • ConnectedDRBD連接已經建立完成,數據鏡像已經激活成功。這個狀態是drbd正常運行時的狀態。
  • WFReportParams:TCP連接已經建立完成,該節點正在等待對端的第一個數據包。
  • StartingSyncS:全盤數據同步中。只有在初始化時才應該全盤同步。下一個狀態是:SyncSource或PauseSyncS。
  • StartingSyncT:全盤數據同步中。只有在初始化時才應該全盤同步。下一個狀態是:WFSyncUUID。
  • WFBitMapS:部分數據正在同步。下一個狀態是:SyncSource或PauseSyncS。
  • WFBitMapT:部分數據正在同步。下一個狀態是:WFSyncUUID。
  • WFSyncUUID:同步馬上就要開始了。下一個狀態:SyncTarget或PauseSyncT。
  • SyncSource正在同步,且本節點是數據同步的源端。
  • SyncTartget正在同步,且本節點是數據同步的目標端。
  • PauseSyncS:本節點是同步的源端節點,但同步過程當前被暫停。出現這種狀態的原因可能是當前同步進程依賴於另一個同步進程完成,或者使用drbdadm pause-sync手動中斷了同步操作。
  • PauseSyncT:本節點是同步的目標端,但同步過程當前被暫停。出現這種狀態的原因可能是當前同步進程依賴於另一個同步進程完成,或者使用drbdadm pause-sync手動中斷了同步操作。
  • VerifyS:正在進行在線設備驗證,且本節點將成為驗證的源端。
  • VerifyT:正在進行在線設備驗證,且本節點將成為驗證的目標端。

磁盤狀態

磁盤的狀態既可以從/proc/drbd文件中獲取,也可以使用下面的命令來獲取。

# drbdadm dstate <resource> UpToDate/UpToDate 

在磁盤狀態信息中,本地節點的磁盤狀態總是標記在第一位,遠程節點標記在結尾。這兩端節點的狀態信息都可能為以下值:

  • Diskless:沒有為DRBD驅動分配底層塊設備。這意味着資源可能從沒有和它的底層塊設備進行關聯綁定(attach),也可能是手動detach解除了關聯,還可能是出現了底層IO錯誤時自動detach。
  • Attaching:讀取元數據時的一個短暫的狀態。
  • Failed:本地塊設備故障時的一個短暫的狀態,下一個狀態是:Diskless。
  • Negotiating:在已連接的DRBD設備上還要進行Attach時的一個短暫的狀態。
  • Inconsistent:數據不一致。在雙方節點(還未進行全盤同步之前)剛創建新的資源時會立即進入此狀態。在某一端(目標段)正接收同步數據時,也會進入不一致狀態。
  • Outdated:資源的數據是一致的,但是數據過期了。
  • DUnknown:用於標識對端節點沒有連接時的磁盤狀態。
  • Consistent:連接斷開時的數據處於一致性狀態,當連接建立后,將決定數據是UpToDate還是Outdated狀態。
  • UpToDate:資源的數據是一致的,且數據是最新的。這是drbd數據正常時的狀態。

角色狀態(roles,ro)

資源的角色狀態既可以從/proc/drbd文件中獲取,也可以使用下面的命令來獲取。

[root@drbd1 ~]# drbdadm role data1 Primary/Unknown Primary/Unknown 

在角色狀態信息中,本地節點總是標記在第一位,遠程節點標記在結尾。

可能的節點角色狀態有:

  • Primary:資源的primary角色,該角色狀態下的drbd設備可以進行掛載、讀、寫等。在沒有啟用多主復制模型(dual-primary mode),只能有一個primary節點。
  • Secondary:資源的secondary角色。該角色狀態下的drbd設備會接收來自primary端的數據更新(除非和對端不是primary)。且該角色的drbd設備不可掛載、不可讀、不可寫。
  • Unknown:資源的角色未知。本地節點的角色狀態絕對不可能會是這種狀態。只有對端節點斷開連接時對端節點才處於Unknown狀態。

IO狀態標記

IO狀態標記表示的是當前資源的IO操作狀態。共有6種狀態:

  • IO掛起:r或s都可能表示IO掛起,一般是r。r=running,s=suspended。
  • 串行重新同步:資源正在等待進行重新同步,但被resync-after選項延遲了同步進度。該狀態標記為"a",通常該狀態欄應該處於"-"。
  • 對端初始化同步掛起:資源正在等待進行重新同步,但對端節點因為某些原因而IO掛起。該狀態標記為"p",通常該狀態欄應該處於"-"。
  • 本地初始化同步掛起:資源正在等待進行重新同步,但本節點因為某些原因而IO掛起。該狀態標記為"u",通常該狀態欄應該處於"-"。
  • 本地IO阻塞:通常該狀態欄應該處於"-"。可能有以下幾種標記:
    • d:因為DRBD內部原因導致的IO阻塞。
    • b:后端設備正處於IO阻塞。
    • n:網絡套接字阻塞。
    • a:網絡套接字和后端塊設備同時處於阻塞狀態。
  • Activity Log更新掛起:當al更新被掛起時,處於該狀態,標記為"s",通常該狀態欄應該處於"-"。(如果不知道什么是Active Log,請無視本標記)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM