我有两个节点,每个节点有 20 个 HDD(大小相同)。两个节点都配置了 2 个 VG,每个 VG 使用 10 个磁盘创建。第一个 VG 称为 SAN,第二个称为 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
非常感谢您的帮助!
答案1
DRBD 可以使用任何块设备作为其备份磁盘;LVM 或物理磁盘本身都可以与 DRBD 配合使用。此外,DRBD 还会创建一个新的虚拟块设备,您可以根据需要将其用作 LVM 的物理卷。在 DRBD 升级为对等节点后,可以在对等节点上激活在 DRBD 上创建的任何 LV 或 VG。
您将需要调整 LVM 过滤器以获取 DRBD 设备上的 LVM 签名,并禁用 LVM 过滤器缓存/etc/lvm/lvm.conf
。
过滤器 = [“a|/dev/sd.*|”,“a|/dev/drbd.*|”,“r|.*|”] 写入缓存状态 = 0
完成此操作后,您应该能够在 DRBD 的“上方和下方”使用 LVM。创建用作 DRBD 后备磁盘的 LVM(示例假设 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; } 在主机 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
设置中use_lvmetad = 0
,然后lvm2-lvmmetad
通过systemd停止的服务和套接字:
#systemctl 停止 lvm2-lvmetad.service # systemctl 停止 lvm2-lvmetad.socket
答案2
您说的是备份,但 drbd 会立即复制,不算作传统的离线备份。它更像 RAID 1。仍然需要将您关心的数据复制到其他地方,不易受到意外删除命令等的影响。
drbd 会复制块设备上的所有内容,包括 LVM 和文件系统元数据。您需要一个集群 LVM 来处理多个节点上的设备。如果这样做,LV 可以出现在任一节点上。Red Hat 将其作为 Pacemaker HA 集群资源支持。他们的逻辑卷管理器管理指南可以帮助您入门。
另一种方法是设置分布式存储系统,如 glusterfs。这不使用 clvm,但允许分布式复制卷。这会在节点本地文件系统之上构建某种类型的共享文件系统。相比之下,drbd 上的 clvm 在复制的块磁盘设备之上构建集群文件系统。