GFS分布式文件系统

发布时间 2023-04-05 23:24:57作者: 上头猪小屁

GFS分布式文件系统

  1.GlusterFS简介

  GlusterFS (Gluster File System) 是一个开源的分布式文件系统,主要由 Z RESEARCH 公司负责开发。GlusterFS 是 Scale-Out 存储解决方案 Gluster 的核心,具有强大的横向扩展能力,

通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS 借助 TCP/IP 或 InfiniBand RDMA 网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS 基于

可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。

  2.GlusterFS特点

  扩展性和高性能

  高可用性

  全局统一命名空间

  弹性卷管理

  基于标准协议

  3.GlusterFS的工作流程

  客户端或应用程序通过 GlusterFS 的挂载点访问数据;

  linux系统内**通过 VFS API 虚拟接口收到请求并处理;

  VFS 将数据递交给 FUSE 内核文件系统,这是一个伪文件系统,这个伪文件系统主要用来转存,它提供一个虚拟接口,映射出来/dev/fuse这样一个虚拟路径,而 FUSE 文件系统则是将数

据通过 /dev/fuse 设备文件递交给了 GlusterFS client 端。可以将 FUSE 文件系统理解为一个代理

  GlusterFS client 会实时监听/dev/fuse下的数据,一旦数据更新,会把数据拿过来,client 根据配置文件的配置对数据进行处理

  经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFS Server,server会先转存到本地的vfs虚拟文件系统中**,然后再通过vfs转存到EXT3上。EXT3指的是各个block

块中的EXT3文件系统中。

  4.GlusterFS卷类型

  1.分布式卷(Distribute volume)

  简单来说,就是如果有10个文件,如果不用分布式卷,这是个文件会放在一台服务器上,对于分布式而言,这是个文件是会分布在不同的服务器节点上进行保存。

  ①特点

  文件分布在不同的服务器,不具备冗余性更容易和廉价地扩展卷的大小单点故障会造成数据丢失以来低层的数据保护

  ②原理

  File1 和 File2 存放在 Server1,而 File3 存放在 Server2,文件都是随机存储,一个文件(如 File1)要么在 Server1 上,要么在 Server2 上,不能分块同时存放在 Server1和 Server2 上

  ③创建分布式卷

  创建一个名为dis-volume的分布式卷,文件将根据HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中gluster volume create dis-volume server1:/dir1 server2:/dir2

server3:/dir3

  2.条带卷 (Stripe volume)

类似 RAID0,文件被分成数据块并**以轮询的方式分布到多个 Brick Server 上**,文件存储以数据块为单位,支持大文件存储, 文件越大,读取效率越高,但是不具备冗余性

  ①原理

  File 被分割为 6 段,1、3、5 放在 Server1,2、4、6 放在 Server2

  ②特点

  根据偏移量将文件分成N块(N个条带点),轮询的存储在每个Brick Serve 节点.分布减少了负载,在存储大文件时,性能尤为突出.没有数据冗余,类似于Raid 0

  ③创建条带卷

  创建了一个名为stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中gluster volume create stripe-volume stripe 2 transport tcp

server1:/dir1 server2:/dir2

  3.复制卷(Replica volume)

  将文件同步到多个 Brick 上,比如说我有五个文件,这5个文件是一个整体,放在服务器A上,复制卷会帮我们复制一份复制在服务器B上。属于文件级 RAID 1,具有容错能力。因为数据

分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。但因为要保存副本,所以磁盘利用率较低

  ①原理

  File1 同时存在 Server1 和 Server2,File2 也是如此,相当于 Server2 中的文件是 Server1 中文件的副本

  ②特点

  卷中所有的服务器均保存一个完整的副本。具备冗余性.卷的副本数量可由客户创建的时候决定,但复制数必须等于卷中 Brick 所包含的存储服务器数。至少由两个块服务器或更多服务 

器。若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为改卷的总容量

  ③创建复制卷

  创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中gluster volume create rep-volume replica 2 transport tcp server1:/dir1

server2:/dir2

 4.分布式条带卷(Distribute Stripe volume)

  Brick Server 数量是条带数(数据块分布的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。 主要用于大文件访问处理,创建一个分布式条带卷最少需要 4 台服务器

  ①原理

  File1 和 File2 通过分布式卷的功能分别定位到Server1和 Server2。在 Server1 中,File1 被分割成 4 段,其中 1、3 在 Server1 中的 exp1 目录中,2、4 在 Server1 中的 exp2 目录

中。在 Server2 中,File2 也被分割成 4 段,其中 1、3 在 Server2 中的 exp3 目录中,2、4 在 Server2 中的 exp4 目录中

  ②创建分布式条带卷

  创建一个名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)。Brick 的数量是 4(Server1:/dir1、Server2:/dir2、

Server3:/dir3 和 Server4:/dir4),条带数为 2(stripe 2)gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复制卷;如果存储服务器的数量是条带或复制数的 2 倍甚至更多,那么将创建的是分布式条带卷或分布式复制

  5.分布式复制卷(Distribute Replica volume)

  分布式复制卷(Distribute Replica volume):Brick Server 数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点,主要用于需要冗余的情况下

  ①原理

  File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。在存放 File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是 Server1 中的exp1 目录和 Server2 中

的 exp2 目录。在存放 File2 时,File2 根据复制卷的特性,也将存在两个相同的副本,分别是 Server3 中的 exp3 目录和 Server4 中的 exp4 目录

  ②创建分布式复制卷

  建一个名为dis-rep的分布式复制卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)。Brick 的数量是 4(Server1:/dir1、Server2:/dir2、

Server3:/dir3 和 Server4:/dir4),复制数为 2(replica 2)gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

  6.条带复制卷(Stripe Replica volume)和分布式条带复制卷(Distribute Stripe Replicavolume)

  条带复制卷(Stripe Replica volume)类似 RAID 1 0,同时具有条带卷和复制卷的特点。

  7.分布式条带复制卷(Distribute Stripe Replicavolume)三种基本卷的复合卷,通常用于类 Map Reduce 应用

  5.部署GlusterFS集群

    5.1准备环境

node1服务器 192.168.224.100
node2服务器 192.168.224.101
node3服务器 192.168.224.102
node4服务器 192.168.224.103

    5.2配置

systemctl stop firewalld
setenforce 0
#关闭防火墙

./fdisk.sh
#执行脚本
df -h 
#查看分区

#添加临时域名地址
echo "192.168.224.100 node1" >> /etc/hosts
echo "192.168.224.101 node2" >> /etc/hosts
echo "192.168.224.102 node3" >> /etc/hosts
echo "192.168.224.103 node4" >> /etc/hosts
cat /etc/hosts
#查看

tar xf gfsrepo.zip.tar 
#解压gfs安装包
cd /etc/yum.repos.d
#切换到yum源目录
mkdir bak
#创建备份文件夹
mv *.repo bak
#将已有的源移到bak目录备份
vim glfs.repo
#创建本地源

[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enable=1

yum clean all && yum makecache
#清理元数据

yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
#安装gfs
systemctl start glusterd.service
#开启服务
systemctl enable glusterd.service
#开启开机自启
systemctl status glusterd.service
#查看服务状态

  6.创建卷

    6.1分布式卷

#创建分布式卷,没有指定类型,默认创建的是分布式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force	
 
#查看卷列表
gluster volume list
 
#启动新建分布式卷
gluster volume start dis-volume
 
#查看创建分布式卷信息
gluster volume info dis-volume

      6.2条带卷

gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
#指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷

gluster volume start stripe-volume       
#启动新建条带卷

gluster volume info stripe-volume
#查看创建条带卷信息

    6.3复制卷

#指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
 
#启动复制卷
gluster volume start rep-volume  
 
#查看复制卷信息     
gluster volume info rep-volume

       6.4分布式条带卷

gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume info dis-stripe

    6.5分布式复制卷

#指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
 
gluster volume start dis-rep
 
gluster volume info dis-rep

  7.部署客户端

安装客户端

cd /etc/yum.repos.d/
mkdir repo.bak               
mv * repo.bak/
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-fuse

mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
#创建挂载目录
echo "192.168.224.100 node1" >> /etc/hosts
echo "192.168.224.101 node2" >> /etc/hosts
echo "192.168.224.102 node3" >> /etc/hosts
echo "192.168.224.103 node4" >> /etc/hosts
#临时域名地址