High-Availability
為什麼 DRBD 基礎架構每天會多次重新同步整個分區
我有一個主要/次要 2 節點 DRBD 設置,如圖所示
global { usage-count no; } common { syncer { rate 4M; } } resource r0 { protocol B; startup { wfc-timeout 15; degr-wfc-timeout 60; } net { cram-hmac-alg sha1; shared-secret "whateverblahblahblah"; max-buffers 4096; max-epoch-size 4096; } handlers { split-brain "/usr/lib/drbd/notify-split-brain.sh admin@mydomain.com"; } on node01.chofert.com { device /dev/drbd0; disk /dev/sdb1; address <public_IP_1>:7788; meta-disk internal; } on node02.chofert.com { device /dev/drbd0; disk /dev/sdb1; address <public_IP_2>:7788; meta-disk internal; } }
我搬到了協議 B,因為節點位於不同的網路中,而 B 足以滿足我的需求。並且速率限制為 4Mb,因為伺服器之間的總頻寬為 12Mb(我知道很低,但每天的寫入量真的很少)。
問題是,可能是由於一個佔用 CPU 的夜間程序,DRBD 大約在 2 小時內崩潰。在那之後,儘管寫入強度很低,但每天至少會發生 2 或 3 次完整的分區重新同步。
我的問題是:DRBD 如何在複製時工作?我的意思是為什麼我會看到完整的分區重新同步,而不僅僅是寫入的幾個字節?
可能只有 1 個部門的差異會影響 DRBD 的正確行為嗎?
在節點 1 的分區:
Disk /dev/sdb1: 8588 MB, 8588886528 bytes 255 heads, 63 sectors/track, 1044 cylinders, total 16775169 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
在節點 2 上的分區
Disk /dev/sdb1: 8588 MB, 8588886016 bytes 64 heads, 32 sectors/track, 8191 cylinders, total 16775168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
哦,我會回答自己:
經過多次測試和工作,我可以確認::DRBD 複製磚中涉及的分區/磁碟的幾何結構必須完全相同。就這樣 !因此,如果您使用虛擬環境,最可靠的做法就是複製用於虛擬卷的相同文件。
也許這在 DRBD wiki 的某個地方有明確的說明;我自己我沒有找到它。
:(
沒人知道?好的,在我擁有的生產基礎架構上進行測試並不容易,但是,由於每一個小細節都很重要,我想我必須以某種方式調整磁碟的大小,以消除 1-sector 不同的麻煩