GlusterFS 10 企业级存储集群部署实践:基于 Fedora Server 构建高性能共享存储

在企业渲染、AI 数据集、媒体资产、虚拟化等场景中,经常会遇到一个问题:

如何让多台服务器共享同一份数据,并且具备横向扩容能力?

传统 NAS 在容量、性能以及扩展性方面都有一定限制,而 GlusterFS 则提供了一种更加灵活的分布式存储方案。

最近重新梳理了一下过往的工作记录,整理出了一套 GlusterFS 集群部署方案,顺便把整个部署过程记录下来,希望能够帮助准备搭建 GlusterFS 的朋友。


为什么选择 GlusterFS?

GlusterFS 最大的特点就是:

  • 横向扩容简单

  • 不依赖中心节点

  • 支持 PB 级存储

  • 支持 XFS、EXT4 等文件系统

  • 可以直接导出 NFS、SMB

  • 对 RAID 阵列支持良好

相比传统 NAS:

NAS
 ├── 单设备
 ├── 容量固定
 ├── 性能固定
 └── 升级成本高

GlusterFS
 ├── 多节点组成
 ├── 可以持续增加节点
 ├── 性能随节点增长
 └── 更适合企业存储

软件版本

本次测试环境如下:

软件

版本

OS

Fedora Server 36

GlusterFS

10.x

文件系统

XFS

NFS

NFS-Ganesha

之所以选择 Fedora,是因为当时 Fedora 已经原生提供 GlusterFS 10。

相比旧版本:

  • Metadata 性能更好

  • 小文件性能有所提升

  • DHT 调度优化

  • Bug 修复较多

如果使用 Rocky Linux,可根据官方仓库支持情况选择对应版本。


硬件规划建议

RAID 仍然十分重要

很多人认为:

都用了分布式存储,就不需要 RAID。

实际上并不是。

GlusterFS 解决的是:

  • 节点故障

  • 数据副本

  • 横向扩展

而 RAID 解决的是:

  • 单盘损坏

  • 本地 IO

  • 顺序读写性能

二者并不冲突。

企业环境依旧建议:

  • RAID 控制器

  • BBU 缓存

  • 企业级 SAS/SATA HDD

  • SSD Cache(如果使用软 RAID)


本次磁盘规划

每台服务器:

12 Bay 2U Server

RAID5
 ├── Disk1~5

RAID5
 ├── Disk6~10

Hot Spare
 ├── Disk11

Hot Spare
 └── Disk12

这样设计主要有几个优势:

  • 两组 RAID 并行

  • IO 分散

  • 热备自动接管

  • 更好的恢复效率

实践过程中发现:

如果将 12 块盘全部组成一个 RAID6,在持续大文件写入时,偶尔会出现写入速度由数百 MB/s 降低到几十 MB/s 的情况,原因涉及 RAID 控制器策略、缓存及磁盘负载等因素,需要结合具体硬件进一步分析。因此实际生产中更倾向于采用多组 RAID 的方式。


安装 GlusterFS

安装软件:

yum install glusterfs-server -y

systemctl enable --now glusterd

确认服务状态:

systemctl status glusterd

配置主机名

例如:

hostnamectl set-hostname node1

其它节点:

node2
node3
node4

保持命名统一即可。


配置 hosts

所有节点保持一致:

10.0.0.11 node1
10.0.0.12 node2
10.0.0.13 node3
10.0.0.14 node4

生产环境建议:

  • DNS

  • Hosts

两者都配置。


网络规划

建议将管理网络与业务网络分离。

例如:

管理网络
10.0.0.x

存储网络
192.168.10.x

如果服务器拥有多块万兆网卡,可以:

bond0
 ├── eth0
 └── eth1

Storage
 ├── eth2

Management
 └── eth3

推荐:

  • LACP(802.3ad)

  • MTU 9000(视交换机而定)

  • 独立交换机

这样能够获得更稳定的带宽。


SELinux 与防火墙

测试环境可关闭:

setenforce 0

systemctl disable --now firewalld

生产环境建议根据实际情况开放所需端口,而不是直接关闭。


创建 Trusted Pool

任选一台节点执行:

gluster peer probe node2

gluster peer probe node3

gluster peer probe node4

查看状态:

gluster peer status

正常应看到所有节点均为:

Peer in Cluster (Connected)

说明集群建立成功。


准备 Brick

将 RAID 格式化为 XFS:

mkfs.xfs /dev/sdb

mkfs.xfs /dev/sdc

创建挂载目录:

mkdir -p /glusterdata/brick1

mkdir -p /glusterdata/brick2

加入:

/etc/fstab

实现自动挂载。


创建 Volume

创建目录:

mkdir /glusterdata/brick1/gv0

mkdir /glusterdata/brick2/gv0

创建 Volume:

gluster volume create gv0 \
node1:/glusterdata/brick1/gv0 \
node2:/glusterdata/brick1/gv0 \
node3:/glusterdata/brick1/gv0 \
node4:/glusterdata/brick1/gv0 \
node1:/glusterdata/brick2/gv0 \
node2:/glusterdata/brick2/gv0 \
node3:/glusterdata/brick2/gv0 \
node4:/glusterdata/brick2/gv0

启动:

gluster volume start gv0

查看:

gluster volume info

配置 NFS-Ganesha

安装:

yum install nfs-ganesha -y

配置:

EXPORT
{
    Export_Id = 101;

    Path = "/gv0";

    FSAL
    {
        name = GLUSTER;
        hostname = "192.168.10.11";
        volume = "gv0";
    }

    Squash = "No_root_squash";

    Pseudo = "/gv0";

    SecType = "sys";
}

其中:

  • Export_Id 每台服务器保持唯一

  • hostname 修改为当前节点 IP

  • volume 为 Gluster Volume 名称

启动:

systemctl restart ganesha

验证:

showmount -e localhost

输出类似:

Export list

/gv0

说明共享已经正常导出。


故障恢复实践

真正的企业环境,部署只是第一步。

更重要的是:

出现故障以后如何恢复。

下面分享两种比较典型的情况。


场景一:磁盘损坏

如果底层已经配置 RAID:

整个过程通常非常简单:

坏盘
↓

更换新盘

↓

RAID 自动 Rebuild

↓

GlusterFS 无需任何处理

因此这也是为什么企业环境一直建议保留 RAID。


如果没有 RAID,则需要重新建立 Brick,并恢复 GlusterFS 的扩展属性(xattr),随后执行 Heal。

可以使用:

getfattr

查看 Brick 属性。

然后使用:

setfattr

恢复对应属性。

最后执行:

gluster volume heal <卷名> info

当:

Number of entries: 0

说明同步已经完成。


场景二:服务器损坏

如果整台服务器损坏:

处理思路如下:

  1. 新服务器安装相同系统

  2. 保持磁盘布局一致

  3. 配置相同主机名及网络

  4. 安装 GlusterFS

  5. 恢复节点配置

  6. 加入集群

  7. 执行 Heal

同步命令:

gluster volume heal <卷名> full

查看:

gluster volume heal <卷名> info

即可观察同步状态。

需要注意的是,全量 Heal 会消耗大量磁盘和网络资源,建议选择业务低峰期执行。


运维经验总结

经过长时间使用,个人总结了几条经验:

1、优先选择硬 RAID

性能更加稳定。


2、Brick 使用 XFS

XFS 对大容量磁盘支持更成熟。


3、管理网络与存储网络隔离

避免客户端流量影响后台同步。


4、保持所有节点配置一致

包括:

  • 主机名规范

  • 挂载路径

  • 文件系统

  • Brick 数量

  • 网络规划

一致性越高,后续维护越简单。


5、定期检查 Heal 状态

建议日常巡检:

gluster volume status

gluster volume heal gv0 info

gluster peer status

及时发现:

  • 节点离线

  • Brick 异常

  • Heal 未完成

  • 网络问题


结语

GlusterFS 并不是一套"安装完成就结束"的存储系统,它更像是一套需要长期运维的分布式基础设施。

在生产环境中,真正影响稳定性的往往不是软件本身,而是底层硬件规划、网络架构、磁盘布局以及日常巡检策略。合理的 RAID 设计、规范的网络隔离、统一的节点配置,以及完善的故障恢复流程,往往比单纯追求版本更新更加重要。

希望这些内容能够帮助正在建设企业共享存储平台的朋友少走一些弯路。

私有RAG知识库踩坑实录|对话记录点击无法还原问答内容问题排查与完整修复 2026-07-31