一、组件介绍
-
GlusterFS
- 作用:
- 分布式文件系统,支持横向扩展,可将多个存储节点整合为单一命名空间。
- 提供高可用性和冗余(如复制卷、纠删码卷)。
- 支持多种存储场景(对象存储、块存储、文件存储)。
- 优势:
- 无单点故障,数据自动修复。
- 支持动态扩容,适合大规模存储需求。
- 作用:
-
NFS-Ganesha
- 作用:
- 用户态 NFS 服务器,支持 NFSv3/v4/v4.1 协议。
- 将 GlusterFS 卷通过 NFS 协议导出,兼容传统 NFS 客户端。
- 优势:
- 高性能,支持多协议并行访问(如同时使用 NFS 和 SMB)。
- 灵活的访问控制(基于 IP、主机名、认证机制)。
- 作用:
二、环境准备
-
节点规划:
node1(IP: 192.168.1.10): GlusterFS 存储节点 + NFS-Ganesha 服务端node2(IP: 192.168.1.11): GlusterFS 存储节点client(IP: 192.168.1.100): 客户端测试节点
-
系统要求:
- CentOS 7 系统,关闭防火墙或开放以下端口:
- GlusterFS:
24007-24008/tcp,49152-49251/tcp - NFS:
2049/tcp,111/udp,20048/udp
- GlusterFS:
- CentOS 7 系统,关闭防火墙或开放以下端口:
三、GlusterFS 部署
-
安装 GlusterFS 服务端(在
node1和node2执行):yum install -y centos-release-gluster yum install -y glusterfs-server systemctl start glusterd systemctl enable glusterd -
配置存储池(Trusted Pool):
# 在 node1 上添加 node2 到集群 gluster peer probe node2 # 查看节点状态 gluster peer status -
创建存储目录并初始化卷:
# 在两节点创建存储目录 mkdir -p /data/brick/gv0 # 创建复制卷(示例为 2 副本) gluster volume create gv0 replica 2 node1:/data/brick/gv0 node2:/data/brick/gv0 gluster volume start gv0 # 查看卷状态 gluster volume info
四、NFS-Ganesha 部署
-
安装 NFS-Ganesha(在
node1执行):yum install -y nfs-ganesha-gluster # 禁用 GlusterFS 原生 NFS(避免端口冲突) gluster volume set gv0 nfs.disable on -
配置 NFS-Ganesha:
vi /etc/ganesha/ganesha.confEXPORT { Export_ID = 1; Path = "/gv0"; # GlusterFS 卷挂载点 Pseudo = "/gv0"; # 客户端看到的虚拟路径 Access_Type = RW; Protocols = "3,4"; Transports = "TCP"; SecType = "sys"; # 允许访问的客户端 IP 段 clients = 192.168.1.0/24; # GlusterFS 卷配置 FSAL { name = GLUSTER; hostname = "localhost"; # 本地 Gluster 服务 volume = "gv0"; # Gluster 卷名 } } -
启动服务:
systemctl start nfs-ganesha systemctl enable nfs-ganesha
五、客户端挂载测试
-
安装 NFS 客户端工具:
yum install -y nfs-utils -
挂载 GlusterFS 卷:
mount -t nfs4 node1:/gv0 /mnt # 验证写入 echo "Test" > /mnt/test.txt
六、验证与调试
- 查看 NFS 导出列表:
showmount -e node1 - 检查 GlusterFS 卷状态:
gluster volume status gv0 - 日志分析:
tail -f /var/log/ganesha/ganesha.log
七、应用场景
- 虚拟化存储: 为 KVM/OpenStack 提供共享存储。
- 媒体共享: 多节点同时读写视频、图片资源。
- 备份归档: 分布式存储保障数据冗余,NFS 简化访问流程。
八、常见问题
-
挂载失败
- 检查防火墙/SELinux:
setenforce 0(临时关闭 SELinux)。 - 确保 Gluster 卷已启动:
gluster volume start gv0。
- 检查防火墙/SELinux:
-
NFS 客户端无权限
- 确认
/etc/ganesha/ganesha.conf中clients配置的 IP 范围。
- 确认
-
性能优化
- 调整 Gluster 卷类型(如分布式复制卷)。
- 修改 NFS-Ganesha 线程数(
NFS_Threads参数)。
通过以上步骤,您已完成了一个基于 GlusterFS 和 NFS-Ganesha 的高可用存储解决方案!
浙公网安备 33010602011771号