gfs分布式文件系统

本文详细介绍了开源分布式文件系统GlusterFS,包括其特性、工作流程和卷的分类。通过实例展示了如何创建分布式、条带、复制、分布式条带和分布式复制卷,并在客户端进行挂载和数据操作。实验过程涵盖了磁盘分区、挂载、服务端和客户端的设置,以及不同卷类型的文件分布和备份机制。
摘要由CSDN通过智能技术生成

GlusterFSt简介

用于存储、管理物理文件(保存磁盘时使用)
开源的分布式文件系统,GFS的组成:由存储服务器(比如块服务器block)、客户端(对象)以及NFS/Samba存储网关组成(接口),三个部分,无元数据的服务器。

GlusterFS特点

扩展性和高性能:分布式特点
高可用性:分布式特点
全局统一命名空间:共享资源(名称空间:隔离、独立的整体/环境,与其他名称空间是隔离独立的)
弹性卷管理:条带、复制、分布式、分布式条带、分布式复制;类似raid

GFS工作流程

写入过程:
gfs客户端将数据保存在GFS文件系统中(客户端在本地发出写请求),交由VFS的API接受请求,将数据交给FUSE(内核伪文件系统),FUSE对文件系统进行转存,转存的设备位置为: /dev/fuse,/dev/fuse 虚拟设备文件将数据交给GFS客户端,GFS客户端client会根据配置文件对数据进行处理,然后再通过网络发送到GFS服务端。
GFS服务端服务器接收到数据之后,会将数据保存在对应的存储节点上。
读取过程:
客户端在本地发出读请求,交由VFS的API接受请求,将数据交给FUSE(内核伪文件系统),FUSE在/dev/fuse 查询缓存,执行page函数读取内存,若缓存有,则返回客户端。若没有缓存,GFS客户端会去GFS服务端获取数据,GFS服务端通过VFS接口去本地读取缓存,再把缓存存储在/dev/fuse,读取了缓存数据之后再通过VFS返回给客户端。

卷的基本分类

为了解决分布式文件数据索引、定位的复杂程度,而使用了HASH算法来辅助
分布式的好处:
当数据量越来越大的时候,相对每个存储节点的数据量是相等的
而如果考虑到单点故障问题,当数据存储再c存储节点,对此GFS是会有备份机制的,默认3备份,所以GFS本身的机制会对数据产生冗余,以此解决单点故障
GlusterFS支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷和分布式条带复制卷。

gfs实验

使用脚本对磁盘进行分区挂载

vim /opt/fdisk.sh
	#!/bin/bash
	echo "the disks exist list:"
	fdisk -l |grep '磁盘 /dev/sd[a-z]'    
	echo "=================================================="
	PS3="chose which disk you want to create:"
	select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit   
	do
   	 case $VAR in
   	 sda)
     	   fdisk -l /dev/sda   
     	   break ;;
  	  sd[b-z])
    	    #create partitions
       	 echo "n    	#创建磁盘
          	      p
        	        
                
           
           	     w"  | fdisk /dev/$VAR
 
        	#make filesystem
      	  mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null    	#进行格式化
		#mount the system
      	  mkdir -p /data/${VAR}"1" &> /dev/null
        	echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab	#永久挂载
     	   mount -a &> /dev/null	#使得挂载生效
      	  break ;;
    	quit)
     	   break;;
  	  *)
       	 echo "wrong disk,please check again";;
   	 esac
	done
chmod +x /opt/fdisk.sh
cd /opt/
sh -x fdisk.sh

搭建gfs

进入hosts文件添加地址映射
vim /etc/hosts
192.168.218.214 node1
192.168.218.215 node2
192.168.218.100 node3
192.168.218.150 node4
192.168.218.200 client


配置gfsyum源
cd /etc/yum.repos.d/
mkdir bak
mv CentOS-* bak
vim gfs.repo		#配置yum本地源
	[glfs]
	name=glfs		#名称
	baseurl=file:///opt/gfsrepo		#地址指向
	gpgcheck=0
	enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma		#安装gluster
systemctl start glusterd		#开启gluster服务

创建分布式卷

#创建分布式卷
[root@node1 ~]# gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
volume create: dis-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume list  #查看卷列表
dis-volume
[root@node1 ~]# gluster volume start dis-volume  #启动分布式卷
volume start: dis-volume: success

创建条带卷

[root@node1 ~]# gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume start stripe-volume  #启动条带卷
volume start: stripe-volume: success

创建复制卷

[root@node1 ~]# gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume start rep-volume  #启动复制卷
volume start: rep-volume: success

创建分布式条带卷

[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: dis-stripe: success: please start the volume to access data
[root@node1 ~]# gluster volume start dis-stripe  #启动新建分布式条带卷
volume start: dis-stripe: succes

创建分布式复制卷

[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node1 ~]# gluster volume start dis-rep  #启动新建分布式复制卷
volume start: dis-rep: success

搭建gfs客户端

根据上面的配置,搭建好gfs服务,在hosts文件中添加域名映射后进行挂载

[root@client ~]# mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
#临时挂载,永久挂载需要在配置文件里写入
[root@client ~]# mount.glusterfs node1:dis-volume /test/dis
[root@client ~]# mount.glusterfs node1:stripe-volume /test/stripe
[root@client ~]# mount.glusterfs node1:rep-volume /test/rep
[root@client ~]# mount.glusterfs node1:dis-stripe /test/dis_stripe
[root@client ~]# mount.glusterfs node1:dis-rep /test/dis_rep

#从/dev/zero文件中拿出数据,每次拿1M,一共20次,放入/opt/下的各个文件中
[root@client opt]# dd if=/dev/zero of=/opt/demo1.log bs=1M count=20
[root@client opt]# dd if=/dev/zero of=/opt/demo2.log bs=1M count=20
[root@client opt]# dd if=/dev/zero of=/opt/demo3.log bs=1M count=20
[root@client opt]# dd if=/dev/zero of=/opt/demo4.log bs=1M count=20
[root@client opt]# dd if=/dev/zero of=/opt/demo5.log bs=1M count=20

查看分布式卷的文件分布,发现node1只有4个文件,另一个文件在node2上
在这里插入图片描述
查看条带卷的文件分布,发现5个文件都在,但是大小少了一半,另一半在node2上
在这里插入图片描述
查看复制卷的文件分布,发现5个文件都在,且大小都为20m,在node4中查找,发现另一份文件副本
在这里插入图片描述
查看分布式条带卷的文件分布,可以发现5个文件先进行分布式再进行分片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看分布式复制卷的文件分布,可以看到先分布式存放再进行复制副本
在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值