**
一、简介
**
GlusterFS是一个开源免费的分布式文件系统,具有完全去中心化、堆栈式设计、全局统一命名空间、高可用、高性能和横向扩展等特点。GlusterFS通过DHT算法,可轻松将集群规模扩展至上千节点,同时,官方推荐使用的“复制卷”可有效地使系统摆脱单点故障和单点性能瓶颈等多种难题。在CAP分布式系统基础理论的约束下,GlusterFS选择“AP”作为系统的核心宗旨,即保证系统具备最终一致性的前提下,尤其关注它在可用性方面的表现,因此在业界被广泛使用。本文主要针对GlusterFS 6.5版本在集群搭建、常规使用、生产调优、数据修复等方面的讨论(其他版本略有差异),讲述的大部分内容都为实操流程,极少涉及GlusterFS概念的讲解和设计的分析,如发现文章中有较为疑惑的地方,请您务必移读官方文档(见文末附录)。
注:如果您是Kubernetes用户,并且您想在Kubernetes中集成GlusterfS作为您的共享存储服务,那么您可以在我的另一篇文章《K8S共享存储—GlusterFS&Heketi》中获取指定的集成方案。
二、系统说明
GlusterFS主要分为Server端和Client端,其中server端主要包含glusterd和glusterfsd两种进程,分别用于管理GlusterFS系统进程本身(监听24007端口)和存储块—brick(一个brick对应一个glusterfsd进程,并监听49152+端口);GlusterFS的Client端支持NFS、CIFS、FTP、libgfapi以及基于FUSE的本机客户端等多种访问方式,生产中我们一般都会使用基于FUSE的客户端(其他的可以自行尝试)。GlusterFS的配置文件保存在/var/lib/glusterd下,日志保存在/var/log下。生产中建议搭建6台以上服务节点,卷类型使用分布式复制卷,副本数设为3,基本文件系统类型使用xfs。(brick数为副本数的倍数时,复制卷会自动转化为分布式复制卷)
**
三、系统安装
**
1、环境要求
CentOS7.6,关闭防火墙,可通过ssh互相登录,每个服务器有一块独立的硬盘。
2、服务器节点列表
系统环境 | IP | 别名 | 角色 | 存储设备 | FS类型 |
---|---|---|---|---|---|
CentOS7.6 | 192.168.3.110 | solo0 | server | /dev/sdb | xfs |
CentOS7.6 | 192.168.3.111 | solo1 | server | /dev/sdb | xfs |
CentOS7.6 | 192.168.3.112 | solo2 | server | /dev/sdb | xfs |
CentOS7.6 | 192.168.3.113 | solo3 | client | ----------- | ---- |
说明:该服务器列表仅为测试用例使用。
3、 系统安装
(1)hostname设置及ssh免密登录设置:
略
(2)关闭防火墙:
systemctl stop iptables && systemctl disable iptables
systemctl stop firewalld && systemctl disable firewalld
(3)server端安装(6.5版本):
分别在solo0、solo1、solo2上执行命令
yum -y install glusterfs glusterfs-server
注:使用命令 yum -y search glusterfs --showduplicates 查看所有可用版本
(4)Server端启动、设置开机启动、查看状态:
systemctl start glusterd && systemctl enable glusterd && systemctl status glusterd
(5)配置可信池:
在任意节点执行命令,比如在solo0上执行
gluster peer probe solo1
gluster peer probe solo2
即可将solo1和solo2通过对等性探测加入glusterFS可信池。
(6)查看可信池状态:
任意机器执性命令
gluster peer status
4、创建glusterFS卷并挂载
(1)格式化存储存储空间:
以/dev/sdb为例,通过fdisk将其格式化为xfs文件系统类型
fdisk /dev/sdb
假设格式化后的分区为/dev/sdb1
注:格式化过程省略,如有疑问请查看:
https://cloud.tencent.com/developer/news/332952
如果没有xfs格式工具,请执行:yum -y install xfsprogs 进行安装
(2)挂载分区:
创建挂载点:mkdir -p /glusterfs/sdb
挂载硬盘分区:mount /dev/sdb1 /glusterfs/sdb
设置开机挂载:echo ‘/dev/sdb1 /glusterfs/sdb xfs defaults 1 2’ >> /etc/fstab
(3)创建glusterfs卷
在所有机器上创建brick : mkdir -p /glusterfs/sdb/brick1
创建分布式复制卷:
gluster volume create gs1 replica 2 solo0:/glusterfs/sdb/brick1 solo1:/glusterfs/sdb/brick1 solo2:/glusterfs/sdb/brick1
启动gs1卷:
gluster volume start gs1
(4)安装client端并挂载gs1卷:
在solo3上安装glusterFS 客户端:yum -y install glusterfs glusterfs-fuse
创建client端挂载点:mkdir -p /mnt/glusterfs/gs1
在client端挂载gs1卷:mount -t glusterfs solo0:/gs1 /mnt/glusterfs/gs1
**
四、系统管理
**
1、 节点管理
(1)节点状态
gluster peer status //在solo0上操作,只能看到其他节点solo0的连接状态
(2)添加节点
gluster peer probe HOSTNAME
例如:gluster peer probe solo2 //将solo2添加到存储池中
注意:如果遇到peer probe: failed: Probe returned with Transport endpoint is