GlusterFS简介

开源分布式文件系统
PB级容量
高可用性
读/写性能
基于文件系统级别共享
GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点。

GlusterFS术语

Brick
Volume
Fuse
VFS
Glusterd

GlusterFS重要特性:

全对称架构
支持多种卷类型(类似RAID0/1/5/10/01)
支持卷级别的压缩
支持NFS
支持SMB
支持Hadoop
支持Openstack
支持kubernetes

GlusterFS重要概念:

brick: GlusterFS的基本单元,以节点服务器目录形式展现。
Volume: 多个 bricks 的逻辑集合
Metadata: 元数据,用于描述文件、目录等的信息。
Self-heal: 用于后台运行检测复本卷中文件和目录的不一致性并解决这些不一致。
GlusterFS Server: 数据存储服务器,即组成GlusterFs存储集群的节点。
GlusterFS Client: 使用GlusterFS存储服务器的服务器,例如KVM、Openstack、LB RealServer、HA node。

实战

操作系统 IP 主机名
Centos7.4 192.168.62.203 node1
Centos7.4 192.168.62.204 node2
Centos7.4 192.168.62.135 node3
Centos7.4 192.168.62.166 node4

1.做解析
2.安装glusterfs服务(所有主机)
[root@node01 ~]# yum install centos-release-gluster glusterfs-server samba rpcbind -y
3.创建Glusterfs集群
添加节点的过程就是创建集群的过程,在node01一台上操作就可以,不需要添加本节点
[root@node1 yum.repos.d]# gluster peer probe node02
peer probe: success.
[root@node1 yum.repos.d]# gluster peer probe node03
peer probe: success.

[root@node1 yum.repos.d]# gluster peer status Number of Peers: 3 #查看集群信息
[root@node1 yum.repos.d]# gluster peer detach node04 #从集群中删除节点
[root@node1 ~]# gluster peer probe node04 #重新添加回来

glusgerfs卷的类型

基本类型:条带,复制,哈希。然后还有两两组合和三种类型同时使用,总共加起来共7种,新版的还有冗余卷

分布卷

分布卷也称为哈希卷,多个文件在多个 brick 上使用哈希算法随机存储。 哈希卷类似与负载均衡(实际上不是很均衡),他会将完整的数据分成几个部分,分别存储在每一个brick上
应用场景: 大量小文件
优点: 读/写性能好
缺点: 如果存储或服务器故障,数据将丢失

创建volume,在控制节点上操作 [root@node1 yum.repos.d]# gluster
启动volume gluster> volume start datavol1
查看卷信息 gluster> volume info datavol1
查看卷状态 gluster> volume status datavol1
删除卷需要提前停止卷运行 gluster> volume stop datavol1 //停止
gluster> volume delete datavol1 //删除

卷的扩容和缩容

收缩卷

注意:收缩之前数据会自动迁移
[root@node1 glusterfs]# gluster
gluster> volume remove-brick datavol1 node03:/data0/gluster/data1 start //开启迁移
gluster> volume remove-brick datavol1 node03:/data0/gluster/data1 status //查看迁移状态
gluster> volume remove-brick datavol1 node03:/data0/gluster/data1 commit //提交
gluster> volume info datavol1 //再次查看状态,就看不到node03

卷的扩容

gluster> volume add-brick datavol1 node03:/data0/gluster/data1 force //扩容,但是数据自动分布上去
gluster> volume info datavol1 //再次查看卷信息,就会有node03节点
扩容之后,应当再做一次数据的重新均衡
gluster> volume rebalance datavol1 start
gluster> volume rebalance datavol1 status
gluster> volume rebalance datavol1 stop

复制卷

多个文件在多个brick上复制多份,brick的数目要与需要复制的份数相等,建议brick分布在不同的服务器上。
复制卷和条带卷必须要指定卷的类型,复制卷就是每一个brick中的数据都是一样的,都是写入数据的完整备份,相当raid1。
所以容量会减少一半,当然性能上也会有所消耗.

应用场景: 对可靠性和读性能要求高的场景
优点: 读性能好
缺点: 写性能差

创建复制卷
gluster> volume create datavol2 replica 2 transport tcp node01:/data0/gluster/data2 node02:/data0/gluster/data2 force
查看volume状态
gluster> volume status

想要看到需要挂载
关于数据,存储节点会同步控制节点的数据,控制节点不会同步存储节点的数据
[root@node3 data2]# mount -t glusterfs node01:/datavol2 /mnt

条带卷

将文件分成条带,存放在多个 brick上,默认条带大小128K,相当于RAID0条带卷在处理大文件的时候会有一定的作用,它会将文件拆分几个部分,分别存在两个条带上即两个brick上。这个实际用的较少
应用场景: 大文件
优点: 适用于大文件存储
缺点: 可靠性低,brick 故障会导致数据全部丢失
创建条带卷
gluster> volume create datavol3 stripe 2 node01:/data0/gluster/data3 node02:/data0/gluster/data3 force
stripe option not supported
创建了一下,好像现在不支持了

复合卷

复合卷就是分布式复制,分布式条带,这两个是比较常用的,像分布式条带复制卷,还有三种揉一块儿的用的都比较少,
之前单一类型的卷,复制、条带和brick的数量是相同的,但是当我们的brick的数量是复制或条带的倍数的时候就会自动的转换为分布式复制或者分布式条带。

分布复制卷

多个文件在多个节点哈希存储,在多个brick 复制多份存储。

应用场景: 大量文件读和可靠性要求高的场景
优点: 高可靠性,读性能高
缺点: 牺牲存储空间,写性能差

这里我们用4个brick
分布复制卷是一对一对组成复制卷,所以要选择不同的节点上的brick组成复制卷,这样一个数据的副本就会分布在不同的节点上,不管哪个节点宕机,另外一个节点都会数据的完整副本。

制作
gluster> volume create data_rd replica 2 node01:/data0/gluster/data_rd_1 node02:/data0/gluster/data_rd_1 node01:/data0/gluster/data_rd_2 node02:/data0/gluster/data_rd_2 force
查看信息
gluster> volume info data_rd

分布条带卷

gluster> volume create fentiao stripe 2 node03:/data/gluster/data5 node04:/data/gluster/data5 force
stripe option not supported ##也不支持了