AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 823523
Accepted
Pablo
Pablo
Asked: 2017-01-01 05:41:40 +0800 CST2017-01-01 05:41:40 +0800 CST 2017-01-01 05:41:40 +0800 CST

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

  • 772

我只是在检查我的 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

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

我正在运行 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
glusterfs
  • 4 4 个回答
  • 2758 Views

4 个回答

  • Voted
  1. Best Answer
    user356895
    2017-01-13T02:18:51+08:002017-01-13T02:18:51+08:00

    什么是脑裂?

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

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

    脑裂类型:

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

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

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

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


    什么是 GFID?

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


    如何解决入口脑裂?

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

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

    # gluster volume heal VOLNAME info split-brain
    

    您还应该注意,对于复制的卷,当块离线并重新在线时,需要自我修复来重新同步所有副本。

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

    # gluster volume heal VOLNAME info
    

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

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

      # gluster volume heal VOLNAME

    • 在所有文件上:

      # gluster volume heal VOLNAME full

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

    • 8
  2. pingz
    2017-01-13T01:24:02+08:002017-01-13T01:24:02+08:00

    我认为文档很清楚,它甚至给了你一个类似的例子。

    对于 Gluesterfs 的治疗命令,例如

    gluster 卷愈合 **VOLNAME** 裂脑 latest-mtime **FILE**

    FILE 可以是从卷的根目录看到的完整文件名(或)文件的 gfid 字符串表示

    所以你不需要担心这个。

    正如将 GFID 转换为路径所说:

    GlusterFS 内部文件标识符 (GFID) 是一个 uuid,对于整个集群中的每个文件都是唯一的。

    这个脚本可能会告诉你哪个文件名属于哪个 gfid,但是发生了脑裂,它可能没有文件名。

    您正在运行 3.5 并且没有半自动修复 cmd,因此您可能需要自己手动修复冲突,这通常意味着决定需要删除哪个 gfid 文件。

    • 2
  3. bgtvfr
    2017-01-13T01:43:36+08:002017-01-13T01:43:36+08:00

    当集群的两个节点断开连接时,就会发生裂脑。每个节点都认为另一个节点不工作。

    脑裂

    要修复它,您必须了解为什么您的两个节点不再相互通信。

    • 2
  4. Mr. Raspberry
    2017-01-17T08:44:42+08:002017-01-17T08:44:42+08:00

    我如何解决它?

    可以在这里找到裂脑解决方案。如果没有太大帮助,这里的手动操作方法应该可以完成这项工作。对于这种情况,我看到这篇文章也很有帮助。

    如何避免脑裂。

    针对网络分区的保护是通过仲裁投票算法完成的。如果主机发生故障,或者存在节点继续运行但无法再相互通信的脑裂情况,则集群中的其余节点或多个节点竞相在见证驱动器上放置 SCSI 预留。在脑裂的情况下,见证人将帮助决定哪些持有数据副本的主机应该接管控制权。

    一些例子。

    VMware VSAN 允许运行 2 节点集群,见证驱动器在第三台主机或云中运行。资源

    StarWind Virtual SAN 使用 Microsoft 故障转移群集服务仅在 2 节点设置中运行,该服务还包含仲裁投票机制以避免脑裂问题。资源

    对于两者,Heartbeat 网络用于服务/监控节点和仲裁之间的通信。为了避免脑裂,我认为必须使用冗余的心跳通道。

    • 2

相关问题

  • 如何显示 GlusterFS 服务器的选项值

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve