一、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. 数据访问流程

  1. 客户端通过挂载点访问
  2. 内核 VFS 接收请求
  3. VFS 交给 FUSE,FUSE 转发给 GlusterFS Client
  4. Client 按配置处理数据
  5. 经网络发给对应 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 挂载使用,同时支持在线扩容、自动修复与权限管控,是企业分布式存储的实用方案。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐