我只是在检查我的 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 时,就会发生这种情况。
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
我希望这能帮助您解决问题。请阅读官方文档以获取更多信息。干杯。
归档时间: |
|
查看次数: |
2537 次 |
最近记录: |