在兩個 Linux 伺服器之間鏡像 VG
我有兩個節點,每個節點有 20 個 HDD(相同大小)。兩個節點都配置了 2 個 VG,每個 VG 使用 10 個磁碟創建。1 個 VG 稱為 SAN,第 2 個稱為 NAS。
Node1- 將提供 nfs 服務,並且 nfs 數據將保存在 NAS vg 上的一個名為 nfs 的 LV 上(在 node2 上看起來相同)。VG SAN 將是節點 2 上 SAN VG 的備份。
Node2- 將提供 SAN 服務,數據將保存在 LV 上。每個 lv 代表一個 lun 並使用 targetcli ,我正在從每個 lv 創建塊設備。因此,根據對 lun 的請求,我創建了一個具有所需大小的 LV,並使用這個新創建的 LV 在 targetcli 中創建了一個後台儲存(塊設備)。
VG NAS 也存在於節點 2 上,用於備份節點 1 的 NAS VG 中的數據。備份的數據不應該被質疑:我考慮過使用 drbd 將數據從每個節點備份到另一個節點,因此最終每個節點 1 將備份節點 2,反之亦然。使用 NAS VG 我沒問題,因為它只有一個 lv 並且是靜態的。問題是,我不斷創建 LV 的 SAN VG 會發生什麼?drbd 會在另一邊創建它們以及備份的結果嗎?如果不是,我如何才能始終保持這些 VG 相同,這意味著當我在節點 2 上創建 LV 時,它將自動在節點 1 上創建?
順便說一句 - 兩個節點上的作業系統都是 centos7.1
非常感謝您的幫助!
DRBD 可以使用任何塊設備作為它的備份磁碟;LVM 或物理磁碟本身將與 DRBD 一起使用。此外,DRBD 創建了一個新的虛擬塊設備,如果您願意,您可以將其用作 LVM 的物理卷。任何在 DRBD 上創建的 LV 或 VG 都可以在 DRBD 被提升為主節點後在對等節點上啟動。
您需要調整 LVM 過濾器以獲取 DRBD 設備上的 LVM 簽名,並在
/etc/lvm/lvm.conf
.過濾器 = ["a|/dev/sd.*|", "a|/dev/drbd.*|", "r|.*|"] write_cache_state = 0
完成此操作後,您應該能夠使用“上下”DRBD 的 LVM。創建 LVM 用作 DRBD 的備份磁碟(範例假設 sdb1 是物理驅動器);在兩個節點上執行以下步驟:
# pvcreate /dev/sdb1 物理卷“/dev/sdb1”成功創建 # vgcreate vg_drbd_back /dev/sdb1 卷組“vg_drbd_back”成功創建 # lvcreate --name r0 --size 100G vg_drbd_back 已創建邏輯卷“r0”
r0
在兩個節點上創建您的 DRBD 配置:資源 r0 { 設備/dev/drbd0; 磁碟 /dev/vg_drbd_back/r0; 元磁碟內部; 在主機上-a {地址xxxx:7789;} 在 host-b {地址 xxxx:7789; } }
通過創建元數據並在兩個節點上啟動設備來初始化 DRBD,然後選擇一個節點提升為主節點(–force 僅用於初始同步)。
然後,在主節點上,在 DRBD 設備上創建 PV、VG 和 LVM 簽名:
# pvcreate /dev/drbd0 物理卷“/dev/drbd0”成功創建 # vgcreate vg_drbd_front /dev/drbd0 卷組“vg_drbd_front”成功創建 # lvcreate --name drbd_lvm0 --size 30G vg_drbd_front 已創建邏輯卷“drbd_lvm0” # lvcreate --name drbd_lvm1 --size 40G vg_drbd_front 已創建邏輯卷“drbd_lvm1”
要手動對 LVM 進行故障轉移,您需要先停用主卷組上的捲組,然後才能將其降級為輔助卷組:
# vgchange -an vg_drbd_front 卷組“vg_drbd_front”中的 0 個邏輯卷現在處於活動狀態 # drbdadm 二級 r0
然後在對等體上,提升 DRBD 並啟動卷組:
# drbdadm 主 r0 # vgchange -ay vg_drbd_front 卷組“vg_drbd_front”中的 2 個邏輯卷現在處於活動狀態
當然,如果您想使用 Pacemaker 自動執行此操作,您將需要使用 LVM 資源代理來處理指定 VG 的啟動/停用:
# pcs 資源描述 ocf:heartbeat:LVM
此外,LINBIT 網站上有很多好的(免費)技術指南和其他資源,它們可能對您的集群有所幫助:http ://www.linbit.com
編輯:添加了下面關於禁用“lvmmetad”的部分。
CentOS 7 預設啟用 ’lvmetad’。您需要在兩個節點上禁用它,過濾器才能按上面的配置工作。
在
/etc/lvm/lvm.conf
setuse_lvmetad = 0
中,然後lvm2-lvmmetad
通過 systemd 停止服務和套接字:# systemctl stop lvm2-lvmetad.service # systemctl stop lvm2-lvmetad.socket