在Linux环境下搭建高可用的分布式文件系统,能够为企业级应用提供可靠的存储支撑,避免单存储节点故障导致业务中断,同时支持存储容量的弹性扩展。目前主流的分布式文件系统方案有GlusterFS、Ceph等,其中GlusterFS部署简单、运维成本低,适合大多数中小规模集群场景。

环境准备
本次配置使用3台Linux服务器作为存储节点,1台客户端服务器用于验证挂载,所有服务器均使用CentOS 7系统,配置信息如下:
| 节点角色 | 主机名 | IP地址 | 数据盘 |
|---|---|---|---|
| 存储节点1 | gluster-node1 | 192.168.0.10 | /dev/sdb 100G |
| 存储节点2 | gluster-node2 | 192.168.0.11 | /dev/sdb 100G |
| 存储节点3 | gluster-node3 | 192.168.0.12 | /dev/sdb 100G |
| 客户端 | gluster-client | 192.168.0.20 | 无 |
首先需要在所有节点上完成以下基础配置:
- 关闭防火墙和SELinux,避免端口拦截导致节点通信失败
- 配置所有节点的hosts文件,添加彼此的IP和主机名映射
- 为数据盘创建分区并格式化为xfs文件系统,挂载到/data/brick1目录
安装GlusterFS服务
在所有存储节点上执行以下命令安装GlusterFS服务端:
# 安装GlusterFS仓库 yum install -y centos-release-gluster # 安装GlusterFS服务端 yum install -y glusterfs-server # 启动服务并设置开机自启 systemctl start glusterd systemctl enable glusterd # 检查服务状态 systemctl status glusterd
组建GlusterFS集群
在任意一个存储节点上执行以下命令,将其他两个节点加入集群:
# 将node2加入集群 gluster peer probe gluster-node2 # 将node3加入集群 gluster peer probe gluster-node3 # 查看集群状态 gluster peer status
执行后如果显示所有节点状态为Connected,说明集群组建成功。
创建高可用分布式卷
为了实现高可用,我们创建复制卷,每个文件会在3个节点上各保存一份副本,任意节点故障都不会丢失数据:
# 创建复制卷,卷名为gv0,使用三个节点的brick目录 gluster volume create gv0 replica 3 gluster-node1:/data/brick1/gv0 gluster-node2:/data/brick1/gv0 gluster-node3:/data/brick1/gv0 force # 启动卷 gluster volume start gv0 # 查看卷信息 gluster volume info gv0
卷信息中需要确认Status为Started,Replica Count为3,说明卷创建成功。
客户端挂载使用
在客户端服务器上安装GlusterFS客户端工具并挂载卷:
# 安装客户端工具 yum install -y glusterfs-client # 创建挂载目录 mkdir -p /mnt/glusterfs # 挂载分布式卷,指定任意一个存储节点作为入口 mount -t glusterfs gluster-node1:/gv0 /mnt/glusterfs # 设置开机自动挂载,编辑/etc/fstab添加以下内容 gluster-node1:/gv0 /mnt/glusterfs glusterfs defaults 0 0
挂载完成后,在/mnt/glusterfs目录下创建文件,文件会自动同步到三个存储节点的brick目录中。
高可用验证与故障排查
可以手动关闭其中一个存储节点,验证客户端读写是否正常:
# 在客户端写入测试文件 echo "test high availability" > /mnt/glusterfs/test.txt # 关闭node1节点 systemctl stop glusterd # 再次读取文件,确认内容正常 cat /mnt/glusterfs/test.txt
常见故障排查方法:
- 如果卷无法启动,检查所有节点的brick目录权限是否正确,确保gluster用户有读写权限
- 如果客户端挂载失败,检查存储节点防火墙是否关闭,glusterd服务是否正常运行
- 如果文件同步异常,查看
/var/log/glusterfs/目录下的日志文件定位问题