我们正在寻找一种快速的方式来获取我们的gluster砖点时间快照。
这是一个完美的时间点快照并不重要(即如果在备份期间文件更改/添加/删除,备份有/没有这些更改是可以的)。
理想情况下,它可以作为实时(非停机时间)备份来运行,但是如果需要的话,我们可以处理从集群中删除节点并在之后再次将其添加回去。
备份将需要传输到远程位置,但可以在本地进行初始备份(如果需要)后完成。
我们有多块砖 所有这些都需要备份,并且可以单独完成或一次完成。
目前我们正在编写glusterfs 3.5.3 ,但是在新版本发布时会升级。
我们已经考虑过使用rsync(就像我们在正常的音量上做的那样),但是真的很慢,因为我们有成千上万的非常小的文件(100kb – 3mb),我的理解是gluster会和每个节点文件以确保它提供正确的版本。 我们可以rsync通过其中一个服务器节点上的数据目录位置(不在glusterfs客户端上)? 这会按预期工作,而且速度更快,因为它不需要检查所有节点的东西?
Gluster Volume Snapshot听起来像是完美的解决scheme,但我不认为它已经发布了。
gluster存储节点有LVM,但是我不太熟悉它的细节。 这可能是一个解决scheme吗?
其他人对于如何处理这种情况有很好的build议吗? 还是真实的生活经历? 谢谢。
你需要把你的gluster砖放在精简configuration的LVM-Images上。
我所知道的最简单的解决scheme是:
具有超过2M文件和18G的图像的总备份在专用服务器上大约需要90秒。
伪代码:
# create snapshot echo $(date)" Creating glusterfs snapshot" >> $LOG gluster snapshot create $SNAP_NAME $GS_VOLUME no-timestamp 2>>$LOG echo $(date)" [OK]" >> $LOG # get snapshot volume name SNAP_VOL_NAME=$(gluster snapshot info $SNAP_NAME | grep "Snap\ Volume\ Name" | sed -e 's/.*S.*:.//g') MOUNT_OBJECT="/dev/"$VG"/"$SNAP_VOL_NAME"_0" MOUNT_POINT="/run/gluster/snaps/$SNAP_VOL_NAME/"$BRICK BACKUP_FS=$DIR_BA"/"$SNAP_NAME".ddimg.lz4" # umount the image umount $MOUNT_POINT # create backup echo $(date)" Creating lz4 of LVM image" >> $LOG sudo dd if=$MOUNT_OBJECT 2>>$LOG | lz4 > $BACKUP_FS 2>>$LOG echo $(date)" [OK]" >> $LOG # mount image back #mount $MOUNT_OBJECT $MOUNT_POINT # delete (all) snapshots and umount yes | gluster snapshot delete volume $GS_VOLUME 2>> $LOG