Ubuntu

帶有外部元磁碟的 DRBD

  • January 31, 2022

我正在嘗試使用 DRBD 創建故障轉移,並且我有兩個分區。

分區 1) /dev/sda4 是為我將要創建的 KVM 設置的。分區 2) /dev/sda5 用於 DRBD 元數據

我的配置文件在下面

resource r0 {
   protocol C;
   startup {
           wfc-timeout  15;
           degr-wfc-timeout 60;
   }
   net {
           cram-hmac-alg sha1;
           shared-secret "SECRET_KEY";
   }
   on Server1{
           device /dev/drbd0;
           disk /dev/sda4;
           address IP:7788;
           meta-disk /dev/sda5;
   }
   on Server2{
           device /dev/drbd0;
           disk /dev/sda4;
           address IP:7788;
           meta-disk /dev/sda5;
   }

}

當我執行 drbdadm create-md r0 它執行成功但它在兩個分區上創建 /dev/drbd0 。

   ├─sda4      8:4    0  7.2T  0 part
   │ └─drbd0 147:0    0  7.2T  1 disk
   └─sda5      8:5    0  399M  0 part
     └─drbd0 147:0    0  7.2T  1 disk

據我了解,它應該只在 /dev/sda5 的元磁碟上創建它。我設置元磁碟的原因是避免對 sda4 進行任何寫入。我的推理是正確的還是我遺漏了什麼。

終於想通了。通過將捲組放在 DRBD0 之上,現在一切正常。

我在設備上創建卷組時確實遇到了問題,必須將過濾器添加到 lvm.conf

我得到一個錯誤說

Cannot use device /dev/drbd/ with duplicates

我剛剛將這個添加到設備部分

filter = [ "r|/dev/sda4|", "r|/dev/disk/|", "r|/dev/block/|", "a/.*/" ]

現在一切都很好

我確認這是lsblk在使用外部元數據和 DRBD 時輸出在 AlmaLinux 8.5 上的樣子。DRBD 設備只是一個虛擬塊設備,它在您的設置中的兩個分區上分層。

它按預期工作。如果您使用其他方法/實用程序檢查塊設備,您會發現您只有一個/dev/drbd0,並且您創建的元數據分區是您期望的大小。

例如,我使用兩個 LVM 卷的配置:

resource r0 {
   protocol C;
   startup {
           wfc-timeout  15;
           degr-wfc-timeout 60;
   }
   net {
           cram-hmac-alg sha1;
           shared-secret "SECRET_KEY";
   }
   on Server1{
           device /dev/drbd0;
           disk /dev/drbdpool/data;      # 1GiB lvm on /dev/sdb
           meta-disk /dev/drbdpool/meta; # 4MiB lvm on /dev/sdb
           192.168.1.11:7788;
   }
   on Server2{
           device /dev/drbd0;
           disk /dev/drbdpool/data;      # 1GiB lvm on /dev/sdb
           meta-disk /dev/drbdpool/meta; # 4MiB lvm on /dev/sdb
           192.168.1.12:7788;
   }

完全顯示了我的期望/proc/partitions

# cat /proc/partitions 
major minor  #blocks  name

  8        0   20480000 sda
  8        1    2048000 sda1
  8        2   18430976 sda2
  8       16    8388608 sdb
253        0       4096 dm-0
253        1    1048576 dm-1
147        0    1048576 drbd0

blockdev --report看起來也不錯:

# blockdev --report /dev/drbd0
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0      1073741824   /dev/drbd0
# blockdev --report /dev/drbdpool/meta 
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  8192   512  4096          0         4194304   /dev/drbdpool/meta
# blockdev --report /dev/drbdpool/data
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  8192   512  4096          0      1073741824   /dev/drbdpool/data

這可能lsblk是令人困惑的地方:

# cat /sys/block/drbd0/size 
2097152
# cat /sys/block/dm-0/size 
8192
# cat /sys/block/dm-1/size 
2097152
# cat /sys/block/dm-0/holders/drbd0/size 
2097152
# cat /sys/block/dm-1/holders/drbd0/size 
2097152

引用自:https://serverfault.com/questions/1091310