DRBD常用管理篇

大囚長發表於2018-08-07
      在DRBD進入使用階段之後,要經常檢視它的工作狀態,通過這些狀態來判斷DRBD執行情況。

1) 使用drbd-overview命令觀察狀態
     最為簡便的方式就是執行drbd-overview命令

# drbd-overview
  0:r0  Connected Primary/Secondary UpToDate/UpToDate C r—– /nfs ext4 20G 45M 19G 1%


2) 通過偽檔案系統/proc/drbd 檔案來執行狀態

# cat /proc/drbd 
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—–
    ns:0 nr:0 dw:664 dr:2017 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

狀態指示
第一行:  軟體的版本號
第二行: 有關構建DRBD的特定資訊
第三行: DRBD的主要資訊

cs(Connect State):表示網路連線的狀態
ro(Role):表示執行節點的角色,Primary/Secondary 表示本機為主
ds(Disk State):表示當前的硬碟狀態
Replication protocol:表示當前複製所使用的協議,可以是ABC
I/O Flags:6個I/O輸入輸出標誌,從各個方面反映了本地資源的狀態
Performance indicators:效能指標,這是一組統計資料和計數器,反映出資源的利用情況和效能


3) 連線狀態
連線狀態可以通過監控/proc/drbd檔案得到具體資訊,也可以使用drbdadm cstate命令來獲取。

# drbdadm cstate r0

Connected

連線的狀態也有可能是以下其中的一種:
StandAlone:沒有可用的網路配置,資源沒有被連線,或者執行過 drbdadm disconnect resource 命令,例子如下:

# drbdadm disconnect all
# drbdadm cstate r0
StandAlone


4) 資源角色
資源連線狀態可以通過/proc/drbd或者使用drbdadm role resource來獲取。

# drbdadm role all
Primary/Secondary

可能的角色為:
Primary:當前的資源是Primary角色,可以進行讀取和定稿的操作。該角色在兩個節點中僅能出現在一個節點[雙節點模式除外]
Secondary:表示該角色為從節點,這種角色下既不能讀取也不寫入。這種角色可能會發生在一個或者兩個節點上。
第一行:
Unknown:這種角色表示當前資源的角色不。本地資源不會有這種狀態,它僅出現在用來表示對點的資源角色,而且僅在無法連線模式下。如下:

# drbdadm disconnect all
# cat /proc/drbd 
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
 0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r—–
    ns:660 nr:4 dw:664 dr:1029 al:5 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0


5) 磁碟狀態
磁碟狀態可以通過/proc/drbd或者使用drbdadm dstate resource來獲取。

# drbdadm dstate r0
UpToDate/UpToDate

首先輸入的是本地硬碟狀態,後面的是遠端硬碟狀態。以下為硬碟的狀態:

Diskless:無盤狀態,當前沒有與DRBD驅動相關塊裝置。這種狀態通常代表著資源沒有被附加上後臺裝置。可能是通過使用 rbdadm detach命令手工分離了後臺裝置。或者由於底層I/O的錯誤而自動分離。
Attaching:附加狀態,這種狀態是在讀取後設資料時出現的一種瞬間狀態。
Failed:失敗狀態,也是一種瞬間狀態,由於本地塊裝置報告,接著就是一個I/O錯誤,下一個狀態就是Diskless.
Negotiating:協商狀態,在已經連線的DRBD裝置上進行“Attach”讀取後設資料的一個瞬間狀態。
Inconsistent:資料不一致狀態這種狀態出現兩個DRBD節點上的資源在建立了新的資源後立即建立連線時(就是完全初始化同步之前),這種情況下兩個資源節點都會出現,另一種可能就是在同步過程中一個節點出現這種狀態,而且是出現在同步的目標上。
Outdated:資料過期狀態,資源資料一致,但是已經過期,這種情況需要進行進一步處理。
DUnknown:硬碟不明確狀態,如果網路連線無效,那麼這種狀態將會被用於表示對點磁碟的狀態。
Consisten:資料一致狀態,在沒有連線時資料一致的狀態,當連線完成後將會決定資料的狀態是UpToDate狀態還是Outdated狀態。
UpToDate:資料一致狀態,而且是最新的資料一致狀態。這也是正常狀態模式。

6) I/O狀態標誌
在/proc/drbd檔案中提供了有關I/O操作資訊,這種標誌資訊一共有6個,可能的值如下:

  • I/O暫停資訊狀態:可能看到的值兩個,不是r就是s,r表示正在執行,s表示暫停,通過為r.
  • 序列重新同步狀態:當資源重新同步時,但是因為重新同步延時,那麼這個標誌將會變為a,通常為”-“.
  • 對點初始化同步延時狀態:在資源等待重新同步時,但是本地節點的使用者延時了同步,那麼這個狀態將變為”u”
  • 本地I/O阻塞狀態:通常為“-”,可能還會出現如下標誌:
d:內部原因導致I/O阻塞,例如,瞬間狀態出現時。
b:後臺裝置i/o出現阻塞。
n:網路字出現阻塞。
a:同時出現裝置i/o阻塞和網路阻塞。
  • 活動日誌更新暫時狀態:當活動日誌更新暫停時,這個標誌變成了s。

7) 效能指標
在預覽/proc/drbd時,每個資源的第二行都包含了計數器和度量值。

# cat /proc/drbd 
version: 8.3.16 (api:88/proto:86-97)
GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build64R6, 2014-11-24 14:51:37
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—–
    ns:524420 nr:0 dw:525084 dr:2041 al:132 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

ns(network send):通過網路連線傳送到對端的資料量,單位KB.
nr(network receive):通過網路連線從對點接收的資料量,單位KB.
dw(disk write):向本地硬碟寫入網路資料,單位KB.
dr(disk read):網路從本地硬碟讀取的資料量,單位KB.
al(activity log):後設資料活動日誌的更新次數。
bm(bit map):後設資料區域更新的資源。
lo(local count):由DRBD產生的本地I/O請求資料。
pe(pending):就是等待響應,已經傳送到聖戰,但是還沒有得到對端回應的數量。
ua(unacknow wledged):就是未確認,通過網路連線收到對方的請求,但是還沒有做出處理的數量.
ap(application pending):轉發到DRBD的I/O請求,仍然沒有被DRBD所響應。
ep(epochs):epoch物件的數,通常為1。當使用barrier或者none寫順序方法時,可能會增加底層I/O負荷。
wo(write order):當前使用的寫順序的方法:b(barrier)/f(flush)/d(drain)/n(none)。
oos(out of sync):當前沒有同步的資料總數量,單位為KB.

8) 啟用/禁用資源
//啟用資源r0
# drbdadm up r0
提示:也可以將r0更改為all

//禁用資源r0
# drbdadm down r0
提示:也可以將r0更改為all

9) 重新配置資源
DRBD在執行時,允許使用者重新配置資源,為了實現這個目的,需要進行以下操作:
1、在DRBD的配置檔案/etc/drbd.conf(包括所有資源)中進行有必要的改變
2、在兩個節點之間同步DRBD的配置檔案
3、在兩個節點上執行drbdadm adjust <source>命令 (在執行此命令時,建議新增-d引數)

10) 匯出當前資源配置資訊

# drbdadm dump all
# /etc/drbd.conf
common {
    protocol               C;
}

# resource r0 on node2.dd.com: not ignored, not stacked
resource r0 {
    on node1.dd.com {
        device           /dev/drbd0 minor 0;
        disk             /dev/sdb1;
        address          ipv4 192.168.198.201:7788;
        meta-disk        internal;
    }
    on node2.dd.com {
        device           /dev/drbd0 minor 0;
        disk             /dev/sdb1;
        address          ipv4 192.168.198.202:7788;
        meta-disk        internal;
    }
    syncer {
        rate             100M;
    }
}

<wbr>

相關文章