GlusterFS裂脑无路径,是什么意思?

Pab*_*blo 10 glusterfs

我只是在检查我的 glusterfs 卷的状态,我有一个没有路径的裂脑条目:

# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2

Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我如何解决它?

我正在运行 GlusterFS 3.5.9:

# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git
Run Code Online (Sandbox Code Playgroud)

小智 8

什么是裂脑?

正如RedHat 提供的关于管理裂脑官方文档中提到的那样,裂脑是一种状态,当数据或可用性不一致时,源于维护范围重叠的两个独立数据集,或者是因为网络设计中的服务器,或基于服务器未相互通信和同步数据的故障情况。它是一个适用于复制配置的术语。

请注意,据说“基于服务器未相互通信和同步数据的故障条件” - 由于任何可能性 - 但这并不意味着您的节点可能会丢失连接。Peer 可能还处于集群中并已连接。

裂脑类型:

我们有三种不同类型的裂脑,据我所知,你的是入门裂脑。解释三种类型的裂脑:

  • 数据裂脑:裂脑下的文件内容在不同的副本对中是不同的,无法自动修复。

  • 元数据裂脑 : , 文件的元数据(例如,用户定义的扩展属性)不同,无法自动修复。

  • 条目裂脑:当文件在每个副本对上具有不同的 gfid 时,就会发生这种情况。


什么是GFID?

GlusterFS 内部文件标识符 (GFID)是一个 uuid,对于整个集群中的每个文件都是唯一的。这类似于普通文件系统中的 inode 编号。文件的 GFID 存储在其名为trusted.gfid. 要从 GFID 中找到路径,我强烈建议您阅读GlusterFS 提供的这篇官方文章


如何解决入门裂脑?

有多种方法可以防止发生裂脑,但要解决它,必须删除相应的 gfid-link 文件。gfid-link 文件位于砖的顶级目录中的 .glusterfs 目录中。顺便提一下,在删除 gfid-links 之前,您必须确保没有硬链接到该砖上的文件。如果存在硬链接,您也必须删除它们。然后您可以通过运行以下命令来使用自愈过程。

同时,要查看卷上处于裂脑状态的文件列表,您可以使用:

# gluster volume heal VOLNAME info split-brain
Run Code Online (Sandbox Code Playgroud)

您还应该注意,对于复制卷,当砖块脱机并重新联机时,需要自我修复以重新同步所有副本。

要检查卷和文件的修复状态,您可以使用:

# gluster volume heal VOLNAME info
Run Code Online (Sandbox Code Playgroud)

由于您使用的是 3.5 版,因此您没有自动修复功能。所以在做完前面提到的步骤之后,你需要触发自愈。这样做:

  • 仅在需要修复的文件上:

    # gluster volume heal VOLNAME

  • 在所有文件上:

    # gluster volume heal VOLNAME full

我希望这能帮助您解决问题。请阅读官方文档以获取更多信息。干杯。