GluserFS笔记

一、GlusterFS 是什么

GlusterFS 是开源、无中心元数据、可横向扩展的分布式文件系统,由 Red Hat 主导维护。

  • 把多台服务器的本地硬盘 / 目录聚合成一个全局统一命名空间
  • 支持 PB 级存储、数千客户端并发
  • 适合:云存储、大数据、媒体、虚拟化、容器持久化等

二、核心架构与术语

1. 架构特点

  • 无元数据服务器(Metadata‑Free):无单点瓶颈,元数据分散在各节点
  • 弹性哈希(Elastic Hashing):客户端通过哈希直接定位文件所在 Brick
  • 用户态 + FUSE:客户端通过 FUSE 挂载,也可直接用 libglusterfs 访问
  • 模块化 Translator:副本、条带、纠删、缓存等功能可组合

2. 关键术语

  • Brick(砖块) :最小存储单元,格式 hostname:/path(节点 + 目录)
  • Volume(卷):多个 Brick 组成的逻辑卷,对外提供存储服务
  • Peer(对等节点):集群中互相信任的 GlusterFS 节点
  • Replica(副本):多副本高可用
  • Stripe(条带):大文件分片并行读写
  • EC(Erasure Coding,纠删码):比副本更节省空间的容错方式

三、卷类型(常用)

1. 分布式卷(Distributed)

  • 文件随机分布在不同 Brick,无冗余
  • 优点:容量大、性能好;缺点:节点丢数据即丢失
  • 适用:临时数据、缓存、非重要数据
  • 示例:4 个 Brick → 文件分散在 4 台机器

2. 复制卷(Replicated)

  • 文件在多个 Brick 完整副本(如 replica 2/3)
  • 优点:高可用、强一致;缺点:空间利用率低(副本数 N → 可用 1/N)
  • 适用:关键数据、数据库、配置文件
  • 示例:replica 2 → 每个文件存 2 份

3. 分布式复制卷(Distributed Replicated,最常用)

  • 先分组,组内复制、组间分布式
  • 如 8 Brick、replica 2 → 4 组,每组 2 副本
  • 兼顾容量、性能、高可用
  • 生产环境首选

4. 条带卷(Striped)

  • 大文件分块轮询分布在多个 Brick
  • 优点:大文件吞吐高;缺点:无冗余、小文件性能差
  • 适用:超大文件(如视频、备份)

5. 纠删码卷(EC)

  • 类似 RAID5/6,用数学编码实现容错
  • 如 4+2 → 6 个 Brick,允许坏 2 个
  • 空间利用率高(4/6),适合大容量归档

四、核心优势

  1. 无单点故障:无中心元数据节点
  2. 线性扩展:加节点即扩容,性能随节点增长
  3. 高可用自愈:副本 / EC 自动修复,节点故障不丢数据
  4. 协议兼容:支持 POSIX、NFS、SMB/CIFS、Gluster 原生协议
  5. 低成本:跑在普通 x86 服务器,无需专用硬件

五、常用命令(快速参考)

1. 集群管理

bash

运行

复制代码
# 安装(CentOS/RHEL)
yum install -y glusterfs-server
systemctl start glusterd
systemctl enable glusterd

# 加入集群(节点间互信)
gluster peer probe <节点IP/主机名>

# 查看集群状态
gluster peer status
gluster cluster status

2. 卷管理

bash

运行

复制代码
# 创建分布式卷(4 Brick)
gluster volume create vol1 node1:/brick1 node2:/brick2 node3:/brick3 node4:/brick4

# 创建分布式复制卷(8 Brick,replica 2)
gluster volume create vol2 replica 2 node1:/brick1 node2:/brick2 node3:/brick3 node4:/brick4 node5:/brick5 node6:/brick6 node7:/brick7 node8:/brick8

# 启动卷
gluster volume start vol1

# 查看卷信息
gluster volume info
gluster volume status

# 扩容(加 Brick)
gluster volume add-brick vol1 node5:/brick5

# 缩容(删 Brick)
gluster volume remove-brick vol1 node5:/brick5

# 删除卷
gluster volume stop vol1
gluster volume delete vol1

3. 客户端挂载

bash

运行

复制代码
# 临时挂载
mkdir -p /mnt/gluster
mount -t glusterfs node1:/vol1 /mnt/gluster

# 开机自动挂载(/etc/fstab)
node1:/vol1 /mnt/gluster glusterfs defaults,_netdev 0 0

六、极简部署示例(3 节点,分布式复制卷)

环境

  • node1(192.168.1.1)、node2(192.168.1.2)、node3(192.168.1.3)
  • 每节点准备目录 /data/brick1

步骤

  1. 所有节点安装 glusterfs-server,启动 glusterd
  2. 节点间互信

bash

运行

复制代码
# node1 执行
gluster peer probe 192.168.1.2
gluster peer probe 192.168.1.3
  1. 创建卷(replica 3)

bash

运行

复制代码
gluster volume create gvol replica 3 \
node1:/data/brick1 \
node2:/data/brick1 \
node3:/data/brick1
  1. 启动卷

bash

运行

复制代码
gluster volume start gvol
  1. 客户端挂载

bash

运行

复制代码
mount -t glusterfs node1:/gvol /mnt/gvol
相关推荐
Rabitebla3 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖8 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
YLCHUP12 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
旖旎夜光14 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
星恒随风1 天前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
2603_969694851 天前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea1 天前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
Go Work1 天前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
Oll Correct1 天前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator
每月一号准时摆烂1 天前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记