drbd(三):drbd的狀態說明

来源:https://www.cnblogs.com/f-ck-need-u/archive/2018/03/31/8684648.html
-Advertisement-
Play Games

本文目錄:1.drbd配置文件2.狀態 2.1 連接狀態(connect state,cs)和複製狀態 2.2 角色狀態(roles,ro) 2.3 磁碟狀態(disk state,ds) 2.4 IO狀態標記 2.5 性能指標 1.幾種獲取狀態信息的方法 drbd有很多獲取信息的方式。在drbd8 ...


本文目錄:
1.drbd配置文件
2.狀態
 2.1 連接狀態(connect state,cs)和複製狀態
 2.2 角色狀態(roles,ro)
 2.3 磁碟狀態(disk state,ds)
 2.4 IO狀態標記
 2.5 性能指標

1.幾種獲取狀態信息的方法

drbd有很多獲取信息的方式。在drbd84和之前的版本,大多都使用cat /proc/drbd來獲取信息,多數情況下,這個文件展示的信息對於管理和維護drbd來說已經足夠。

例如以下是drbd84上兩個volume的節點狀態信息:

[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
 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:4957732 nr:0 dw:76324 dr:4883249 al:29 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

但從drbd9開始,/proc/drbd文件已經廢棄了(其實從drbd84就已經廢棄了,只不過仍然能獲取信息),因為drbd9中添加了幾個新狀態信息,也修改了一些信息的顯示名稱,而這個文件並沒有"跟上腳步"。以下是drbd9中該文件展示的信息。

[root@drbd91 ~]# cat /proc/drbd 
version: 9.0.9-1 (api:2/proto:86-112)
GIT-hash: f7b979e7af01813e031aac579140237640c94569 build by mockbuild@, 2017-09-14 17:45:45
Transports (api:16): tcp (9.0.9-1)

在drbd9中,更多的是使用drbdadmdrbdsetup來獲取節點的狀態信息。當然,在drbd84中也可以使用它們來獲取詳細的信息,只不過使用/proc/drbd既方便,又簡潔,多數人都直接更願意使用/proc/drbd。

例如,使用drbdadm獲取節點的基本信息。

######### drbdadm status [--verbose] RESOURCE

[root@drbd90 ~]# drbdadm status rs0         
rs0 role:Primary
  volume:0 disk:UpToDate
  volume:1 disk:UpToDate
  drbd91.longshuai.com role:Secondary
    volume:0 replication:SyncSource peer-disk:Inconsistent done:0.43
    volume:1 replication:SyncSource peer-disk:Inconsistent done:23.72

[root@drbd90 ~]# drbdadm status rs0 --verbose
drbdsetup status rs0 
rs0 role:Primary
  volume:0 disk:UpToDate
  volume:1 disk:UpToDate
  drbd91.longshuai.com role:Secondary
    volume:0 replication:SyncSource peer-disk:Inconsistent done:7.04
    volume:1 replication:SyncSource peer-disk:Inconsistent done:48.44

使用drbdsetup獲取更詳細的信息:

######### drbdsetup status [--verbose] [--statistics] RESOURCE`

[root@drbd90 ~]# drbdsetup status rs0 --verbose --statistics    
rs0 node-id:0 role:Primary suspended:no
    write-ordering:flush
  volume:0 minor:0 disk:UpToDate
      size:4882432 read:537552 written:0 al-writes:0 bm-writes:0 upper-pending:0 lower-pending:0 al-suspended:no blocked:no
  volume:1 minor:1 disk:UpToDate
      size:4882432 read:2811712 written:0 al-writes:0 bm-writes:0 upper-pending:0 lower-pending:0 al-suspended:no blocked:no
  drbd91.longshuai.com node-id:1 connection:Connected role:Secondary congested:no
    volume:0 replication:SyncSource peer-disk:Inconsistent done:11.00 resync-suspended:no
        received:0 sent:537096 out-of-sync:4345336 pending:0 unacked:0
    volume:1 replication:SyncSource peer-disk:Inconsistent done:57.58 resync-suspended:no
        received:0 sent:2811256 out-of-sync:2071176 pending:0 unacked:0

除此之外,還可以使用drbd-overview獲取一些簡單的信息。

[root@drbd91 ~]# drbd-overview 
NOTE: drbd-overview will be deprecated soon.
Please consider using drbdtop.

 0:rs0/0  Connected(2*) Second/Primar UpToDa/UpToDa 
 1:rs0/1  Connected(2*) Second/Primar UpToDa/UpToDa

2.狀態

/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同步過程中的狀態,總體概括為"性能指標"。

以下翻譯自官方手冊: users-guide-8.4users-guide-9.0 。如果有疑問,可從官方手冊自行查找答案。

2.1 連接狀態(connect state,cs)和複製狀態

節點間通過TCP連接進行通信,在建立連接、斷開連接、特殊情況下有很多種連接狀態。

建立TCP連接後,還有稱為"DRBD"的連接DRBD連接建立完成,表示元數據區、數據區等一切都已準備好,可以進行任何數據同步的操作。

節點間的連接狀態既可以從/proc/drbd文件中獲取,也可以使用下麵的命令來獲取。

[root@drbd91 ~]# drbdadm cstate rs0
Connected

drbd84中,將連接狀態和複製狀態全部都歸類為連接狀態。但在drbd9中,由於可以通過net指令定義多個drbd節點,它更網路對端和volume的概念。因此它將和連接關係不大的狀態獨立劃分為"複製狀態(replication)"中,例如同步、驗證相關的狀態。本文就懶得去區分它們了,都放在一起解釋吧。

有以下幾種連接狀態,其中最常捕獲到的狀態已經加粗顯示。

  • 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:正在進行線上設備驗證,且本節點將成為驗證的目標端。

在drbd9中,WFConnection狀態改為connecting狀態。刪除了WFReportParams狀態。添加了以下幾個同步相關的狀態:

  • Off:該捲組還未同步,因為連接未建立。
  • Established所有對該捲組的寫操作已經線上完成同步。這是drbd正常運行時的狀態。
  • Ahead:數據同步操作被掛起,因為網路套接字中達到了一定的堵塞程度,無法應付更多的負載。該狀態需要配置"on-congestion"選項來啟用。
  • Behind:對端將數據同步操作掛起,因為網路套接字中達到了一定的堵塞程度,無法應付更多的負載。該狀態需要在對端節點上配置"on-congestion"選項來啟用。

2.2 角色狀態(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狀態。

2.3 磁碟狀態(disk state,ds)

磁碟的狀態既可以從/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數據正常時的狀態。

2.4 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,請無視本標記)

2.5 性能指標

主要是一些計數器和計量器的值。

請結合drbd原理圖進行理解:

drbd84中使用縮寫符號來標記性能指標,而drbd9中使用全稱來表示。例如drbd84中的ns和drbd9中的send是同一個意思。

  • ns/send (network send):通過網路連接發送給對端的數據量,單位為Kb。
  • nr/receive (network receive):通過網路連接接收到對端發送來的數據量,單位為Kb。
  • dw/written (disk write):該捲(volume)寫入本地磁碟的數據量,單位為Kb。
  • dr/read (disk read):該捲(volume)從本地磁碟讀取的數據量,單位為Kb。
  • al/al-writes (activity log):元數據區中al更新的次數。
  • bm/bm-writes (bit map):元數據區中bitmap更新的次數。
  • lo/lower-pending (local count):DRBD發起的打開本地IO子系統的請求次數。
  • pe/pending (pending):本地發送給對端但卻沒有回覆的次數。
  • ua/unacked (unacknowledged):接收到對端發送的請求但卻沒有給予回覆的請求數量。
  • ap/upper-pending (application pending):轉發給DRBD的IO塊的請求,但DRBD還沒給予回覆的請求數量。
  • ep (epochs):epoch對象的數量。通常為1。drbd9中沒有該指標。
  • wo/write-ordering (write order):當前正在使用的write order方法:b(barrier), f(flush), d(drain)或n(none)。
  • oos/out-of-sync (out of sync):當前不同步的數據量,單位為Kb。

上面所有"未給予回覆"的指標數量都表示動作還未完成,需要回覆後才表示操作完成。這些未回覆數值不能太大。

此外,drbd9中添加了以下幾個指標:

  • resync-suspended:重新同步操作當前是否被掛起。可能的值為no/user/peer/dependency。
  • blocked:本地IO的擁擠情況。
    • no:本地IO不擁擠。
    • upper:DRBD層之上的IO被阻塞。例如到文件系統上的IO阻塞。可能有以下幾種原因:
      • 管理員使用drbdadm suspend-io命令掛起了IO操作。
      • 短暫的IO阻塞,例如attach/detach導致的。
      • 刪除了緩衝區。
      • bitmap的IO等待。
    • lower:底層設備處於擁擠狀態。

 

回到Linux系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
回到網站架構系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7576137.html
回到資料庫系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7586194.html
轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/8684648.html

註:若您覺得這篇文章還不錯請點擊右下角推薦,您的支持能激發作者更大的寫作熱情,非常感謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.運算符 (1)分類 算術運算符、關係運算符、邏輯運算符、位運算符、賦值運算符、其他運算符 >.算術運算符: >.關係運算符: using System; namespace study { public class demo0_operator { static void Main(string ...
  • 1、安裝組件 Microsoft.AspNet.Identity.Core,身份認證核心組件 安裝Microsoft.AspNet.Identity.EntityFramework,EF實現身份認證 安裝Microsoft.AspNet.Identity.OWIN,身份認證的OWIN插件,用於替代F ...
  • //字元串轉bytes var ebytes = System.Text.Encoding.Default.GetBytes(keyWord); //bytes進行base64加密 var strBase64 = Convert.ToBase64String(ebytes); //base64字元轉 ...
  • 概述 前面 New UWP Community Toolkit 文章中,我們對 V2.2.0 版本的重要更新做了簡單回顧,其中簡單介紹了 MarkdownTextBlock 和 MarkdownDocument,本篇我們結合代碼詳細講解一下 Markdown 相關功能。 Markdown 是一種非常 ...
  • 回到目錄 Json動態序列化屬性,主要為瞭解決一個大實體,在返回前端時根據需要去序列化,如果實體里的某個屬性在任務情況下都不序列化,可以添加[JsonIgnore]特性,這種是全局的過濾,但是更多的情況下我們需要的是,按著某種場景去序列化某些屬性,下麵舉例說明。 兩種場景,B2C場景和C2C場景,它 ...
  • ...
  • 支持linux正則表達式的工具有:grep:實現查找,sed,awk:都是流式編輯器,可以實現查找和替換,並且把替換的文本輸出到屏幕上。 grep工具 grep [-cinvABC] 'word' -c:列印符合要求的行數 -i:忽略大小寫 -n:輸出符合要求的行及行號。 -v:列印不符合要求的行 ...
  • REDHAT7學習筆記 1. 安裝vmware10 安裝過程略,下載地址:鏈接: https://pan.baidu.com/s/16odKKkRYBxGWDVo1cz_wxA 註意,10以上版本不在支持32位,只有10這個版本支持32位同時支持redhat7 64位 2.下載Redhat7 64位 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...