GlusterFS简介
GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点。
GlusterFS重要概念
birck:GlusterFS的基本元素,以节点服务器目录形式展现;
volume:多个brick的逻辑集合;
metadata:元数据,用于描述文件、目录等的信息;
self-heal:用于后台运行检测副本卷中文件和目录的不一致性并解决这些不一致;
FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接;
Gluster Server:数据存储服务器,即组成GlusterFS存储集群的节点;
Gluster Client:使用GlusterFS存储服务的服务器,如KVM、OpenStack、LB RealServer、HA node。
GlusterFS部署
-
环境准备
系统: CentOS Linux release 7.6.1810 (Core)
hostname ipaddress gfs01 192.168.150.171 gfs02 192.168.150.192 client01 192.168.150.26 需要关闭防火墙, 关闭selinux, hostname能互相解析
gfs版本: glusterfs-server-6.9-1.el7.x86_64
gfs客户端: glusterfs-6.0-29.el7.x86_64
gfs-server: 192.168.150.192 192.168.150.171
gfs-client: 192.168.150.26
-
安装软件包
在gfs-server上安装
yum -y install centos-release-gluster6 yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
-
创建集群
启动glusterd服务
# systemctl start glusterd # systemctl enable glusterd # systemctl status glusterd
创建集群
gluster peer probe gfs01 gluster peer probe gfs02
如果想从集群中去除节点,可以执行如下命令,但该节点中不能存在卷中正在使用的brick。
gluster peer detach 节点名称
查看集群状态
gluster peer status
创建存储目录
mkdir -p /gfs
创建volune(分布式卷)
GlusterFS中的volume的模式有很多中,包括以下几种:
-
分布卷(默认模式):即DHT, 也叫 分布卷: 将文件已hash算法随机分布到 一台服务器节点中存储。
-
复制模式:即AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。
-
条带模式:即Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
-
分布式条带模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。
-
分布式复制模式:最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。
-
条带复制卷模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。
-
三种模式混合: 至少需要8台 服务器才能创建。 stripe 2 replica 2 , 每4个节点 组成一个 组。
因为我们只有二台主机,在此我们使用默认的分布卷模式
gluster volume create gfs replica 2 gfs01:/gfs gfs02:/gfs force
查看volume状态
gluster volume info
启动volume
gluster volume start gfs
gluster 调优
# 开启 指定 volume 的配额 gluster volume quota k8s-volume enable # 限制 指定 volume 的配额 gluster volume quota k8s-volume limit-usage / 5TB # 设置 cache 大小, 默认32MB gluster volume set k8s-volume performance.cache-size 4GB # 设置 io 线程, 太大会导致进程崩溃 gluster volume set k8s-volume performance.io-thread-count 16 # 设置 网络检测时间, 默认42s gluster volume set k8s-volume network.ping-timeout 10 # 设置 目录索引的自动愈合进程 gluster volume set k8s-volume cluster.self-heal-daemon on # 设置 自动愈合的检测间隔, 默认600s gluster volume set k8s-volume cluster.heal-timeout 300 # 设置 写缓冲区的大小, 默认1M gluster volume set k8s-volume performance.write-behind-window-size 1024MB
-
客户端测试
安装客户端
yum install -y glusterfs glusterfs-fuse
mkdir -p /opt/gfsmnt
mount.glusterfs gfs01:/gfs /opt/gfsmnt/
df -h