一、GlusterFS 概述
1.1 基本定义
GlusterFS 是一款开源、无元数据服务器的 Scale-Out 横向扩展分布式文件系统,可通过 TCP/IP 或 InfiniBand RDMA 网络聚合多节点存储资源,提供统一命名空间,支持 PB 级海量存储。
1.2 核心特点
- 无元数据服务器:无单点故障、无性能瓶颈
- 弹性哈希算法:自动定位数据,均匀分布
- 高扩展性:在线增删节点,不中断业务
- 高可用性:支持副本、自动后台增量修复
- 全局统一命名空间:对应用屏蔽物理存储
- 标准协议兼容:NFS/CIFS/SMB/FUSE/POSIX
- 模块化堆叠架构:灵活组合功能模块
1.3 核心组件
- Brick :基本存储单元,格式为 主机名:存储目录
- Volume:由多个 Brick 组成的逻辑卷
- FUSE:用户态文件系统模块,无需修改内核
- VFS:内核文件系统访问接口
- Glusterd:集群管理守护进程(每节点必须运行)
二、工作原理
2.1 数据访问流程
- 客户端通过挂载点访问数据
- 内核 VFS 接收请求
- 交给 FUSE 模块转发
- GlusterFS Client 处理数据
- 通过网络发送到对应 GlusterFS Server
- 写入 Brick 存储
2.2 弹性 HASH 算法
- 基于 Davies-Meyer 实现,计算得到 32 位 HASH 值
- 将 HASH 空间划分为 N 段,对应 N 个 Brick
- 直接定位文件,无需查询元数据服务器
- 优点:负载均衡、无单点、并行访问
三、GlusterFS 卷类型(共 7 种,常用 5 种)
3.1 基础卷
- 分布式卷(Distribute)
- 类似 RAID0,文件按 HASH 散列到不同 Brick
- 无冗余、扩容简单、单点故障丢数据
- 条带卷(Stripe)
- 类似 RAID0,文件分块轮询存储
- 大文件性能高、无冗余
- 复制卷(Replica)
- 类似 RAID1,文件多副本同步
- 高可用、读性能高、写性能低、磁盘利用率低
3.2 复合卷
- 分布式条带卷
- 先分布、再分块,适合海量大文件
- 无冗余,Brick 数为条带数倍数
- 分布式复制卷
- 先分布、再副本,生产环境首选
- 兼顾容量与高可用,Brick 数为副本数倍数
- 条带复制卷 ≈ RAID10
- 分布式条带复制卷:三者复合,用于 MapReduce 场景
四、GlusterFS 集群部署(CentOS 7)
4.1 环境准备
- 4 台存储节点 + 1 台客户端
- 磁盘分区、格式化、永久挂载
- 关闭防火墙、SELinux
- 配置所有节点 /etc/hosts 主机名解析
4.2 安装与启动
|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash yum -y install centos-release-gluster yum -y install glusterfs glusterfs-server glusterfs-fuse systemctl start glusterd systemctl enable glusterd |
4.3 组建集群
|--------------------------------------------------------------------------------------------------------------|
| bash gluster peer probe node2 gluster peer probe node3 gluster peer probe node4 gluster peer status # 查看集群状态 |
4.4 创建并启动卷
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash # 分布式卷 gluster volume create dis-volume node1:/e6 node2:/e6 force gluster volume start dis-volume # 条带卷 gluster volume create stripe-volume stripe 2 node1:/d5 node2:/d5 force # 复制卷 gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force # 分布式条带卷 gluster volume create dis-stripe stripe 2 node1:/b3 node2:/b3 node3:/b3 node4:/b3 force # 分布式复制卷 gluster volume create dis-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force |
4.5 客户端挂载
|-------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash yum -y install glusterfs glusterfs-fuse mkdir -p /test/{dis,stripe,rep,dis_and_stripe,dis_and_rep} mount -t glusterfs node1:dis-volume /test/dis |
4.6 永久挂载(/etc/fstab)
|----------------------------------------------------------------------|
| Plain Text node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0 |
五、功能测试
5.1 文件分布验证
- 分布式卷:文件完整存于某一 Brick
- 条带卷:文件分块存于多个 Brick
- 复制卷:所有 Brick 存完整副本
- 分布式复制卷:分组存副本
5.2 破坏性测试结论
- 分布式 / 条带卷:节点宕机 → 数据丢失
- 复制 / 分布式复制卷:单节点宕机 → 数据正常可用
- 分布式复制卷可容忍副本组内单点故障
六、常用维护命令
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash gluster volume list # 列出所有卷 gluster volume info # 查看卷详情 gluster volume status # 查看卷运行状态 gluster volume stop volname # 停止卷 gluster volume delete volname # 删除卷 gluster volume set volname auth.allow 192.168.8.* # 访问控制 |