DRBD-9 的核心資料結構¶
本文描述了 DRBD-9 的核心資料結構。從 Linux v3.14 開始,我們正在重組 DRBD 以使用此資料結構。
基本資料結構¶
一個節點擁有多個 DRBD 資源。每個此類資源都包含多個裝置(亦稱卷)以及與其他節點(“對等節點”)的連線。每個 DRBD 裝置在本地都由一個塊裝置表示。
DRBD 物件相互連線,形成如下所示的矩陣;一個 drbd_peer_device 物件位於每個 drbd_device 和 drbd_connection 之間的交點。
/--------------+---------------+.....+---------------\
| resource | device | | device |
+--------------+---------------+.....+---------------+
| connection | peer_device | | peer_device |
+--------------+---------------+.....+---------------+
: : : : :
: : : : :
+--------------+---------------+.....+---------------+
| connection | peer_device | | peer_device |
\--------------+---------------+.....+---------------/
在此表中,裝置可以按卷號從資源中橫向訪問。同樣,peer_device 可以按卷號從連線中訪問。縱向的物件透過雙向連結串列連線。從 peer_device 到其連線和裝置有反向指標,從連線和裝置到其資源也有反向指標。
所有資源都位於 drbd_resources 雙向連結串列中。此外,所有裝置都可以透過 drbd_devices idr 訪問其次裝置號。
drbd_resource、drbd_connection 和 drbd_device 物件是引用計數的。peer_device 物件僅用於建立裝置和連線之間的連結;它們的生命週期由它們所引用的裝置和連線的生命週期決定。