GFS分布式文件系统部署

一、GlusterFS简介

开源的分布式文件系统
由存储服务器,客户端(默认GFS挂载服务,RDMA协议)以及NFS/Samba(使用前需开启对应协议)存储网关组成
无元数据服务器(无数据元属性信息)

1.1 GlusterFS工作流程

1.客户端或应用程序通过GlusterFS的挂载点(VFS)访问数据
2.linux系统内核通过VFS API收到请求并处理
3.VFS将数据递交给FUSE内核文件系统,fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client(客户机)
4.GlusterFS client收到数据后,client根据配置文件的配置对数据进行处理
5.通过网络将数据传递至远端的GlusterFS server(服务器),并且将数据写入到服务器的存储设备上。

1.2 弹性HASH算法

1.通过HASH算法得到一个32位的整数
2.划分为N个连续的子空间,每个空间对应一个Brick
3.弹性HASH算法的优点:
保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

四个Brick节点的GlusterFS卷,平均分配2的32次方的区间的范围空间
访问文件时,通过计算该文件的HASH值(key值),从而对应到Brick存储空间

二、环境部署

设备对应的IP地址

设备 IP地址
node1 20.0.0.31
node2 20.0.0.32
node3 20.0.0.33
node4 20.0.0.34
client 20.0.0.35

2.1 磁盘部署

格式化磁盘,并将磁盘挂载到本地(所有node节点都需要操作)

mkfs.ext4 /dev/sdx      格式化
mkdir {/b,/c,/d,/e}    创建目录
mount /dev/sdx /x       挂载

在这里插入图片描述

2.2 地址映射

通过编辑hosts文件实现主机和IP地址绑定(所有节点包括客户机都需要操作)

vi /etc/hots

在这里插入图片描述

2.3 时间同步

首先要确保所有节点都可以通过域名访问公网(所有节点都需要操作)

与阿里云时间服务器同步

ntpdate ntp1.aliyun.com

创建任务计划(可选项)

crontab -e

每30分钟和阿里云时间同步服务器进行时间同步

*/30 * * * * /usr/sbin/ntpdate ntp1.ailyun.com

2.4 ssh免密登录

node1可以免密登录到其它节点

ssh-keygen -t rsa     创建密钥
ssh-copy-id 20.0.0.32    
ssh-copy-id 20.0.0.33
ssh-copy-id 20.0.0.34
ssh-copy-id 20.0.0.14

三、安装软件

(4个节点都需要安装)

3.1 yum源配置

1.建立yum仓库,准备gfs的rpm软件包,上传并解压

unzip gfsrepo.zip

在这里插入图片描述

2.在“/etc/yum.repos.d”目录下新建一个“.repo” 结尾的文件

/etc/yum.repos.d/gfs.repo
[gfs]
name=gfs
baseurl=file:///gfsrepo
gpgcheck=0
enabled=1

3.建立缓存

yum clean all
yum makecache

在这里插入图片描述

3.2 yum安装

yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

glusterfs :软件
glusterfs-server: 服务
glusterfs-fuse :文件系统
glusterfs-rdma :rdma协议
在这里插入图片描述

启动服务

systemctl start glusterd.service    启动服务
systemctl enable glusterd.service   设置服务开机自启
systemctl status glusterd.service   服务状态

在这里插入图片描述

四、创建卷

常用命令(在node1节点上)

gluster volume info 卷名查看卷的详细信息
gluster volume start 卷名启动开启卷
gluster volume status 卷名查看卷状态

4.1 创建分布式卷

gluster volume create dis-vol node1:/b node2:/b force

在这里插入图片描述

4.2 创建条带卷

使用node1节点的c和node2节点的c创建条带卷

gluster volume create stripe-vol stripe 2 node1:/c node2:/c force

在这里插入图片描述

4.3 创建复制卷

gluster volume create rep-vol replica 2 node3:/b node4:/b force

在这里插入图片描述

4.4 创建分布式条带卷

gluster volume create dis-stripe stripe 2 node1:/d node2:/d node3:/d node4:/d force

在这里插入图片描述

4.5 创建分布式复制卷

gluster volume create dis-replica replica 2 node1:/e node2:/e node3:/e node4:/e force

在这里插入图片描述

4.6 查看创建的卷列表

gluster volume list

在这里插入图片描述

五、客户机测试

5.1 客户机挂载

yum安装 gfs命令程序 文件系统

yum -y install glusterfs glusterfs-fuse

创建挂载点

mkdir {/dis,/stripe,/replica,/dis-stripe,/dis-replica}

进行挂载

mount.glusterfs node1:dis-vol /dis
mount.glusterfs node1:rep-vol /replica
mount.glusterfs node1:stripe-vol /stripe
mount.glusterfs node1:dis-stripe /dis-stripe
mount.glusterfs node1:dis-replica /dis-replica

查看挂载情况
在这里插入图片描述

5.2 测试

在客户机上创建5个文件进行测试

dd if=/dev/zero of=/test1.log bs=40M count=1
dd if=/dev/zero of=/test2.log bs=40M count=1
dd if=/dev/zero of=/test3.log bs=40M count=1
dd if=/dev/zero of=/test4.log bs=40M count=1
dd if=/dev/zero of=/test5.log bs=40M count=1

文件复制到之前挂载的几个目录

[root@client /]# cp test* /dis
[root@client /]# cp test* /dis-replica/
[root@client /]# cp test* /dis-stripe/
[root@client /]# cp test* /stripe/
[root@client /]# cp test* /replica/

在这里插入图片描述

5.3 查看各个节点

群集环境(每个节点有4个磁盘,每个磁盘20G,例如:node1(/b)容量大小为20G)

卷名称 卷类型 空间大小 Brick(括号内为挂载点)
dis-volume 分布式卷 40G node1(/b)、node2(/b)
stripe-volume 条带卷 40G node1(/c)、node2(/c)
rep-volume 复制卷 20G node3(/b)、node4(/b)
dis-stripe 分布式条带卷 80G node1(/d)、node2(/d)
node3(/d)、node4(/d)
dis-rep 分布式复制卷 40G node1(/e)、node2(/e)
node3(/e)、node4(/e)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.4 故障测试

1.分布式卷故障测试

当分布式卷的其中一个节点(node2)故障时,文件会丢失(只能显示部分文件)
在这里插入图片描述
2.条带卷故障测试

当分布式卷的其中一个节点(node2)故障时,文件会丢失(所有文件都显示不出来)
在这里插入图片描述
3.复制卷故障测试

当复制卷的其中一个节点(node3)故障时,文件不会丢失
在这里插入图片描述

4.分布式条带卷故障测试

当分布式条带卷的其中一个节点(node2)故障时,文件会丢失(仅可以显示部分文件)
解析:node1和node2节点 存储5个文件中的其中3个,node1和node2节点又分别存储3个文件的一部分
在这里插入图片描述
5.分布式复制卷故障测试

①坏其中的任意一块硬盘

当分布式条带卷的其中一个节点(node2)故障时,文件不会丢失(可以显示全部文件)
解析:node1和node2节点 存储5个文件中的其中3个,node1和node2节点都会存储这3个文件

在这里插入图片描述
②坏特定的两块硬盘

当分布式条带卷的其中两个节点(node2、node3)故障时,文件依然不会丢失(可以显示全部文件)

在这里插入图片描述
总结:

卷类型 空间大小 故障类型 结果
分布式卷 容量与物理容量一样 当两个节点其中一个节点宕机 丢失部分文件
条带卷 容量与物理容量一样 当两个节点其中一个节点宕机 会丢失全部文件
复制卷 容量只有物理容量的一半 当两个节点其中一个节点宕机 文件不会丢失
分布式条带卷 容量与物理机容量一样 当四个节点中的其中一个节点宕机 文件全部丢失
分布式复制卷 容量只有物理容量的一半 当四个节点中的其中一个节点宕机 文件不会丢失
分布式复制卷 容量只有物理容量的一半 当四个节点中的特定两个节点宕机 文件不会丢失

猜你喜欢

转载自blog.csdn.net/weixin_50345511/article/details/112218384