glusterfs 客户端挂载点失败,并显示“未达到客户端仲裁”

glusterfs 客户端挂载点失败,并显示“未达到客户端仲裁”

假设一个基本副本 3 仲裁者 1配置,glusterfs 服务器 4.0.2glusterfs-客户端 4.0.2glusterfs 客户端安装在Ubuntu 18.04

为了验证当一个存储节点发生故障时是否允许写入/读取操作,如文档,会出现意外结果。在其中一个非仲裁节点上终止 gluster 进程(使用pkill ^gluster*)后,客户端挂载点失败,并显示“ Client quorum is not met.”(查看 glusterfs-client 日志文件)。

Gluster 卷信息:

Volume Name: brick01
Type: Replicate
Volume ID: 2310c6f4-f83d-4691-97a7-cbebc01b3cf7
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (2 + 1) = 3
Transport-type: tcp
Bricks:
Brick1: proxmoxVE-1:/mnt/gluster/bricks/brick01
Brick2: proxmoxVE-2:/mnt/gluster/bricks/brick01
Brick3: arbiter01:/mnt/gluster/bricks/brick01 (arbiter)

该卷通过以下命令创建

gluster volume create brick01 replica 3 arbiter 1 
proxmoxVE-1:/mnt/gluster/bricks/brick01 
proxmoxVE-2:/mnt/gluster/bricks/brick01 
arbiter01:/mnt/gluster/bricks/brick01

如上所述文档,当一个 brick 宕机时,文件操作应该被允许(如果仲裁器同意),那么为什么我在客户端收到“客户端仲裁未达到”?在花了大量时间阅读官方文档后glusterfs,我找不到为什么会发生这种情况的解释,还提交了一个错误报告红帽 Bugzilla

任何有关该主题的帮助都将非常感谢!

答案1

gluster volume heal brick01 enablе解决了这个问题。

这最终将重新配置选项添加cluster.self-heal-daemon: enable到卷中。似乎默认情况下,仲裁程序块在发生任何文件操作时无法同时修复(同步),并将责任归咎于仍在运行的其他程序块。

相关内容