GFS分布式文件

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


MFS(传统分布式文件系统)

传统的分布式文件系统大多通过源服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录是效率高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储昔日也将崩溃。而GlusterFS分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性及存储效率。

GlusterFS同时也是Scale-Out(横向扩展)存储解决方案Gluster的核心,在存储数据方面具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。

GlusterFS支持借助TCP/IP或InfiniBandRDMA网络(一种支持多并发连接的技术,具有高带宽、低时延、高扩展性的特点)将物理分散分布的存储资源汇聚在一起,统一提供存储服务,并使用统一全局命名空间来管理数据。

高可用性

GlusterrS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。

当数据出现不一致时,自我修复功能能够把数据恢复到正确的状态,数据的修复是以增量的万式在后台拆行,儿乎个会产生性能负载。

GlusterFS可以支持所有的存储,因为它没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统《如EXT3、XFS等)来存储文件,因此数据可以使用传统访问磁盘的方式被访问。

GlusterFS的工作流程

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

分布式卷

文件通过HASH算法分布到所有Brick Server上,这种卷是GFS的基础;文件没有被分片,直接根据HASH算法散列到不同的Brick,其实只是扩大了磁盘空间,并不具备容错能力,属于文件级RAID 0

示例原理:
File1和 File2存放在Server1,而 File3存放在Server2,文件都是随机存储,一个文件〈如 File1)要么在Server1上,要么在 Server2上,不能分块同时存放在Server1和 Server2上。

分布式卷具有如下特点:
1、文件分布在不同的服务器,不具备冗余性。更容易和廉价地扩展卷的大小。
2、单点故障会造成数据丢失。
3、单点故障会造成数据丢失。

准备实验环境

systemctl stop firewalld.service 
systemctl disable firewalld.service
setenforce 0

vim /opt/fdisk.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

chmod +x /opt/fdisk.sh
cd /opt/
./fdisk.sh

#以node1节点为例:
hostnamectl set-hostname node1
su

echo "192.168.121.15 node1" >> /etc/hosts
echo "192.168.121.16 node2" >> /etc/hosts
echo "192.168.121.17 node3" >> /etc/hosts
echo "192.168.121.18 node4" >> /etc/hosts

-----------安装、启动GlusterFS(所有node节点上操作)-------------------------
#将gfsrepo 软件上传到/opt目录下并解压本地
unzip gfsrepo.zip

[root@node1 opt]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# mkdir repo.bak	 '//创建备份目录'
[root@node1 yum.repos.d]# mv *.repo repo.bak	'//将所有文件移动到备份目录'
[root@node1 yum.repos.d]# vim glfs.repo 	'//编辑本地yumrepo文件'
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1

mount /dev/sr0 /mnt	'//将光盘挂载到/mnt'
yum clean all	'//清除yum缓存'
yum makecache	'//创建缓存数据'
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma	'//安装安装GLFS软件'
systemctl start glusterd.service	'//启动GLFS软件'
systemctl enable glusterd.service 	'//设置开机自启'
Created symlink from /etc/systemd/system/multi-user.target.wants/glusterd.service to /usr/lib/systemd/system/glusterd.service.

添加节点到存储信任池中(在 node1 节点上操作)
#只要在一台Node节点上添加其它节点即可
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4

#在每个Node节点上查看群集状态
gluster peer status


测试 Gluster 文件系统

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/rep/
cp demo* /test/dis_stripe/
cp demo* /test/dis_rep/


#查看分布式文件分布
[root@node1 ~]# ls -lh /data/sdb1					#数据没有被分片
总用量 160M
-rw-r--r-- 2 root root 40M 12 18 14:50 demo1.log
-rw-r--r-- 2 root root 40M 12 18 14:50 demo2.log
-rw-r--r-- 2 root root 40M 12 18 14:50 demo3.log
-rw-r--r-- 2 root root 40M 12 18 14:50 demo4.log
[root@node2 ~]# ll -h /data/sdb1
总用量 40M
-rw-r--r-- 2 root root 40M 12 18 14:50 demo5.log

#查看条带卷文件分布
[root@node1 ~]# ls -lh /data/sdc1					#数据被分片50% 没副本 没冗余
总用量 101M
-rw-r--r-- 2 root root 20M 12 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo4.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo5.log

[root@node2 ~]# ll -h /data/sdc1					#数据被分片50% 没副本 没冗余
总用量 101M
-rw-r--r-- 2 root root 20M 12 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo4.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo5.log

#查看复制卷分布
[root@node3 ~]# ll -h /data/sdb1					#数据没有被分片 有副本 有冗余     
总用量 201M
-rw-r--r-- 2 root root 40M 12 18 14:51 demo1.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo2.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo3.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo4.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo5.log

[root@node4 ~]# ll -h /data/sdb1					#数据没有被分片 有副本 有冗余
总用量 201M
-rw-r--r-- 2 root root 40M 12 18 14:51 demo1.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo2.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo3.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo4.log
-rw-r--r-- 2 root root 40M 12 18 14:51 demo5.log

#查看分布式条带卷分布
[root@node1 ~]# ll -h /data/sdd1					#数据被分片50% 没副本 没冗余
总用量 81M
-rw-r--r-- 2 root root 20M 12 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo4.log

[root@node2 ~]# ll -h /data/sdd1
总用量 81M
-rw-r--r-- 2 root root 20M 12 18 14:51 demo1.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo2.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo3.log
-rw-r--r-- 2 root root 20M 12 18 14:51 demo4.log

[root@node3 ~]# ll -h /data/sdd1
总用量 21M
-rw-r--r-- 2 root root 20M 12 18 14:51 demo5.log

[root@node4 ~]# ll -h /data/sdd1
总用量 21M
-rw-r--r-- 2 root root 20M 12 18 14:51 demo5.log

#查看分布式复制卷分布						#数据没有被分片 有副本 有冗余
[root@node1 ~]# ll -h /data/sde1
总用量 161M
-rw-r--r-- 2 root root 40M 12 18 14:52 demo1.log
-rw-r--r-- 2 root root 40M 12 18 14:52 demo2.log
-rw-r--r-- 2 root root 40M 12 18 14:52 demo3.log
-rw-r--r-- 2 root root 40M 12 18 14:52 demo4.log

[root@node2 ~]# ll -h /data/sde1
总用量 161M
-rw-r--r-- 2 root root 40M 12 18 14:52 demo1.log
-rw-r--r-- 2 root root 40M 12 18 14:52 demo2.log
-rw-r--r-- 2 root root 40M 12 18 14:52 demo3.log
-rw-r--r-- 2 root root 40M 12 18 14:52 demo4.log

[root@node3 ~]# ll -h /data/sde1
总用量 41M
-rw-r--r-- 2 root root 40M 12 18 14:52 demo5.log
[root@node3 ~]# 

[root@node4 ~]# ll -h /data/sde1
总用量 41M
-rw-r--r-- 2 root root 40M 12 18 14:52 demo5.log


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值