GlusterFS 分布式文件系统
·
一、GlusterFS 核心概述
1. 基本定义
GlusterFS 是开源无元数据服务器的分布式文件系统,属于 Scale-Out 横向扩展存储架构,可支撑 PB 级容量、数千客户端,通过 TCP/IP 或 RDMA 网络聚合分散存储,提供全局统一命名空间。
2. 核心优势
- 无单点故障:摒弃元数据服务器,用弹性 Hash 定位数据
- 高性能扩展:支持在线扩容,I/O 并行化,兼容高速网络
- 高可用:支持副本 / 纠删码,后台自动增量修复
- 兼容标准:支持 POSIX、NFS/CIFS/SMB,无需改造应用
- 弹性卷:在线增删节点、调整容量,业务不中断
3. 关键术语
- Brick:基本存储单元,格式
SERVER:EXPORT(如 node1:/e6) - Volume:多个 Brick 组成的逻辑卷
- FUSE:用户态文件系统内核模块,无需改内核即可挂载
- VFS:内核提供给用户空间的磁盘访问接口
- glusterd:集群管理守护进程(所有节点必须运行)
二、工作原理
1. 数据访问流程
- 客户端通过挂载点访问
- 内核 VFS 接收请求
- VFS 交给 FUSE,FUSE 转发给 GlusterFS Client
- Client 按配置处理数据
- 经网络发给对应 GlusterFS Server 写入 Brick
2. 弹性 Hash 算法
- 基于 Davies-Meyer 计算文件名 32 位 Hash 值
- 把 32 位整数空间平均分给 N 个 Brick
- 直接定位文件所在 Brick,不依赖元数据服务器
- 优点:数据均匀、无瓶颈、无单点故障
三、卷类型(重点)
1. 基础卷
| 卷类型 | 对应 RAID | 特点 | 冗余 | 适用场景 |
|---|---|---|---|---|
| 分布式卷 Distribute | RAID0 | 文件散列到不同 Brick,整文件存放 | 无 | 扩容、非重要数据 |
| 复制卷 Replica | RAID1 | 多副本,所有 Brick 存完整文件 | 有 | 高可用、核心数据 |
| 分散卷 Disperse | RAID5/6 | 纠删码,冗余可配 | 有 | 高空间利用率 + 高可用 |
| 条带卷 Stripe | RAID0 | 文件分块轮询存储 | 无 | 超大文件;Gluster 6+ 已弃用 |
2. 复合卷
- 分布式条带卷:Distribute + Stripe(大文件并发)
- 分布式复制卷:Distribute + Replica(生产最常用)
- 条带复制卷:Stripe + Replica(类似 RAID10)
- 分布式条带复制卷:三者结合(MapReduce 场景)
- 分布式分散卷:Distribute + Disperse(高可用 + 扩容)
四、实验环境准备
1. 节点规划(CentOS 7)
- 服务节点:node1~node4(192.168.8.134/136/139/141)
- 客户端:client
- 磁盘与挂载点:
- /b3(3GB)、/c4(4GB)、/d5(5GB)、/e6(6GB)、/f7(7GB)
2. 所有节点统一前置操作
# 1. 分区、格式化(XFS)、挂载并写入 /etc/fstab
fdisk /dev/sdb
mkfs.xfs /dev/sdb1
mkdir /b3 && mount /dev/sdb1 /b3
echo "/dev/sdb1 /b3 xfs defaults 0 0" >> /etc/fstab
# 2. 关闭防火墙与 SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 3. 配置 hosts 解析
cat >> /etc/hosts <<EOF
192.168.8.134 node1
192.168.8.136 node2
192.168.8.139 node3
192.168.8.141 node4
EOF
# 4. 安装 GlusterFS
yum install -y centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
# 5. 启动并开机自启
systemctl start glusterd
systemctl enable glusterd
3. 组建集群(仅在 node1 执行)
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
# 查看集群状态
gluster peer status
五、卷创建实验(node1 执行)
1. 分布式卷(默认)
gluster volume create dis-volume node1:/e6 node2:/e6 force
gluster volume start dis-volume
gluster volume info dis-volume
2. 复制卷(replica = 副本数)
gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force
gluster volume start rep-volume
3. 分散卷(纠删码)
gluster volume create disp-volume disperse 3 redundancy 1 node1:/b3 node2:/b3 node3:/b3 force
gluster volume start disp-volume
4. 分布式复制卷(生产常用)
gluster volume create dis-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
gluster volume start dis-rep
5. 分布式条带卷
gluster volume create dis-stripe stripe 2 node1:/b3 node2:/b3 node3:/b3 node4:/b3 force
gluster volume start dis-stripe
六、客户端挂载与使用
1. 客户端配置
# 安装依赖
yum install -y glusterfs glusterfs-fuse
# 配置 hosts
cat >> /etc/hosts <<EOF
192.168.8.134 node1
192.168.8.136 node2
192.168.8.139 node3
192.168.8.141 node4
EOF
# 创建挂载目录
mkdir -p /test/{dis,stripe,rep,dis_and_stripe,dis_and_rep,disp}
2. 挂载卷
mount -t glusterfs node1:dis-volume /test/dis
mount -t glusterfs node1:rep-volume /test/rep
mount -t glusterfs node1:dis-rep /test/dis_and_rep
mount -t glusterfs node1:disp-volume /test/disp
3. 永久挂载(/etc/fstab)
node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0
node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0
node1:dis-rep /test/dis_and_rep glusterfs defaults,_netdev 0 0
七、功能测试
1. 写入测试文件
# 生成 43M 测试文件
dd if=/dev/zero of=demo1.log bs=1M count=43
cp demo*.log /test/dis/
cp demo*.log /test/rep/
cp demo*.log /test/dis_and_rep/
2. 查看文件分布
- 分布式卷:文件完整散落在不同节点
- 复制卷:所有节点都有完整副本
- 分布式复制卷:分组复制,文件完整存储
3. 高可用破坏性测试
- 挂起 node2 → 分布式卷 / 条带卷文件丢失
- 挂起 node2 → 复制 / 分布式复制卷正常访问
- 再挂起 node4 → 复制卷依然可用
八、常用维护命令
# 查看卷列表
gluster volume list
# 查看卷详情
gluster volume info
# 查看卷状态
gluster volume status
# 停止卷
gluster volume stop 卷名
# 删除卷
gluster volume delete 卷名
# 设置访问权限(白名单)
gluster volume set dis-rep auth.allow 192.168.8.*
九、总结
GlusterFS 是一款无元数据服务器的开源分布式文件系统,采用弹性 HASH 算法实现数据定位,避免单点故障,具备强横向扩展能力与高可用性;它支持分布式、复制、分散及分布式复制等多种卷类型,生产环境常用分布式复制卷兼顾容量与可靠性,整体部署流程为节点环境配置、组建集群、创建并启动卷、客户端通过 FUSE 挂载使用,同时支持在线扩容、自动修复与权限管控,是企业分布式存储的实用方案。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)