Gluster 究竟是做什么的?

cba*_*scu 12 high-availability glusterfs

过去 2 天我一直在玩 gluster,并在这里和他们的问题系统上提问。有些东西我真的不明白。我看到人们说这样的话

在服务器之间设置复制砖(因为你只使用 3 个,复制会更安全),每台服务器都会将所有其他服务器的文件视为“本地”——即使一台服务器出现故障,文件也已复制到其他服务器。

或者

Gluster 将保持跨卷(砖块)的文件同步,并具有“自我修复”功能,可以处理由于一台服务器离线而导致的任何不一致。

由于我远程卷从服务器挂载到客户端,gluster 如何处理服务器节点的故障,卷是从哪个节点挂载的?从我尝试过的客户端上安装卷的文件夹变得无法访问,我必须使用 umount 来解除对它的阻止。之后没有来自服务器的内容。

这基本上是我在任何解释中都没有看到的内容:当服务器节点出现故障时会发生什么,以及是否可以像 unison 或 rsync 那样真正复制内容?

pol*_*ial 8

我们最近开始研究 GlusterFS 供我们自己使用,所以这个问题对我来说很有趣。Gluster 使用 FUSE 客户端上所谓的“翻译器”来处理您存储数据的方式。这里概述了几种类型的翻译器:

http://www.gluster.com/community/documentation/index.php/GlusterFS_Translators_v1.3

您要特别询问的那个称为自动文件复制转换器或 AFR,这里有详细介绍:

http://www.gluster.com/community/documentation/index.php/Understanding_AFR_Translator

查看源代码似乎数据实际上是同时写入节点的,比 rsync 好多了!

关于从故障情况中恢复,我发现了一个有趣的注释。Gluster 系统与 Ceph 的不同之处在于它不会主动感知复制状态的变化,并且必须被“触发”。因此,如果您在集群中丢失了一个节点,则必须查找每个文件,以便 Gluster 确保其已复制:

http://www.gluster.com/community/documentation/index.php/Gluster_3.2:_Triggering_Self-Heal_on_Replicate

我找不到一个很好的页面来描述内部的故障场景机制,比如客户端如何检测到事情被破坏了。然而,下载源代码并查看客户端似乎有各种超时用于命令和探测,它每隔一段时间就会对集群中的其他系统进行探测。看起来其中大多数都有 TODO 标记,并且目前无法配置,除非通过源代码修改,如果收敛时间很关键,这可能是您关心的问题。

  • 那很可能是配置问题(不是设计使然)。 (2认同)