GlusterFS支持在线无缝扩容,但需先执行gluster peer probe加入信任池,再按副本数整倍添加brick,最后通过rebalance start迁移数据并均衡负载。

能在线无缝扩容,但“无缝”不等于“无感知”——数据再平衡阶段会占用网络和磁盘IO,客户端可能短暂遇到延迟或小概率EAGAIN错误。
新节点必须先加入信任池(gluster peer probe)
GlusterFS 不允许直接向未认证的服务器添加 brick。即使新机器已装好 glusterfs-server、防火墙放行了 24007 和 49152–49251 端口,也必须显式执行探测:
-
gluster peer probe gfs05.example.com—— 成功后状态应为Peer in Cluster,可通过gluster peer status验证 - 若返回
Probe returned with unknown errno 107,通常是 DNS 解析失败或目标主机未启动glusterd服务 - 多个节点要逐个
probe,不能一次写多个主机名;批量操作需用脚本循环
添加 brick 必须匹配卷类型约束(尤其注意 replica/stripe 倍数)
分布式复制卷(Distributed-Replicate)扩容不是“加一个 brick 就行”,而是必须按副本数整倍添加,否则命令直接报错:
- 副本数为 2 的卷,
add-brick必须一次加 2、4、6… 个 brick,例如:gluster volume add-brick myvol gfs05:/data/brick1 gfs06:/data/brick1 - 副本数为 3 的卷,就得加 3 或 6 个 brick,少一个都不行
- 如果误加单 brick,会提示
Number of bricks is not a multiple of replica count - 加 brick 前建议先
gluster volume info myvol确认当前Type和Number of Bricks
扩容后必须触发 rebalance 才算真正生效
执行 add-brick 只是更新卷配置,新 brick 初始为空,旧数据不会自动迁移过去。不 rebalance,新节点只是“挂名”,容量和负载都分不到它头上:
- 仅调整文件分布(不搬数据):
gluster volume rebalance myvol fix-layout start - 同时调整布局 + 迁移已有数据:
gluster volume rebalance myvol start(这才是真正的扩容完成动作) - 运行中可用
gluster volume rebalance myvol status查进度;df -h在各 brick 目录下看实际使用率是否趋近均衡 - 避免在业务高峰跑
start,默认 rebalance 使用全带宽;如需限速,得提前设cluster.rebalance-throttle(单位 MB/s)
最容易被忽略的是:rebalance start 后,如果中途被 kill 或节点宕机,状态会卡在 in progress,后续任何 add-brick 或 remove-brick 都会被拒绝,必须先 gluster volume rebalance myvol stop 清理状态再重试。

















