無法在 CentOS 7.3 上使用 DRBD 8.4 執行 drbdadm
節點:
- 節點1
- 節點2
使用這種方式在兩個節點上安裝 DRBD:
rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org yum -y install drbd84-utils kmod-drbd84
添加新硬碟並在兩個節點上進行分區:
fdisk /dev/sdb
然後格式化分區:
mkfs.ext4 /dev/sdb
(在 node2 上失敗,因此將其刪除並添加了一個新磁碟成為
/dev/sdc
. 格式化它。)按照官方指南在兩個節點上配置基本資源:
http://docs.linbit.com/docs/users-guide-8.4/p-build-install-configure/#ch-configure
/etc/drbd.d/r0.res
在兩個節點上創建:resource r0 { protocol C; on node1 { device /dev/drbd0; disk /dev/sdb; address 192.168.0.1:7789; meta-disk internal; } on node2 { device /dev/drbd0; disk /dev/sdc; address 192.168.0.2:7789; meta-disk internal; } }
在兩個節點上編輯 iptables:
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7788 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7799 -j ACCEPT service iptables save
在兩個節點上初始化數據:
drbdadm create-md r0
一切都好。
將資源放在兩個節點上:
drbdadm up r0
節點1:
Device '0' is configured! Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 20
節點2:
??: Failure: (162) Invalid configuration request additional info from kernel: minor exists in different resource Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10
兩人都發生了問題。
cat /proc/drbd
在兩個節點上執行:節點1:
version: 8.4.9-1 (api:1/proto:86-101) GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s ns:0 nr:0 dw:0 dr:912 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2097052
節點2:
version: 8.4.9-1 (api:1/proto:86-101) GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48 0: cs:WFConnection ro:Secondary/Unknown ds:Diskless/DUnknown C r----s ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
Primary
並且Secondary
未知。在節點 1 上執行
drbdadm connect all
:r0: Failure: (125) Device has a net-config (use disconnect first) Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C' terminated with exit code 10
在節點2上執行
drbdadm -- --discard-my-data connect all
:r0: Failure: (102) Local address(port) already in use. Command 'drbdsetup-84 connect r0 ipv4:192.168.0.1:7789 ipv4:192.168.0.2:7789 --protocol=C --discard-my-data' terminated with exit code 10
使用它有什麼問題?
編輯 1
在兩個節點上執行後
dd if=/dev/zero of=/dev/sdb(sdc) bs=1M oflag=direct status=progress
,它們也無法drbdadm up r0
成功執行:節點1
No valid meta data found Command 'drbdmeta 0 v08 /dev/sdb internal apply-al' terminated with exit code 255
節點2
??: Failure: (162) Invalid configuration request additional info from kernel: minor exists in different resource Command 'drbdsetup-84 new-minor r0 0 0' terminated with exit code 10
編輯 2
此時,
systemctl start brdb
在兩個節點上執行,所有節點都處於掛起狀態。等了很久沒有結果。現在跑
lsblk -a
了:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 9G 0 part ├─cl-root 253:0 0 8G 0 lvm / └─cl-swap 253:1 0 1G 0 lvm [SWAP] sdb 8:32 0 16G 0 disk sr0 11:0 1 1024M 0 rom drbd0 147:0 0 2G 0 disk
您不想在 DRBD (
sdb
和sdc
) 的備份磁碟上創建文件系統;您想先創建 DRBD,然後使用您的文件系統格式化生成的 DRBD 設備。它可以通過其他方式完成,但是您需要增加支持分區,或減小文件系統的大小以為 DRBD 的元數據(使用內部元數據時位於塊設備的末尾)騰出空間。該過程應該是這樣的:
像上面一樣安裝所有軟體。
將兩個節點上的分區歸零(可選,但要這樣做):
# dd if=/dev/zero of=/dev/sdb bs=1M oflag=direct status=progress # dd if=/dev/zero of=/dev/sdc bs=1M oflag=direct status=progress
像上面那樣為你的 DRBD 資源創建配置文件。
像上面那樣添加防火牆規則(除非你真的不需要埠 7799,因為它沒有在你的配置中使用)。
在備份塊設備上創建 DRBD 的元數據,並
r0
在兩個節點上啟動:# drbdadm create-md r0 # drbdadm up r0 # cat /proc/drbd
-檢查 的輸出
cat /proc/drbd
,您應該看到您的設備是Connected
、Secondary/Secondary
和Inconsistent/Inconsistent
。如果這些事情中的任何一個不正確,請停止,有些事情是不對的。
- 然後,選擇任何一個節點(不是兩個),強制它成為主節點(DRBD 不會讓你在有
Inconsistent
數據的節點上成為主節點)並創建 FS:# drbdadm primary r0 --force # mkfs.ext4 /dev/drbd0
然後你會使用
/dev/drbd0
就像你會使用/dev/sda
or/dev/sdc
; 除非您對自己正在做的事情有信心,否則不要再觸摸/dev/sdb
或再次觸摸。/dev/sdc
觸摸 DRBD 的備份磁碟可能會引入 DRBD 不會意識到的不一致(直到您執行verify
或以其他方式覆蓋該塊)。繼續閱讀 LINBIT 的文件。DRBD 顯然是一個很棒的工具,一旦你了解了基礎知識就很容易使用,但是你正在處理儲存,所以有很大的空間可以永久地搞砸事情。