两个 Linux 服务器之间的镜像 VG

两个 Linux 服务器之间的镜像 VG

我有两个节点,每个节点有 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 在复制的块磁盘设备之上构建集群文件系统。

相关内容