本文围绕GlusterFS(GFS) 分布式文件系统展开,从核心概念、架构原理、卷类型、集群部署到测试维护,完整讲解了这款无元数据服务器的开源分布式存储方案,适用于海量文件存储、云存储、高可用存储等场景。
一、GlusterFS 基础概述
1. 核心定位
GlusterFS 是开源、横向扩展(Scale-Out)的分布式文件系统,可汇聚多节点存储资源,支持PB 级容量 ,最大特点是无元数据服务器,避免传统分布式存储的单点故障与性能瓶颈。
2. 核心优势
- 无元数据设计:依靠弹性 HASH 算法定位数据,无中心节点,高可用、高并行。
- 弹性扩展:可在线增删节点,不中断业务。
- 全局统一命名空间:对外呈现单一目录结构,屏蔽底层节点差异。
- 高可用:支持副本机制,自动修复数据,节点故障不丢数据。
- 模块化堆栈架构:可组合实现复制、条带、分布式等各类特性。
- 兼容标准协议:支持 NFS/CIFS/FUSE/POSIX,应用无需改造。
3. 关键术语
- Brick(存储块) :节点提供的实际存储目录,如
server:/dir。 - Volume(逻辑卷):多个 Brick 组成的逻辑存储单元,管理最小单位。
- FUSE:用户态文件系统模块,允许 GlusterFS 运行在内核外。
- VFS:内核提供的文件系统访问接口。
- glusterd:集群管理守护进程,所有节点必须运行。
二、GlusterFS 工作原理
1. 数据访问流程
客户端挂载 → 内核 VFS → FUSE 模块 → GlusterFS 客户端 → 网络 → 后端 GlusterFS 服务端 Brick 写入 / 读取。
2. 弹性 HASH 算法
- 基于 Davies-Meyer 实现,计算文件名得到 32 位 HASH 值。
- 将 HASH 空间均匀分配给各个 Brick。
- 直接定位数据所在节点,不依赖元数据服务器。
- 保证数据均匀分布,提升并行访问能力。
三、GlusterFS 卷类型(核心)
GlusterFS 支持 7 种卷,常用 5 种,分别对应性能、冗余、扩展等不同场景:
1. 分布式卷(Distribute)
- 默认卷类型,文件按 HASH 散列到不同 Brick。
- 特点:扩容简单、无冗余、节点损坏则数据丢失。
- 适用:临时、非重要数据。
2. 条带卷(Stripe)
- 类似 RAID0,文件分块轮询写入多个 Brick。
- 特点:大文件性能极高、无冗余、任意节点故障则文件损坏。
- 适用:超大文件、高吞吐场景。
3. 复制卷(Replica)
- 类似 RAID1,文件写入多副本,所有节点存完整数据。
- 特点:高可用、读性能提升、写性能下降、磁盘利用率低。
- 适用:核心数据、高可靠需求。
4. 分布式条带卷(Distribute+Stripe)
- 兼具分布式 + 条带特点,Brick 数为条带数倍数。
- 特点:支持大容量 + 大文件高并发读写、无冗余。
- 适用:海量大文件存储。
5. 分布式复制卷(Distribute+Replica)
- 兼具分布式 + 复制特点,Brick 数为副本数倍数。
- 特点:可扩展 + 高可用、自动故障切换、推荐生产使用。
- 适用:企业通用存储、高可用文件服务。
四、GlusterFS 集群部署(完整流程)
1. 环境准备
- 4 个存储节点 + 1 个客户端。
- 磁盘分区、格式化、挂载。
- 关闭防火墙、SELinux,配置 hosts 解析。
2. 安装与启动
所有节点安装:
plaintext
yum install centos-release-gluster glusterfs glusterfs-server glusterfs-fuse
systemctl start glusterd && systemctl enable glusterd
3. 加入集群
plaintext
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
gluster peer status # 查看节点状态
4. 创建各类卷
plaintext
# 分布式卷
gluster volume create dis-volume node1:/e6 node2:/e6 force
# 条带卷
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
5. 启动卷
plaintext
gluster volume start 卷名
6. 客户端挂载
plaintext
mount -t glusterfs node1:卷名 /挂载目录
并配置 /etc/fstab 开机自动挂载。
五、功能测试与验证
1. 文件分布验证
- 分布式卷:文件整体散落在不同节点。
- 条带卷:文件被分块存于不同节点。
- 复制卷:所有节点存完整副本。
- 分布式复制:部分节点组存完整副本。
2. 高可用测试(节点宕机)
- 分布式 / 条带卷:节点宕机 → 对应文件丢失。
- 复制 / 分布式复制卷:节点宕机 → 数据完全可用,自动切换。
六、集群维护命令
- 查看卷列表:
gluster volume list - 查看卷信息:
gluster volume info - 查看状态:
gluster volume status - 停止卷:
gluster volume stop 卷名 - 删除卷:
gluster volume delete 卷名 - 设置访问权限:
gluster volume set 卷名 auth.allow 192.168.1.*
七、总结
GlusterFS 是一款无中心、易扩展、高可用的分布式文件系统:
- 依靠弹性 HASH摆脱元数据服务器,避免单点故障。
- 提供分布式、条带、复制、混合卷满足不同场景。
- 分布式复制卷是生产环境最常用、最均衡的选择。
- 部署简单、兼容标准协议、支持在线扩容,适合企业文件存储、云平台、大数据存储。