记录工作之外的一次学习经历,附上自己的实战步骤:
GlusterFs实践
1 GlusterFS简介
首先简单介绍下:GlusterFS是一个开源的分布式文件系统。更多特性介绍附录的参考文档。
https://blog.csdn.net/yujin2010good/article/details/75268877
以下是本人在实战过程中认为需要捋清楚的概念:
1 Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
2 Client: 挂载了GFS卷的设备
3 Extended Attributes:xattr是一个文件系统的特性,其支持用户或程序关联文件/目录和元数据。
4 FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
5 Namespace:每个Gluster卷都导出单个ns作为POSIX的挂载点
6 Node:一个拥有若干brick的设备
7 RDMA:远程直接内存访问,支持不通过双方的OS进行直接内存访问。
8 RRDNS:round robin DNS是一种通过DNS轮转返回不同的设备以进行负载均衡的方法
9 Self-heal:用于后台运行检测复本卷中文件和目录的不一致性并解决这些不一致。
10 Split-brain(脑裂):即处于一个镜像复制关系中的bricks之间,发生了数据或元数据的不一致问题,而无法认定哪边的数据正确。
11 Volfile:glusterfs进程的配置文件,通常位于/var/lib/glusterd/vols/volname
12 Volume:一组bricks的逻辑集合
13 Node/Peer:对应到具体的物理节点。例如可以通过peer probe把节点加入进来形成集群。
14 Brick:物理节点上有磁盘,可以用一组磁盘形成brick也可以用一个磁盘形成一个磁盘,GFS中的存储单元。
15 Translator:用堆积木的方式把各个功能节点堆积起来,串联起来形成一个堆栈式的结构
16 Volume:有brick后再通过translator的形式把brick串联起来形成一个volume。
最核心的部分:弹性Hash算法,通过32位的hash值去计算和定位文件的位置。参数为文件名,通过主文件名(file2)去计算,扩展名和目录不进行计算(data2),
2 GlusterFS软件安装
前提 卸载已安装的glusterfs:
扫描整个磁盘,发现有以前安装过的glusterfs版本文件即删除,请酌情使用,本人就在这一点被坑了一个多星期,原因是反复安装了好多次glusterfs多个版本,多余的版本文件未清除,导致后来的glusterfs挂载出现版本不一致的问题。
find / | grep -i gluster | grep -Ei -v ‘/home|/tmp’ | xargs rm -rf
yum -y remove rpm -qa | grep -i gluster
2>/dev/null
Yum安装(较为合适,推荐,系统有可用的yum源):
1 安装最新版本的gluster软件仓库:
yum -y install centos-release-gluster310
2 安装gluster软件:
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-cli glusterfs-geo-replication
3 查看版本信息:
glusterfs -V
4 启动进程:service也可以
systemctl enable glusterd
systemctl start glusterd
systemctl status glusterd
测试验证:
1 创建个卷volume
service glusterd status
并设置开机启动 chkconfig glusterd on
gluster volume create testvol 10.154.3.162:/data/brick1 10.154.3.162:/data/brick2 force(需要生产data目录)
gluster volume info
gluster volume start testvol
如果不需要这个卷,可以先stop 再delete
2 挂载
mount -t glusterfs 10.154.3.162:/testvol /mnt //挂载到mnt目录下
mount //查看挂载信息。下图中多了一个挂载点,盘的类型是glusterfs类型
df -h //查看磁盘,可以看见在系统盘vda1(20G)下创了两个分布式卷(40G)
一下进入挂载点,创建个文件里内容为hello world!!!看看。
使用tar安装(适用于指定的高版本安装,但问题较多,不建议)
1 下载最新的tar包:
链接: [link](https://download.gluster.org/pub/gluster/glusterfs/3.12/3.12.12/glusterfs-3.12.12.tar.gz).
或者直接:
wget https://download.gluster.org/pub/gluster/glusterfs/3.12/3.12.12/glusterfs-3.12.12.tar.gz
2 安装依赖包:(报acl的错执行即可))
yum install flex bison openssl openssl-devel acl libacl libacl-devel sqlite-devel libxml2-devel python-devel
3 tar xvzf glusterfs-3.12.12.tar.gz
4 cd glusterfs-3.12.12
5 把config.sub的EOF中间的文字修改为一行(为了避免下面执行 make时报错:错误: Makefile:80: *** missing separator. Stop.
6 ./configure –enable-debug –disable-tiering //会报错,缺少依赖包,可根据提
示按照7中进行安装
7 (1)、configure: error: Flex or lex required to build glusterfs
yum -y install flex
(2), configure: error: GNU Bison required to build glusterfs.
yum -y install bison
(3)还可能会提示:libxml2-devel 没有
yum install libxml2-devel -y
(4)提示没有openssl
yum install -y openssl
(