1 介绍

1.1 GlusterFS 数据访问流程

1.客户端通过 glusterfs 的 mount point 来读写数据。

2.用户的这个操作被递交给本地 linux 系统的 VFS 来处理。

3.VFS 将数据递交给 FUSE 内核文件系统,在启动 glusterfs 客户端以前,需要向系统注册一个实际的文件系统 FUSE,如图所示,该文件系统与 XFS 在同一个层次上面,XFS 是对实际的磁片进行处理,而 fuse 文件系统则是将数据通过/dev/fuse 这个设备文件递交给了 glusterfs client 端。所以,我们可以将 fuse 文件系统理解为一个代理。

4.数据被 fuse 递交给 Glusterfs client 后,client 对数据进行根据配置文件进行的一系列处理

5.在 glusterfsclient 的处理末端,通过网路将数据递交给 Glusterfs Server,并且将数据写入到服务器所控制的存储设备上

整体流程

2 安装

2.1 配置 yum 源并安装

1
2
3
4
5
6
7
8
cat /etc/yum.repos.d/glusterfs.repo
[glusterfs]
name=glusterfs
baseurl=https://buildlogs.centos.org/centos/7/storage/x86_64/gluster-9/
enabled=1
gpgcheck=0

yum install -y glusterfs glusterfs-server glusterfs-fuse

2.2 启动

1
2
systemctl enable glusterd
systemctl start glusterd

2.3 查看状态

1
systemctl status glusterd

3 配置集群

1
2
3
gluster peer probe 10.1.1.1
gluster peer probe 10.1.1.2
gluster peer probe 10.1.1.3

3.1 查看状态

1
gluster peer status

4 创建存储池

4.1 卷类型

名称 应用场景 优点 缺点
分布式卷 对可靠性高和读写性能要求高的场景 读写性能好 写性能差
复制卷 对可靠性高和读写性能要求高的场景 读写性能好 写性能差
条带卷 大文件 适用于大文件存储 可靠性低
分布式复制卷 大量文件读和可靠性要求高的场景 高可靠,读性能高 牺牲存储空间,写性能差
分布式条带卷 读/写性能高的大量大文件场景 高并发支持 没有冗余,可靠性差
条带式复制卷 超大文件,并且对可靠性要求高 大文件存储,可靠性高 牺牲空间写性能差
分布式条带复制卷 大量大文件并且对可靠性要求高的场景 读/写/可靠性比较均匀 牺牲存储空间,写性能相对差

4.2 卷存储机制说明

名称 说明
分布式卷 分布式卷也成为哈希卷,多个文件以文件为单位在多个 brick 上,使用哈希算法随机存储。
复制卷 多个文件在多个 brick 上复制多份,brick 的数目要与需要复制的份数相等,建议 brick 分布在不同的服务器上。
条带卷 将文件分成条带,存放在多个 brick 上,默认条带大小 128k
分布式复制卷 多个文件在多个节点哈希存储,每个文件再多分条带在多个 brick 上存储
分布式条带卷 多个文件在多个节点上哈希存储,在多个 brick 复制多份存储。
条带式复制卷 一个大文件存储的时候划分条带,并且保存多份
分布式条带复制卷 多个大文件在多个节点哈希存储,存储是分成条带,并且保存多份

因为这里只是简单部署,主要测试 csi,只是用了分布式卷,具体参考:架构 - Gluster Docs

4.3 创建虚拟化磁盘

别批量复制执行,这里要一步一步操作

1
2
3
4
5
6
dd if=/dev/zero of=gfs_data.img bs=1M count=1024
du -h gfs_data.img
mkfs.ext4 gfs_data.img
mkdir /data/gfs_data
mount -o loop -t ext4 gfs_data.img /data/gfs_data/
df -h

4.4 创建分布式卷

1
2
gluster volume create gv0 replica 3 10.1.1.1:/data/gfs_data 10.1.1.2:/data/gfs_data 10.1.1.3:/data/gfs_data
gluster volume start gv0

4.4.1 查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
gluster volume info
Volume Name: gv0
Type: Replicate
Volume ID: 544e31b9-2c0f-4454-a35a-xxxxxxxxx
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: 10.1.1.1:/data/gfs_data
Brick2: 10.1.1.2:/data/gfs_data
Brick3: 10.1.1.3:/data/gfs_data
Options Reconfigured:
performance.client-io-threads: off
nfs.disable: on
transport.address-family: inet
storage.fips-mode-rchecksum: on
cluster.granular-entry-heal: on

4.5 挂载测试

1
mount -t glusterfs 10.1.1.1:/gv0 /opt/1/

5 删除卷

5.1 停止

1
gluster volume stop gv0

5.2 删除

1
gluster volume delete gv0

5.3 删除目录残留

1
rm -f /data/gfs_data