在两台Linux服务器之间镜像VG

我有两个节点,每个有20个HDD(相同的大小)。 两个节点都configuration了2个VG,每个VG都是使用10个磁盘创build的。 1个VG被称为SAN第二个被称为NAS。

Node1-将提供nfs服务,nfs数据将保存在NAS vg上,名为nfs的LV(在node2上看起来相同)。 VG SAN将成为节点2上的SAN VG的备份。

Node2-将提供SAN服务,数据将保留在LV上。 每个lv代表一个lun和使用targetcli,我从每个lv创build块设备。 所以根据一个lun的请求,我创build一个具有所需大小的LV,并使用这个新创build的LV在targetcli中创build一个backstore(blockdevice)。

VG NAS也存在于节点2上,用于备份来自节点1的NAS VG的数据。 备份的数据不应该有问题:我想过使用drbd将数据从每个节点备份到另一个节点,所以最终每个节点1将备份节点2,反之亦然。 有了NAS VG,我可以,因为它只有一个LV,它是静态的。 问题是,在我不断创buildLV的SAN VG上会发生什么? 将drbd创build他们在另一边以及备份的结果? 如果没有,那么我怎样才能始终保持这些VG相同,即当我在节点2上创build一个LV时,它将自动在节点1上创build?

顺便说一句 – 两个节点上的操作系统是centos7.1

非常感谢您的帮助!

DRBD可以使用任何块设备,因为它支持磁盘; LVM或物理磁盘本身将与DRBD一起使用。 此外,DRBD还创build了一个新的虚拟块设备,如果您愿意,您可以将其用作LVM的物理卷。 在DRBD已经升级到Primary之后,在DRBD上创build的任何LV或VG都可以在对等节点上激活。

您需要调整LVM筛选器以获取DRBD设备上的LVM签名,并在/etc/lvm/lvm.conf禁用LVM筛选器caching。

  filter = [“a | /dev/sd.* |”,“a | /dev/drbd.* |”,“r |。* |”] 
 write_cache_state = 0

这样做之后,您应该可以使用“DRBD之上和之下”的LVM。 创build要用作DRBD后备磁盘的LVM(假定sdb1是物理驱动器); 在两个节点上执行这些步骤:

 #pvcreate / dev / sdb1
物理卷“/ dev / sdb1”已成功创build
 #vgcreate vg_drbd_back / dev / sdb1
卷组“vg_drbd_back”已成功创build
 #lvcreate --name r0 --size 100G vg_drbd_back
逻辑卷“r0”已创build

在两个节点上为r0创buildDRBDconfiguration:

资源r0 {
  设备/ dev / drbd0;
  磁盘/ dev / vg_drbd_back / r0;
  元磁盘内部;
  在host-a {address xxxx:7789;  }
  在host-b {address xxxx:7789;  }
 }

通过创build元数据并在两个节点上启动设备来初始化DRBD,然后select一个节点升级为Primary( – 仅用于初始同步)。

然后,在主节点上,在DRBD设备上创buildPV,VG和LVM签名:

 #pvcreate / dev / drbd0
物理卷“/ dev / drbd0”已成功创build
 #vgcreate vg_drbd_front / dev / drbd0
卷组“vg_drbd_front”已成功创build
 #lvcreate  - 名称drbd_lvm0 --size 30G vg_drbd_front
创build逻辑卷“drbd_lvm0”
 #lvcreate  - 名称drbd_lvm1 --size 40G vg_drbd_front
创build逻辑卷“drbd_lvm1”

要手动故障切换LVM,您需要先停用主服务器上的卷组,然后才能将其降级为辅助:

 #vgchange -an vg_drbd_front
卷组“vg_drbd_front”中的0个逻辑卷现在处于活动状态
 #drbdadm secondary r0

然后在同行上,宣传DRBD并激活卷组:

 #drbdadm小学r0
 #vgchange -ay vg_drbd_front
卷组“vg_drbd_front”中的2个逻辑卷现在处于活动状态

当然,如果您想使用Pacemaker自动执行此操作,则需要使用LVM资源代理来处理指定VG的激活/停用:

 #pcs资源描述ocf:心跳:LVM

另外,在LINBIT网站上有很多好的(免费的)技术指南和其他资源可能对您的集群有帮助: http : //www.linbit.com

编辑:添加了以下有关禁用“lvmmetad”的部分。

CentOS 7默认使用'lvmetad'。 您需要禁用两个节点上的filter才能按上面的configuration工作。

/etc/lvm/lvm.conf设置use_lvmetad = 0 ,然后通过systemd停止lvm2-lvmmetad的服务和套接字:

  #systemctl stop lvm2-lvmetad.service
 #systemctl stop lvm2-lvmetad.socket 

你说备份,但drbd立即复制,不算作一个传统的离线备份。 它更像是RAID 1.还需要复制您在其他地方关心的数据,不容易被意外删除命令等。

drbd不会复制块设备上的所有内容,包括LVM和文件系统元数据。 您需要集群LVM来处理多个节点上的设备。 如果你这样做,是的LV可以出现在任一节点。 红帽支持这个作为Pacemaker HA集群资源。 他们的逻辑卷pipe理员pipe理指南可以让你开始。

另一种方法是build立像glusterfs这样的分布式存储系统。 这不使用clvm,但允许分布式复制卷。 这在节点本地文件系统上build立了一种特定types的共享文件系统。 相反,drbd上的clvm会在复制块磁盘设备上build立群集文件系统。