GFS分布式文件系统 + 实验部署

人生难得几回搏,此时不搏待何时。这篇文章主要讲述GFS分布式文件系统 + 实验部署相关的知识,希望能为你提供帮助。
GlusterFS简介
GlusterFS是一个开源的分布式文件系统。
由存储服务器、客户端以及NFS/Samba存储网关(可选,根据需要选择使用)组成。
没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。
MFS
传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率
高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃。GlusterFS分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性及存储效率。GlusterFS同时也是Scale-Out (横向扩展)存储解决方案Gluster的核心,在存储数据方而具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。
GlusterFS支持借助TCP/IP或InfiniBandRDMA网络(一种支持多并发链接的技术,具有高带宽、低时延、高扩展性的特点)将物理分散分布的存储资源汇聚在一起,统一提供 存储服务,并使用统一全局命名空间来管理数据。
GlusterFS特点
●扩展性和高性能
GlusterFS利用双重特性来提供高容量存储解决方案。
(1)Scale-Out架构允许通过简单地增加存储节点的方式来提高存储容量和性能(磁盘、计算和I/0资源都可以独立增加),支持10GbE和InfiniBand等高速网络互联。
(2) Gluster弹性哈希(ElasticHash) 解决了GlusterFS对元数据服务器的依赖,改善了单点故障和性能瓶颈,真正实现了并行化数据访问。GlusterFS采用弹性哈希算法在存储池中可以智能地定位任意数据分片(将数据分片存储在不同节点上),不需要查看索引或者向元数据服务器查询。
【GFS分布式文件系统 + 实验部署】●高可用性
GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。当数据出现不一致时,自我修复功能能够把数据恢复到正确的状态,数据的修复是以增量的方式在后台执行,几乎不会产生性能负载。GlusterFS可以支持所有的存储,因为它没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、XFS等)来存储文件,因此数据可以使用传统访问磁盘的方式被访问。
●全局统一命名空间
分布式存储中,将所有节点的命名空间整合为统一命名空间,将整个系统的所有节点的存储容量组成--个大的虛拟存储池,供前端主机访
问这些节点完成数据读写操作。
●弹性卷管理
GlusterFS通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分而得到。
逻辑存储池可以在线进行增加和移除,不会导致业务中断。逻辑卷可以根据需求在线增长和缩减,并可以在多个节点中实现负载均衡。文件系统配置也可以实时在线进行更改并应用,从而可以适应工作负载条件变化或在线性能调优。
GlusterFS 术语
●Brick (存储块) :
指可信主机池中由主机提供的用于物理存储的专用分区,是GlusterFS中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。
存储目录的格式由服务器和目录的绝对路径构成,表示方法为SERVER:EXPORT, 如192. 168.80.10: /data/mydir/.
●Volume (逻辑卷) :
一个逻辑卷是一 -组Brick 的集合。卷是数据存储的逻辑设备,类似于LVM中的逻辑卷。大部分Gluster 管理操作是在卷上进行的。
●FUSE:
是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码。
●VFS:
内核空间对用户空间提供的访问磁盘的接口。
●Glusterd (后台管理进程) :
在存储群集中的每个节点上都要运行。
GFS支持的其中卷格式
1、分布式卷(默认):文件通过HASH算法分布到所有Brick Server上,这种卷是GFS的基础;以文件为单位根据HASH算法散列到不同的Brick,其实只是扩大了磁盘空间,并不具备容错能力,属于文件级RAID 0
2、条带卷(默认):类似RAID 0,文件被分成数据库并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高
3、复制卷:将文件同步到多个Brick上,使其具备多个文件副本,属于文件级RAID 1,具有容错能力。因为数据分散在多个Brick中,所以读性能得到很大提升,但写性能下降
4、分布式条带卷:Brick Server数量是条带数(数据块分布的Brick数量)的倍数,兼具分布式卷和条带的特点
5、分布式复制卷:Brick Server数量是镜像数(数据副本 数量)的倍数,兼具分布式卷和复制卷的特点
6、条带复制卷:类似RAID 10,同时具有条带卷和复制卷的特点
7、分布式条带复制卷:三种基本卷的复合卷通常用于类Map Reduce应用
实验: 部署GFS 集群
关闭所有防火墙、配置好yum
node01 :192.168.206.101
node02:192.168.206.100
node03:192.168.206.13
node04:192.168.206.12
每台节点添加四块磁盘,无需太大

GFS分布式文件系统 + 实验部署

文章图片

GFS分布式文件系统 + 实验部署

文章图片
GFS分布式文件系统 + 实验部署

文章图片
GFS分布式文件系统 + 实验部署

文章图片

```html/xml
首先是更改所有节点名称,以方便识别(临时改名)
hostname node1、2、3、4
hostnamectl set-hostname 名字#永久改名
su -#切换下环境
就展示node1节点怎么改名了 ![2.png](https://s2.51cto.com/images/20220228/1646036797651443.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)```html/xml 下面是所有阶段都进行磁盘的挂载,配置本地源vim /opt/fenqu.sh#制作免交互分区脚本 ................................ #!/bin/bash NEWDEV=`ls /dev/sd* | grep -o sd[b-z] | uniq` for VAR in $NEWDEV do echo -e "n\\np\\n\\n\\n\\nw\\n" | fdisk /dev/$VAR & > /dev/null mkfs.xfs /dev/$VAR"1" & > /dev/null mkdir -p /data/$VAR"1" & > /dev/null echo "/dev/$VAR"1" /data/$VAR"1" xfs defaults 0 0" > > /etc/fstab done mount -a & > /dev/null............................... cd /opt chmod +x fenqu.sh#赋权 ./fenqu.sh#执行#添加host文件 echo "192.168.206.100 node2" > > /etc/hosts echo "192.168.206.101 node1" > > /etc/hosts echo "192.168.206.12 node4" > > /etc/hosts echo "192.168.206.13 node3" > > /etc/hosts#下面是去/opt下传gfsrepo.zip 进去,然后解压安装 cd /opt #winscp传文件 unzip gfsrepo.zip#解压zip 然后是cd /etc/yum.repos.d/#去配置yum来本地安装gfsrepo,联网会非常慢 vim local.repo ................................. [glfs] name=glfs #baseurl=file:///mnt#注释本地 baseurl=file:///opt/gfsrepo#文件改成opt下的gfsrepo enabled=1 gpgcheck=0 ....................... yum clean all & & yum makecacheyum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma#安装gfsrepo相关东西 systemctl start glusterd#开启服务

截图以node1为例,其他3台同理安装
先把zip文件传给opt
GFS分布式文件系统 + 实验部署

文章图片

配置好yum仓库然后进行配置
GFS分布式文件系统 + 实验部署

文章图片

GFS分布式文件系统 + 实验部署

文章图片

安装glfsrepo相关组件
GFS分布式文件系统 + 实验部署

文章图片

开启glusterd.service 服务,然后查看下状态是否开启
GFS分布式文件系统 + 实验部署

文章图片

```html/xml
添加节点创建集群
此步骤只需要在一个节点上做就行,我坐在node2上面
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
gluster peer status#查看存储信任池的状态
ps:一个节点做好信任池后,一定要在所有节点查看下状态,如果某个节点显示没连接,
请重新添加host文件,然后systemctl restart glusterd 服务,基本就解决问题了
![4.png](https://s2.51cto.com/images/20220228/1646039233176798.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)```html/xml 根据规划创建卷卷名称卷类型Brick dis-volume分布式卷node1(/data/sdb1)、node2(/data/sdb1) stripe-volume条带卷node1(/data/sdc1)、node2(/data/sdc1) rep-volume复制卷node3(/data/sdb1)、node4(/data/sdb1) dis-stripe分布式条带卷node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1) dis-rep分布式复制卷node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)#首先是创建分布式卷,只要在node1上面进行安装就可以了(由于gluster的存在,所以说只需要在一个节点上安装即可) gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force #后面带force是指的是强制执行gluster volume listdis-volumegluster volume start dis-volumegluster volume info dis-volume

GFS分布式文件系统 + 实验部署

文章图片

```html/xml
第二部是创建创建条带卷(node1或者node2上面做一次就行了)
#指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷
gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force#后面带force是指的是强制执行
gluster volume start stripe-volume
gluster volume info stripe-volume
![6.png](https://s2.51cto.com/images/20220228/1646040887879057.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)```html/xml 创建复制卷(只需要在node3或者node4中随便真找一个做一个就行了) #指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force #后面带force是指的是强制执行gluster volume start rep-volumegluster volume info rep-volume

GFS分布式文件系统 + 实验部署

文章图片

```html/xml
创建分布式条带卷(1-4随便一个节点可以完成一次就可以了)
#指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
#后面带force是指的是强制执行
gluster volume start dis-stripe
gluster volume info dis-stripe
![8.png](https://s2.51cto.com/images/20220228/1646041431494535.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)```html/xml 创建分布式复制卷(1-4随便一个建点创建一个就行了) 指定类型为 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 forcegluster volume start dis-repgluster volume info dis-rep gluster volume list

GFS分布式文件系统 + 实验部署

文章图片

```html/xml
部署gluster客户端 新开一个机器(192.168.206.3,新开的一台客户端机器)
#添加host文件
echo " 192.168.206.100 node2" > > /etc/hosts
echo " 192.168.206.101 node1" > > /etc/hosts
echo " 192.168.206.12 node4" > > /etc/hosts
echo " 192.168.206.13 node3" > > /etc/hosts
#下面是去/opt下传gfsrepo.zip 进去,然后解压安装
cd /opt
#winscp传文件
unzip gfsrepo.zip#解压zip
然后是cd /etc/yum.repos.d/#去配置yum来本地安装gfsrepo,联网会非常慢
vim local.repo
.................................
[glfs]
name=glfs
#baseurl=file:///mnt#注释本地
baseurl=file:///opt/gfsrepo#文件改成opt下的gfsrepo
enabled=1
gpgcheck=0
.......................
yum clean all & & yum makecache
yum -y install glusterfs glusterfs-fuse#安装gfsrepo相关东西
mkdir -p /test/dis,stripe,rep,dis_stripe,dis_rep #创建卷轴话文件
cd /test/
mount.glusterfs node1:dis-volume /test/dis
mount.glusterfs node1:stripe-volume /test/stripe
mount.glusterfs node1:rep-volume /test/rep
mount.glusterfs node1:dis-stripe /test/dis_stripe
mount.glusterfs node1:dis-rep /test/dis_rep
df -h#查看挂载的情况
cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
dd if=/dev/zero of=/opt/demo5.log bs=1M count=40
ls -lh /opt
cp demo /test/dis
cp demo
/test/stripe/
cp demo /test/stripe/
cp demo
/test/stripe/
cp demo* /test/dis_rep/
cd /test/
tree
![10.png](https://s2.51cto.com/images/20220228/1646042903635463.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![10.1.png](https://s2.51cto.com/images/20220228/1646042905494107.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ![10.2.png](https://s2.51cto.com/images/20220228/1646042908893044.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)```html/xml 检测:查看文件分布(node1、inode2) ls -lh /data/sdb1 ll -h /data/sdb1

GFS分布式文件系统 + 实验部署

文章图片

```html/xml
查看条带卷文件分布 (inode1、inode2)
ls -lh /data/sdc1
ll -h /data/sdc1
![11.1.png](https://s2.51cto.com/images/20220228/1646043145578477.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)```html/xml 查看复制卷文件分布(inode3、inode4) ll -h /data/sdb1 ll -h /data/sdb1

```html/xml
查看分布式条带卷分布(1-4都看下)
ll -h /data/sdd1
```html/xml 查看分布式复制卷分布(1-4) ll -h /data/sde1

```html/xml
冗余测试
分布式卷数据查看,缺少demo5,这是在node2上的,不具备冗余
挂起 node2 节点或者关闭glusterd服务来模拟故障
init 0 #我选择inode2直接关机
![12.png](https://s2.51cto.com/images/20220228/1646043373303373.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)```html/xml 客户端206.3查看文件是否正常 ll /test/disll /test/stripe/ #条带卷,无法访问,不具备冗余init 0#inode4关闭 ll /test/rep/#客户端这边进行操作 #复制卷,在node3和node4上的,关闭node4进行测试,具有冗余ll /test/dis_stripe/ #分布式条带卷,不具备冗余ll /test/dis_rep/ #分布式复制卷,具有冗余 ##综上,带有复制数据的,数据都比较安全

可以查看。在客户端看到全部都是正常的
GFS分布式文件系统 + 实验部署

文章图片

条带卷,无法访问,不具备冗余
GFS分布式文件系统 + 实验部署

文章图片

补充:其他维护命令```html/xml
1.查看GlusterFS卷
gluster volume list
2.查看所有卷的信息
gluster volume info
3.查看所有卷的状态
gluster volume status
4.停止一个卷
gluster volume stop dis-stripe
5.删除一个卷,注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功
gluster volume delete dis-stripe
6.设置卷的访问控制
#仅拒绝
gluster volume set dis-rep auth.allow 192.168.184.100
#仅允许
gluster volume set dis-rep auth.allow 192.168.184.*#设置192.168.184.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)


    推荐阅读