glusterfs节点未真正加入集群导致volume create失败,需先用gluster peer probe添加节点并确认peer status为connected,否则即使网络连通也会报错。

gluster volume create 命令报错 “Volume creation failed: Host not in 'Peer in Cluster' state”
说明:这个错误不是磁盘或网络不通,而是节点没真正加入集群。GlusterFS 要求所有参与卷创建的节点必须先彼此“认领”为可信存储池成员,否则 gluster volume create 直接拒绝执行。
实操建议:
- 先在任一节点运行
gluster peer probe <other-node-ip></other-node-ip>,逐个把其他节点加进来 - 每执行一次后,立刻用
gluster peer status确认状态是Connected,不是Peer Rejected或空输出 - 如果
peer probe卡住或失败,检查/var/log/glusterfs/etc-glusterfs-glusterd.vol.log,常见原因是防火墙拦了 24007 端口(glusterd 通信端口) - 别跳过这步直接建卷——哪怕所有节点 IP 都能 ping 通,glusterd 进程之间没握手成功,照样报这个错
挂载 GlusterFS 卷时卡在 mount -t glusterfs,但 dmesg 显示 “RPC: Authentication error”
说明:这不是权限问题,而是客户端内核模块(glusterfs-fuse 或内核态 glusterfs 模块)与服务端协议协商失败。CentOS 8+ / RHEL 8+ 默认禁用旧版 RPC 认证方式,而老版本 GlusterFS(如 3.12)默认走 AUTH_UNIX,不兼容。
实操建议:
- 优先用 FUSE 挂载:确保已安装
glusterfs-fuse包,然后用mount -t glusterfs <node>:/<volname> /mnt</volname></node> - 若坚持用内核态挂载(
mount -t glusterfs),需在服务端 glusterd 配置中启用新认证:编辑/etc/glusterfs/glusterd.vol,添加option rpc-auth-allow-insecure on,再重启glusterd - 检查客户端内核模块版本是否匹配服务端:运行
modinfo glusterfs | grep version,若显示 3.x 但服务端是 10.x,大概率挂载失败
brick 目录权限被 glusterd 自动改成了 755,导致 NFS-Ganesha 导出失败
说明:glusterd 启动时会强制递归修复 brick 目录权限和属主(设为 root:root,权限 755),这是它的安全策略。但 NFS-Ganesha 要求 brick 目录可被 rpcuser(通常是 nfsnobody)读写,755 + root 属主直接堵死访问路径。
Difeye是一款超轻量级PHP框架,主要特点有: Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置第三方缓存组件; ◆完全分离页面和动作,仿C#页面加载自动执行Page_Load入口函数; ◆支持mysql,mongodb等第三方数据库模块,支持读写分离,分布式部署; ◆增加后台管理开发示例
实操建议:
- 不要手动 chown/chmod brick 目录——下次 glusterd 重启或 volume start 就会被覆盖
- 在 brick 所在文件系统挂载选项里加
noatime,context="system_u:object_r:glusterd_brick_t:s0"(SELinux 场景),或关掉 SELinux(setenforce 0) - 更稳妥的做法:把 brick 放在 XFS 文件系统上,并提前用
xfs_io -c "chattr +t" /bricks/brick1开启“inherit”属性,让子目录自动继承父目录权限策略 - 验证方法:执行
gluster volume start <vol></vol>后立刻ls -ld /bricks/brick1,确认权限未被重置
使用 gluster volume set performance.cache-size 无效,top 里 glusterfsd 进程内存占用始终很低
说明:cache-size 只控制读缓存大小,且仅对顺序读有效;GlusterFS 的写缓存由 performance.write-behind 和 performance.flush-behind 控制,和 cache-size 完全无关。很多人调了 cache-size 却发现吞吐没变化,是因为压根没触发读缓存逻辑。
实操建议:
- 查是否真在读缓存:用
gluster volume top <vol> read-perf</vol>看命中率,长期低于 20% 就说明 cache-size 设再大也没用 - 真正影响随机小文件读性能的是
performance.read-ahead(默认开)和performance.readdir-ahead(对 ls 类操作关键) - 写场景要调的是:
performance.write-behind-window-size(单位 KB,默认 1024)和performance.flush-behind(设为on) - 注意:所有 performance.* 参数只在 client 端生效,服务端 brick 上设置无效
GlusterFS 的坑多数藏在“默认行为”里——比如 peer probe 不显式失败但实际没连上,或者 volume set 参数看着生效了,其实 client 没加载对应 translator。动手前先看 gluster volume info 和 gluster volume status detail 输出里的 translator 列表,比反复试错快得多。









