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

liujunjun liujunjun     2023-04-28     748

关键词:

分布式文件系统
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源并不直接与本地节点相连,而是分布于计算网络中的一个或者多个节点的计算机上。目前意义上的分布式文件系统大多都是由多个节点计算机构成,结构上是典型的客户机/服务器模式。流行的模式是当客户机需要存储数据时,服务器指引其将数据分散的存储到多个存储节点上,以提供更快的速度,更大的容量及更好的冗余特性。
目前流行的分布式文件系统有许多,如MooseFS、OpenAFS、GoogleFS,具体实现原理我这里不再介绍

一、GlusterFS概述

GlusterFS系统是一个可扩展的网络文件系统,相比其他分布式文件系统,GlusterFS具有高扩展性、高可用性、高性能、可横向扩展等特点,并且其没有元数据服务器的设计,让整个服务没有单点故障的隐患。
术语:
Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如‘SERVER:EXPORT‘
Client:挂载了GFS卷的设备
Extended Attributes:xattr是一个文件系统的特性,其支持用户或程序关联文件/目录和元数据。
FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
Geo-Replication
GFID:GFS卷中的每个文件或目录都有一个唯一的128位的数据相关联,其用于模拟inode
Namespace:每个Gluster卷都导出单个ns作为POSIX的挂载点
Node:一个拥有若干brick的设备
RDMA:远程直接内存访问,支持不通过双方的OS进行直接内存访问。
RRDNS:round robin DNS是一种通过DNS轮转返回不同的设备以进行负载均衡的方法
Self-heal:用于后台运行检测复本卷中文件和目录的不一致性并解决这些不一致。
Split-brain:脑裂
Translator:
Volfile:glusterfs进程的配置文件,通常位于/var/lib/glusterd/vols/volname
Volume:一组bricks的逻辑集合

1、无元数据设计

元数据是用来描述一个文件或给定区块在分布式文件系统中所在的位置,简而言之就是某个文件或某个区块存储的位置。传统分布式文件系统大都会设置元数据服务器或者功能相近的管理服务器,主要作用就是用来管理文件与数据区块之间的存储位置关系。相较其他分布式文件系统而言,GlusterFS并没有集中或者分布式的元数据的概念,取而代之的是弹性哈希算法。集群中的任何服务器和客户端都可以利用哈希算法、路径及文件名进行计算,就可以对数据进行定位,并执行读写访问操作。
这种设计带来的好处是极大的提高了扩展性,同时也提高了系统的性能和可靠性;另一显著的特点是如果给定确定的文件名,查找文件位置会非常快。但是如果要列出文件或者目录,性能会大幅下降,因为列出文件或者目录时,需要查询所在节点并对各节点中的信息进行聚合。此时有元数据服务的分布式文件系统的查询效率反而会提高许多。

2、服务器间的部署

在之前的版本中服务器间的关系是对等的,也就是说每个节点服务器都掌握了集群的配置信息,这样做的好处是每个节点度拥有节点的配置信息,高度自治,所有信息都可以在本地查询。每个节点的信息更新都会向其他节点通告,保证节点间信息的一致性。但如果集群规模较大,节点众多时,信息同步的效率就会下降,节点信息的非一致性概率就会大大提高。因此GlusterFS未来的版本有向集中式管理变化的趋势。

3、客户端访问流程

技术图片

 当客户端访问GlusterFS存储时,首先程序通过访问挂载点的形式读写数据,对于用户和程序而言,集群文件系统是透明的,用户和程序根本感觉不到文件系统是本地还是在远程服务器上。读写操作将会被交给VFS(Virtual File System)来处理,VFS会将请求交给FUSE内核模块,而FUSE又会通过设备/dev/fuse将数据交给GlusterFS Client。最后经过GlusterFS Client的计算,并最终经过网络将请求或数据发送到GlusterFS Server上。

二、GlusterFS集群的模式

GlusterFS 集群的模式只数据在集群中的存放结构,类似于磁盘阵列中的级别。

1、分布式卷(Distributed Volume)

又称哈希卷,近似于RAID0,文件没有分片,文件根据hash算法写入各个节点的硬盘上,优点是容量大,缺点是没冗余。

gluster volume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

技术图片

2、复制卷(Replicated Volume)

相当于raid1,复制的份数,决定集群的大小,通常与分布式卷或者条带卷组合使用,解决前两种存储卷的冗余缺陷。缺点是磁盘利用率低。
复本卷在创建时可指定复本的数量,通常为2或者3,复本在存储时会在卷的不同brick上,因此有几个复本就必须提供至少多个brick,当其中一台服务器失效后,可以从另一台服务器读取数据,因此复制GlusterFS卷提高了数据可靠性的同事,还提供了数据冗余的功能

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2

技术图片

3、分布式复制卷(Distributed Replicated Volume)

分布式复制GlusterFS卷结合了分布式和复制Gluster卷的特点,看起来类似RAID10,但其实不同,RAID10其实质是条带化,但分布式复制GlusterFS卷则没有。

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

技术图片

4、条带卷(Striped Volume)

相当于raid0,文件是分片均匀写在各个节点的硬盘上的,优点是分布式读写,性能整体较好。缺点是没冗余,分片随机读写可能会导致硬盘IOPS饱和

技术图片
gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2

5、分布式条带卷(Distributed Striped Volume)

当单个文件的体型十分巨大,客户端数量更多时,条带卷已经无法满足需求,此时将分布式与条带化结合起来是一个比较好的选择。其性能与服务器数量有关

gluster volume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7

技术图片

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

博文目录一、GlusterFS概述1、GlusterFS的特点2、GlusterFS术语3、模块化堆栈式架构二、GlusterFS的工作原理1、GlusterFS的工作流程2、弹性HASH算法三、GlusterFS的卷类型1、分布式卷2、条带卷3、复制卷4、分布式条带卷5、分布式复制卷一、G... 查看详情

glusterfs(代码片段)

...大批优秀的开源分布式存储系统,包括ceph、swift、Lustre和glusterfs等。??分布式存储系统分布式存储按其存储接口分为三种:文件存储、块存储和对象存储。?文件存储通常支持POSIX接口(如glusterfs,但GFS、HDFS是非POSIX接口的),可... 查看详情

romram存储器原理详解以及dramsramsdramflash存储器的介绍(代码片段)

...区别SRAMDRAM六、SDRAM七、FLASH概述ROM、RAM是可读与可读可写存储器的一种框架,DRAM、SRAM、SDRAM是基于RAM框架的一种实现一、ROM1.介绍ROM全拼是ReadOnlyMemory(只读存储器), 查看详情

romram存储器原理详解以及dramsramsdramflash存储器的介绍(代码片段)

...区别SRAMDRAM六、SDRAM七、FLASH概述ROM、RAM是可读与可读可写存储器的一种框架,DRAM、SRAM、SDRAM是基于RAM框架的一种实现一、ROM1.介绍ROM全拼是ReadOnlyMemory(只读存储器), 查看详情

glusterfs简介(代码片段)

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

k8s使用glusterfs做存储(代码片段)

一、安装glusterfshttps://www.cnblogs.com/zhangb8042/p/7801181.html环境介绍;centos7 [[email protected]~]#cat/etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.31.250.144 k8s-... 查看详情

用glusterfs+swift搭建对象存储(代码片段)

在已经搭建好的GlusterFS服务器上(如不知道如何搭建GlusteFS请参考上一篇):Createbricks:#truncate-s1GB/srv/disk1..4#foriin`seq14`;domkfs.xfs-isize=512/srv/disk$i;done#mkdir-p/export/brick1..4Addthefollowinglinesto /etc/fs 查看详情

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

一、GlusterFS简介1、什么是glusterfsGlusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过InfinibandRDMA或Tcp/Ip方式将许多廉价的x86主机,通过网络互联成一个并行的网... 查看详情

glusterfs4.0.1event模块分析笔记1(代码片段)

1.前言在C语言i中,存储变量的结构体加上一组函数指针,大概就可以算是一个对象模型了;如果将一组函数指针捆绑为结构体,后期根据配置或者环境需要绑定到不同实现模块中的一组函数,可以认为是C语言面对对象的设计实... 查看详情

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

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

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

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

glusterfs分布式存储集群-2.使用(代码片段)

参考文档: QuickStartGuide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/ Install-Guide:https://docs.gluster.org/en/latest/Install-Guide/Install/ CentOSgluster-Quickstart:https: 查看详情

glusterfs集群(代码片段)

文章目录一、glusterfs1.glusterfs介绍2.常见卷的模式3.glusterfs集群1)环境准备2)实验步骤3)实验过程4.replica卷测试5.卷的删除6.stripe模式(条带)7.distributed模式8.distributed-replica模式9.dispersed模式10.在线裁减与在线扩容glusterfs... 查看详情

glusterfs分布式存储集群-1.部署(代码片段)

参考文档:QuickStartGuide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/Install-Guide:https://docs.gluster.org/en/latest/Install-Guide/Install/CentOSgluster-Quickstart:https://wiki.c 查看详情

elasticsearch-基础介绍及索引原理分析(代码片段)

...了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。实时分析的分布式搜索引擎。可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。基 查看详情

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

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

glusterfs简单介绍

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

k8s使用glusterfs存储报错type‘features/utime‘(代码片段)

k8s使用glusterfs存储报错type‘features/utime‘isnotvalidornotfoundonthismachinepods报错如下Events:TypeReasonAgeFromMessage-------------------------NormalScheduled5m48sdefault-schedulerSuccessfullyassigneddefault/ 查看详情