GlusterFS(GFS)分布式文件系统

一、GlusterFS的概述:

GlusterFS 是一个开源的分布式文件系统

只在扩展存储容器,提高性能

并且通过多个互联网络的存储节点的进行几余,以确保数据的可用性和一致性

  • 存储服务器客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成。
  • 没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。
  • MFS 传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃。而 GlusterFS 分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性及存储效率。
  • GlusterFS同时也是Scale-Out(横向扩展)存储解决方案Gluster的核心,在存储数据方面具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。
  • GlusterFS支持借助TCP/IP或InfiniBandRDMA网络(一种支持多并发链接的技术,具有高带宽、低时延、高扩展性的特点)将物理分散分布的存储资源汇聚在一起,统一提供存储服务,并使用统一全局命名空间来管理数据。
  • GFS由三个组件组成:
    存储服务器(Brick Server)
    客户端(不在本地)(且有客户端,也会有服务端,这点类似于 NFS,但是更为复杂)
    存储网关(NFS/Samaba)(无元数据服务器:就是保存数据的地方 )

二、GlusterFS的特点:

扩展性和高性能:

GlusterFS利用双重特性来提供高容量存储解决方案。
(1)Scale-Out架构允许通过简单地增加存储节点的方式来提高存储容量和性能(磁盘、计算和I/O资源都可以独立增加),支持10GbE和 InfiniBand等高速网络互联。
(2)Gluster弹性哈希(ElasticHash)解决了GlusterFS对元数据服务器的依赖,改善了单点故障和性能瓶颈,真正实现了并行化数据访问。GlusterFS采用弹性哈希算法在存储池中可以智能地定位任意数据分片(将数据分片存储在不同节点上),不需要查看索引或者向元数据服务器查询。

高可用性:

GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。
当数据出现不一致时,自我修复功能能够把数据恢复到正确的状态,数据的修复是以增量的方式在后台执行,几乎不会产生性能负载。
GlusterFS可以支持所有的存储,因为它没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、XFS等)来存储文件,因此数据可以使用传统访问磁盘的方式被访问。

全局统一命名空间

分布式存储中,将所有节点的命名空间整合为统一命名空间,将整个系统的所有节点的存储容量组成一个大的虚拟存储池,供前端主机访问这些节点完成数据读写操作。

弹性卷管理:

GlusterFS通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分而得到。
逻辑存储池可以在线进行增加和移除,不会导致业务中断。逻辑卷可以根据需求在线增长和缩减,并可以在多个节点中实现负载均衡。
文件系统配置也可以实时在线进行更改并应用,从而可以适应工作负载条件变化或在线性能调优。

基于标准协议:

Gluster 存储服务支持 NFS、CIFS、HTTP、FTP、SMB 及 Gluster原生协议,完全与 POSIX 标准(可移植操作系统接口)兼容。
现有应用程序不需要做任何修改就可以对Gluster 中的数据进行访问,也可以使用专用 API 进行访问。

三、GlusterFS 术语:

1.Brick(存储块):

实际存储用户数据的服务器

指可信主机池中由主机提供的用于物理存储的专用分区,是GlusterFS中的基本存储单元,同时也是可信存储池中服务器上对外提存储目录

存储目录的格式由服务器和目录的绝对路径构成,表示方法为SERVER:EXPORT。如:192.168.91.100:/data/mydir/

2.Volume(逻辑卷):

本地文件系统的"分区”

一个逻辑卷是一组Brick的集合。卷是数据存储的逻辑设备,类似于LVM 中的逻辑卷。大部分Gluster管理操作是在卷上进行的

3.3 FUSE:

用户空间的文件系统

是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码

用户 空间的文件系统(类比EXT4),“这是一个伪文件系统”;以本地文件系统为例,用户想要读写一个文件,会借助于EXT4文件系统,然后把数据写在磁盘上;而如果是远端的GFS,客户端的请求则应该交给FUSE(为文件系统),就可以实现跨界点存储在GFS上

3.4 VFS(虚拟端口):

内核态的虚拟文件系统

内核空间对用户空间提供的访问磁盘的接口,用户是先提交请求交给VFS然后VFS交给FUSE,再交给GFS客户端,最后由客户端交给远端的存储

3.5 Glusterd(后台管理进程):

运行在存储节点的进程

在存储群集中的每个节点上都要运行,允许在存储节点的进程

四、GlusterFS 的工作流程:

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

数据流向:

①mysql服务器——>存储数据到挂载目录中/data

②mysql数据会优先交给内核的文件系统处理——>GFS客户端处理(本地)

③GFS客户端会和GFS服务端进行交互,GFS服务端接收到数据,然后再通过挂载的卷的类型,对应保存在后端block块节点服务器上

  • 分布式条带复制卷(Distribute Stripe Replicavolume)三种基本卷的复合卷,通常用于类 Map Reduce 应用器——>存储数据到挂载目录中/data

五、弹性HASH算法:

弹性HASH算法是Davies-Meyer 算法的具体实现,通过HASH 算法可以得到一个32位的整数范围的hash 值,假设逻辑卷中有N个存储单位Brick, 则32位的整数范围将被划分为N个连续的子空间,每个空间对应一个Brick。当用户或应用程序访问某一个命名空间时,通过对该命名空间计算HASH值,根据该HASH 值所对应的32位整数空间定位数据所在的Brick。

优点:

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

六、GlusterFS的卷类型:

GlusterFS支持7种卷(前5种使用的多)

  • 分布式卷:提高存储容量和扩展性,但不提供冗余保护
  • 条带卷:提高读写性能,但不提供冗余保护
  • 复制卷:提供冗余保护,但会降低存储容量和扩展性
  • 分布式条带卷:提供读写性能和扩展性
  • 分布式复制卷:提供几余保护和扩展性
  • 条带复制卷
  • 分布式条带复制卷

1.分布式卷(Distribute volume):

文件通过HAS日算法分布到所有Brick Server上,这种卷是GlusterFS的默认卷;以文件为单位根据HASH算法散列到不同的Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的RAIDO,不具有容错能力。
在该模式下,并没有对文件进行分块处理,文件直接存储在某个Server 节点上。
由于直接使用本地文件系统进行文件存储,所以存取效率并没有提高,反而会因为网络通信的原因而有所降低。

示例原理:

File1和File2存放在Server1,而File3存放在server2,文件都是随机存储,一个文件(如File1)要么在server1上,要么在Server2上,不能分块同时存放在Server1和Server2上。

分布式卷的特点:

  • 文件分布在不同的服务器,不具备冗余性。
  • 更容易和廉价地扩展卷的大小。
  • 单点故障会造成数据丢失。
  • 依赖底层的数据保护。

创建分布式卷:

创建一个名为dis-volume的分布式卷,文件将根据HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中

gluster volume create dis-volume server1:/dirl server2:/dir2 server3:/dir3

2、条带卷(Stripe volume):

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

特点:

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

创建条带卷:

创建了一个名为Stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中

gluster volume create stripe-volume stripe 2 transport tcp server1:/dirl server2:/dir2

3、复制卷(Replica volume):

  • 将文件同步到多个Brick上,使其具备多个文件副本,属于文件级RAID1,具有容错能力。因为数据分散在多个Brick中,所以读性能得到很大提升,,但写性能下降。
  • 复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。但因为要保存副本,所以磁盘利用率较低。

示例原理:

File1 同时存在Server1和Server2,File2也是如此,相当于server2中的文件是Server1中文件的副本。

复制卷特点:

  • 卷中所有的服务器均保存一个完整的副本。
  • 卷的副本数量可由客户创建的时候决定,但复制数必须等于卷中Brick所包含的存储服务器数。
  • 至少由两个块服务器或更多服务器。
  • 具备冗余性。

创建复制卷:

创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在server1:/dirl和Server2:/dir2两个Brick中

gluster volume create rep-volume replica 2 transport tcp serverl:/dirl server2:/dir2

4、分布式条带卷(Distribute Stripe volume):

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

创建分布式条带卷:

创建了名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)

gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

5、分布式复制卷(Distribute Replica volume):

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

创建分布式复制卷:

创建名为dis-rep的分布式条带卷,配置分布式复制卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)

gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

6、条带复制卷(Stripe Replica volume):

类似 RAID 10,同时具有条带卷和复制卷的特点。

7、分布式条带复制卷(Distribute Stripe Replicavolume):

三种基本卷的复合卷,通常用于类 Map Reduce 应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/527159.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软考中级之软件设计师---知识点汇总总结

软考中级之软件设计师---知识点汇总总结 软考介绍资格设置证书样本 计算机组成原理操作系统1. 进程的三态模型2. 磁盘调度算法 计算机网络1. 网络的分类2. 各层的互连设备3. 网络模型,协议簇4. 传输层协议TCP、UDP4.1 TCP (Transmission Control Protocol,传输控制协…

零代码与低代码开发平台

1、什么是低代码开发平台?什么是零代码开发平台? 零代码开发平台: 指的是不需要写代码就能够快速开发出业务应用/系统的平台。我们在工作中使用的业务应用,主要提供数据收集、数据处理、数据流转和展示等功能。零代码开发平台能够…

【超重磅牛市信号】减半倒计时12天!首波抛售潮接近尾声,大暴涨将如期而至!

3月,美国CPI环比出现小幅反弹由3.1%升至3.2%,美国制造业指数PMI反弹至50.3%呈现进入扩张期的态势,日本结束长达8年的负利率时代首次加息。这导致美国4月降息概率大幅下降,5月降息概率也跌至50%以下。 尽管如此,全球金融…

C#操作MySQL从入门到精通(8)——对查询数据进行高级过滤

前言 我们在查询数据库中数据的时候,有时候需要剔除一些我们不想要的数据,这时候就需要对数据进行过滤,比如学生信息中,我只需要年龄等于18的,同时又要家乡地址是安徽的,类似这种操作专栏第7篇的C#操作MySQL从入门到精通(7)——对查询数据进行简单过滤简单过滤方法就无法…

STL优先队列比较器

有两个比较器&#xff0c;在std里面&#xff0c;一个是greater&#xff0c;一个是less&#xff0c;他们都有一个可以指定的模板类型。 #include <bits/stdc.h> using namespace std; struct node {bool operator ()(const string& a, const string& b){return a…

蓝桥杯刷题-特殊年份

特殊年份 代码&#xff1a; def f(x)->bool:s list(x)if s[0]s[2] and int(s[1])1int(s[3]):return Trueelse:return False cnt 0 for _ in range(5):if f(input()):cnt1 print(cnt)

PC端音乐神器-解锁全网限制

打软件后就能发现&#xff0c;软件不需要我们登录&#xff0c;就可以使用,下载地址&#xff1a;PC端音乐神器.zip

什么是sso?

SSO&#xff08;Single Sign-On&#xff09;&#xff0c;即单点登录&#xff0c;是一种安全协议&#xff0c;它允许用户在多个应用程序之间使用同一组登录凭据进行身份验证。这意味着用户只需要登录一次&#xff0c;就可以访问多个需要身份验证的应用程序。 SSO的工作原理如下…

[C++][算法基础]合并集合(并查集)

一共有 n 个数&#xff0c;编号是 1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 m 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 a 和 b 的两个数所在的集合合并&#xff0c;如果两个数已经在同一个集合中&#xff0c;则忽略这个操…

【JavaEE】_Spring MVC项目获取Header

目录 1. 使用Servlet原生方法获取Header 2. 使用Spring注解获取Header 1. 使用Servlet原生方法获取Header .java文件内容如下&#xff1a; package com.example.demo.controller;import com.example.demo.Person; import org.springframework.web.bind.annotation.*; impor…

【C++进阶】用哈希实现unordered_set和unordered_map的模拟

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;c大冒险 总有光环在陨落&#xff0c;总有新星在闪烁 前言&#xff1a; 之前我…

网络安全 | 什么是区块链?

关注WX&#xff1a;CodingTechWork 概述 定义 区块链是一个共享的、不可篡改的账本&#xff0c;旨在促进业务网络中的交易记录和资产跟踪流程。资产可以是有形的&#xff08;如房屋、汽车、现金、土地&#xff09;&#xff0c;也可以是无形的&#xff08;如知识产权、专利、…

leetcode代码记录(最长连续递增序列

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定…

极市平台 | 综述:一文详解50多种多模态图像融合方法

本文来源公众号“极市平台”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;综述&#xff1a;一文详解50多种多模态图像融合方法 0 极市导读 本工作总结了50篇论文中Lidar和camera的多模态融合的一些概念方法。笔者结合原文以及自…

变电站设计综合应用软件-光纤回路设计解决方案

产品概述 智能变电站光纤回路设计软件——让您的光纤设计之旅变得轻松而高效! 光纤回路设计作为智能变电站的关键环节,对电网的稳定运行起着至关重要的作用。为了让您的光纤设计之路更加顺畅,我们隆重推出了这款智能变电站光纤回路设计软件。这款软件以其简单易用的…

SpringBoot学习笔记-S2

1. SpringBoot中的常见注解 RequestBody&#xff1a;使SpringMVC框架可自动读取请求体里面的JSON格式的数据&#xff0c;转换成map类型的集合对象RestController&#xff1a;开发RESTful API 时使用&#xff0c;等价于ResponseBody Controller。RestController和Controller的…

10分钟上手:MySQL8的Json格式字段使用总结干货

一、关于效率和适用范围 尽管官方承诺Json格式字段采用了空间换时间的策略&#xff0c;比Text类型来存储Json有大幅度的效率提升。但是Json格式的处理过程仍然效率不及传统关系表&#xff0c;所以什么时候用Json格式字段尤为重要。 只有我们确定系统已经能精确定位到某一行&am…

红外疼痛医学分会成立大会暨首届学术交流会即将盛大开幕

2024年4月7日&#xff0c;中国中医药研究促进会官网发布“关于召开红外疼痛医学分会成立大会暨首届学术交流会的第三轮通知”通知&#xff0c;大会开幕在即&#xff0c;这充分显示了官方对此次活动的高度重视。 本次大会将于 2024年4月19日至21日在重庆海兰云天海琴酒店隆重举行…

memcached集群

一、介绍 memcache本身没有像redis所具备的数据持久化功能&#xff0c;但是可以通过做集群同步的方式&#xff0c;让各memcache服务器的数据进行同步&#xff0c;从而实现数据的一致性&#xff0c;即保证各memcache的数据是一样的&#xff0c;即使有任何一台memcache发生故障&…

Linux addr2line介绍

打开linux调试选项 嵌入式 linux 经常要编译 linux 内核&#xff0c;默认情况下编译出的内核镜像是不带调试信息的&#xff0c;这样&#xff0c;当内核 crash 打印 PC 指针和堆栈信息时&#xff0c;我们需要反汇编来确认出错位置&#xff0c;不直观。 如果内核开启了调试选项&…