glusterfs:优秀开源分布式存储系统(代码片段)

遙遙背影暖暖流星 遙遙背影暖暖流星     2022-12-25     344

关键词:

一、GlusterFS简介

1、什么是glusterfs

Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过Infiniband RDMA 或Tcp/Ip 方式将许多廉价的x86 主机,通过网络互联成一个并行的网络文件系统。具有可扩展性、高性能、高可用性等特点。

2、GlusterFS特点

扩展性和高性能
高可用性
全局统一命名空间
弹性卷管理
基于标准协议

3、 GlusterFS术语

Brick :存储服务器节点
Volume :卷
FUSE :内核伪文件系统)
VFS:(虚拟端口):内核态的虚拟文件系统,用户是先提交请求交给VFS 然后VFS交给FUSE再交给GFS客户端,最后由客户端交给远端的存储
Glusterd:是运行在存储节点的进程

4、 模块化堆栈式架构

模块化、堆栈式的架构
通过对模块的组合,实现复杂的功能

二、GlusterFS工作原理

1 GlusterFS工作流程

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返回给客户端。

2 弹性HASH算法

通过HASH算法得到一个32位的整数
HASH值有一个特性,数据唯一性
划分为N个连续的子空间,每个空间对应一个Brick

3 弹性HASH算法的优点

保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

4、卷的类型

GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、 条带复制卷和分布式条带复制卷

4.1 分布式卷(默认)

分布式卷(默认):文件通过 HASH 算法分布到所有 Brick Server 上, 这种卷是 Glusterfs 的基础;以文件为单位根据 HASH 算法散列到不同的 Brick,其实 只是扩大了磁盘空间,如果有一块磁盘损分布式卷也成为哈希卷,多个文件以文件为单位在多个brick上,使用哈希算法随机存储。

应用场景:大量小文件

优点:读/写性能好

缺点:如果存储或服务器故障,该brick上的数据将丢失

不指定卷类型,默认是分布式卷

gluster volume create 卷名 节点1@文件系统 节点2@文件系统 …

2、条带卷

根据偏移量将文件分为 N 块(N个条带节点),轮询的存储在每个 Brick Server 节点;
存储大文件时,性能尤为突出;
不具备冗余性,类似 raid0

条带卷特点
数据被分割成更小块分布到块服务器群中的不同条带区
分布减少了负载且更小的文件加速了存取的速度
没有数据冗余

创建条带卷的命令格式:
gluster volume create 卷名 stripe 条带数 节点1@文件系统 节点2@文件系统 ……

3、复制卷

复制卷(Replica volume):将文件同步到多个 Brick 上,使其具备多个文件副本, 属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得 到很大提升,但写性能下降。

同一文件保存一份或多分副本
因为要保存副本,所以磁盘利用率较低
若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量

复制卷特点
卷中所有的服务器均保存一个完整的副本
卷的副本数量可由客户创建的时候决定
至少有两个块服务器或更多服务器
具备冗余性

创建复制卷的命令格式:
gluster volume create 卷名 replica 2 transport tcp 节点1@文件系统 节点2@文件系统 ……

4、分布式条带卷

分布式条带卷(Distribute Stripe volume):Brick Server 数量是条带数(数据块分布 的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。

兼顾分布式卷和条带卷的功能
主要用于大文件访问处理
至少最少需要4台服务器

gluster volume create 卷名 stripe 2 transport tcp 节点1@文件系统 节点2@文件系统 节点3@文件系统 节点4@文件系统 …………

5、分布式复制卷

分布式复制卷(Distribute Replica volume):Brick Server 数量是镜像数(数据副本 数量)的倍数,兼具分布式卷和复制卷的特点

兼顾分布式卷和复制卷的功能
用于需要冗余的情况

创建分布式复制卷的命令格式:
gluster volume create 卷名 replica 2 transport tcp 节点1@文件系统 节点2@文件系统 节点3@文件系统 节点4@文件系统 ……

注意,创建分布式条带卷,服务器数目是条带数的倍数(至少两倍)

6、条带复制卷

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

7、分布式条带复制卷

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

实验部分

文献:https://blog.csdn.net/weixin_48190863/article/details/119576751?spm=1001.2014.3001.5501

Node1节点: node1/192.168.100.6   磁盘:/dev/sdb1   挂载点:/data/sdb1
                                      
Node2节点:node2/192.168.100.7     磁盘:/dev/sdb1   挂载点:/data/sdb1
                                     
Node3节点: node3/192.168.100.8   磁盘:/dev/sdb1   挂载点:/data/sdb1
                                     
Node4节点: node3/192.168.100.9    磁盘:/dev/sdb1   挂载点:/data/sdb1
                                     
客户端节点:192.168.100.5

1、四个节点新增磁盘,利用脚本进行格式化、挂载

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

2、所有服务器添加映射

echo "192.168.100.6 node1" >> /etc/hosts
echo "192.168.100.7 node2" >> /etc/hosts
echo "192.168.100.8 node3" >> /etc/hosts
echo "192.168.100.9 node4" >> /etc/hosts
echo "192.168.100.5 client" >> /etc/hosts


3、4个全都node节点上安装、启动GlusterFS

#将gfsrepo 软件上传到/opt目录下

cd /opt
unzip gfsrepo.zip
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak


vim /etc/yum.repos.d/glfs.repo

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

yum clean all && yum makecache

安装

#yum -y install centos-release-gluster			#如采用官方 YUM 源安装,可以直接指向互联网仓库
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

如果出现报错

解决方法,卸载高版本,重新安装

rpm -e --nodeps glusterfs-api 
rpm -e --nodeps glusterfs-libs 
rpm -e --nodeps glusterfs-fuse 
rpm -e --nodeps glusterfs-cli
yum -y install glusterfs-client-xlators.x86_64 
yum -y install glusterfs-api.x86_64 
yum install -y  glusterfs-cli
如果还有其他软件包版本过高,直接卸载,重新安装即可

systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service

ntpdate ntp1.aliyun.com

#只要在一台Node节点上添加其它节点即可

gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4

gluster peer status

glusterfs分布式文件系统概述(代码片段)

...GlusterFS的工作流程2、弹性HASH算法三、GlusterFS的卷类型1、分布式卷2、条带卷3、复制卷4、分布式条带卷5、分布式复制卷一、GlusterFS概述GlusterFS是一个开源的分布式文件系统,同时也是Scale-Out存储解决方案Gluster的核心,在存储数... 查看详情

glusterfs-----文件分布系统+集群部署(代码片段)

一、Gluster概述1.1、gluster简介Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储.Glusterfs通过TCP... 查看详情

glusterfs-----文件分布系统+集群部署(代码片段)

一、Gluster概述1.1、gluster简介Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储.Glusterfs通过TCP... 查看详情

glusterfs简介(代码片段)

...lusterFS简介GlusterFS概述GlusterFS(GlusterFileSystem)是一个开源的分布式文件系统,主要由ZRESEARCH公司负责开发。GlusterFS是Scale-Out存储解决方案Gluster的核心,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。... 查看详情

glusterfs分布式存储

...简介glusterfs部署 一、glusterfs简介Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端。是整合了许多存储块(server)通过InfinibandRDMA或者 Tcp/Ip方式互联的一个并行的网络文件系统。  ... 查看详情

glusterfs分布式文件系统(代码片段)

简介Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端。是整合了许多存储块(server)通过InfinibandRDMA或者 Tcp/Ip方式互联的一个并行的网络文件系统。  特征:容量可以按比例的扩展,... 查看详情

分布式文件系统---glusterfs介绍

...terFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使... 查看详情

glusterfs简单介绍

...手,低坑模式,深受我这种菜鸟的喜爱并一发不可收拾。glusterFS:适用于数据密集型任务的可扩展忘了文件系统,免费开源。gluster于2011年10月7日被redhat收 查看详情

分布式文件存储——glusterfs

一、概论1.简介GlusterFS(GlusterFileSystem)是一个开源的分布式文件系统,主要由ZRESEARCH公司负责开发。GlusterFS是Scale-Out存储解决方案Gluster的核心,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS... 查看详情

56.glusterfs分布式文件系统

GlusterFS分布式文件系统GlusterFS是一个开源的分布式文件系统,软件的结构设计良好,易于扩展和配置,通过各个模块的灵活搭配得到针对性的解决方案。可解决一下问题:网络存储,联合存储,冗余备份,大文件的负载均衡。可... 查看详情

分布式文件系统--------glusterfs最佳实战

1.背景   GlusterFS是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA(一种支持多并发链接的“转换线缆”技术)网络将物理分布的... 查看详情

38掌握分布式存储系统glusterfs的基本用法,包括卷管理数据复制(代码片段)

GlusterFS是一种分布式文件系统,可以将多个存储服务器集成为一个分布式存储池。以下是一些基本的使用方法和示例代码。安装和启动GlusterFS在所有节点上安装GlusterFS,并确保每个节点上的GlusterFS服务已经启动。创建Glust... 查看详情

glusterfs分布式文件系统部署

...terFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使... 查看详情

glusterfs分布式文件系统(代码片段)

GlusterFS分布式文件系统,用于存储、管理磁盘文件文件系统(FS)文件系统组成1、文件系统接口2、对对像管理的软件集合3、对象及属性文件系统作用从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配... 查看详情

为glusterfs设计新的xlator(编译及调用过程分析)(代码片段)

GlusterFS是一个开源的网络分布式文件系统,前一阵子看了一点GlusterFS(Gluster)的代码,修改了部分代码,具体是增加了一个定制的xlator,简单记录一下。Gluster与xlator随着计算机技术的发展,不管哪一个领域的数据都呈现出爆炸性... 查看详情

glusterfs存储结构原理介绍(代码片段)

分布式文件系统分布式文件系统(DistributedFileSystem)是指文件系统管理的物理存储资源并不直接与本地节点相连,而是分布于计算网络中的一个或者多个节点的计算机上。目前意义上的分布式文件系统大多都是由多个节点计算机... 查看详情

gfs分布式文件系统集群(理论篇)(代码片段)

GlusterFS概述GlusterFS简介开源的分布式文件系统由存储服务器,客户端以及NFS/Samba存储网关组成无元数据服务器GlusterFS的特点扩展性和高性能高可用性全局统一的命名空间弹性卷管理基于标准协议GlusterFS术语Brick:存储节点Volume:... 查看详情

glusterfs分布式存储系统(代码片段)

GlusterFS分布式存储系统一,分布式文件系统理论基础1.1分布式文件系统出现计算机通过文件系统管理,存储数据,而现在数据信息爆炸的时代中人们可以获取的数据成指数倍的增长,单纯通过增加硬盘个数来扩展计算机文件系统... 查看详情