GlusterFS 分布式文件系统核心内容总结

本文围绕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摆脱元数据服务器,避免单点故障。
  • 提供分布式、条带、复制、混合卷满足不同场景。
  • 分布式复制卷是生产环境最常用、最均衡的选择。
  • 部署简单、兼容标准协议、支持在线扩容,适合企业文件存储、云平台、大数据存储。