GFS详解

一、前言:文件系统的概述

① API

应用程序编程接口,是一些预先定义的接口,或指软件系统或指软件系统不同组成部分衔接的约定 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节 只要调用 API ,就能使用,例如 cd、ls 等命令。 FS:文件系统

② 文件系统的组成

文件系统接口(API) 管理对象的软件集合(可以对一些文件、目录等,对这些资源进行管理) 对象及属性(管理的数据及属性,每个文件都有对应的 inode 号)

③ 文件系统的作用

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统 简单点说的说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取等这些工作。对文件的具体管理,文件可以是文件、目录或符号文件(软硬链接),对这样的对象和数据进行存、读、改等具体操作

④ 文件系统的挂载使用

除跟文件系统以外的文件系统创建后要使用需要先挂载至挂载点后才可以被访问 挂载点即分区设备文件关联的某个目录文件 类比 NFS(外部的文件系统),使用挂载的方式才可以让本地系统来使用外部的文件系统的功能 例如:配置永久挂载时,我们会写入挂载点与挂载目录,还有文件系统的名称(xfs),文件类型格式等。我们在远程跨服务器使用 GFS 分布式文件系统,挂载时也需要指定其文件格式(GlusterFS)

二、详解:GlusterFS/GFS 分布式文件系统

① GFS 的概述

GFS(Gluster File System) 是一个可扩展、开源的分布式文件系统(可以很好的体现出弹性伸缩的特点),用于大型的、分布式的、对大量数据进行访问的应用 在传统的解决方案中,GFS 能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储 GFS 由三个组件组成: 存储服务器(Brick Server) 客户端(不在本地)(且,有客户端,也会有服务端,这点类似于 NFS,但是更为复杂) 存储网关(NFS/Samaba) 无元数据服务器 元数据是核心,描述对象的信息,影响其属性 例如NFS,存放数据本身,是一个典型的元数据服务器可能存在单点故障,故要求服务器性能较高,服务器一旦出现故障就会导致数据丢失 反过来看,所以无元数据服务不会有单点故障 那么数据存放在哪里呢?会借用分布式的原则,分散存储,不会有一个统一的数据服务器

② GFS 的特点

扩展性和高性能 可扩展性,扩展节点 通过多节点提高性能 高可用性 不存在单点故障,有备份机制 类似 Raid 的容灾机制 全局统一命名空间 集中化管理,类比 API 的性质/概念 系统里根据他命名所定义的隔离区域,是一个独立空间 统一的名称空间,与客户端交互,把请求存放至后端的块数据服务器 弹性卷管理 方便扩容及对后端存储集群的管理与维护 较为复杂 基于文件系统的标准使用协议 基于标准化的文件使用协议 让 CentOS 兼容 GFS

③ GFS 专业术语:

Brick(块):实际存储用户数据的服务器 Volume:类似于本地文件系统的“分区”,卷 FUSE:用户空间的文件系统 类比EXT4:对用户创建的文件进行精细化、具体的管理 是一个伪文件系统,不是实际的文件系统。涉及到内核及操作系统的底层,是用户端的交互模块 VFS (虚拟端口) :内核态的虚拟文件系统,用户是先提交请求交给 VFS,然后 VFS 交给 FUSE ,再交给 GFS 客户端,最后由客户端交给远端的存储 Glusterd (服务): 是运行在存储节点的进程(客户端运行的是 Gluster Client),整个 GFS 之间的交互是由 Gluster Client 和 Glusterd 完成的(即GFS 的整个使用过程)

④ GFS 的结构(模块化堆栈式)

模块化的设计,即把功能封装在一起,最后一起调用 同时启用多个模块,多个功能的组合,这种提供功能的方式叫做堆栈式的结构 通过对模块的组合,可以实现复杂的功能(需求)

VFS:

虚拟文件系统,即伪文件系统,和真实的服务器相比,性能要差一些,功能也不完善 但是好处在于方便管理,资源消耗较少,且有一些真实文件的基础功能(建立、存入、读出、修改、转储文件,控制文件的存储) 管理一个功能模块的集合:比如 I/O Cache 是缓存,Read Ahead 是内核文件预读,Distribute/Stripe 是分布式、条带卷(后续进行详细讲解) Replicate:通过请求的方式与多个 Client 端进行交互。以上为客户端,以下为服务端(GFS 存储段)

(中间)通过网络的方式访问 GFS 的服务端,GFS 会通过标准化的方式去把其存储至本地的 Ext4 文件系统内

Gige:千兆网/千兆接口 TCP/IP:网络接口(协议) InfinlBand:也是一种网络协议,与 TCP/IP 相比,TCP/IP 具有转发丢失数据包的特性,基于此,通讯协议可能导致通讯变慢,而 IB 使用基于信任的、流控制的的机制来确保连接性完整,数据丢包几率较少,保证数据传输的速率 RDAM:负责数据传输,一种数据传输协议。为了解决传输中客户端与服务器端数据处理的延迟(实现方式非常复杂,再在简述) POSIS:可移植操作系统接口,主要解决不同操作系统间的移植性

⑤ GFS 工作原理(过程)

客户端或应用程序通过 GlusterFS 的挂载点访问数据(发出请求) Linux 系统内核通过 VFS API(交互) 收到请求并处理 VFS 将数据递交给 FUSE 内核文件系统,fuse 文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GlusterFS client 端(对接 Client 端) GlusterFS client 收到数据后,client 根据配置文件的配置对数据进行处理 通过网络将数据传递至远端的 GlusterFS Server,并且将数据写入到服务器存储设备上(借用 VFS,对文件进行转存处理,交由最终的EXT3/4最终存储数据)

这是一个典型的 C/S(Client/Server)架构

⑥ 弹性 HASH 算法

问题:在多个后端存储中如何定位文件呢?

使用弹性 HASH 算法来解决数据定位、索引与寻址的功能(辅助)

先通过HASH算法得到一个值(2的32次方个组合,约43亿) 每个数据对应了0-2的32次方的一个值,“伪”唯一值 通常情况下,不同的数据得到的结果是不同的 划分为N个连续的子空间,每个空间对应一个 Brick

弹性HASH算法(平均分配)的优点:

当数据量越来越大的时候,相对每个存储节点的数据量(几率)是相等的,即保证数据平均分布在每一个 Brick 中 解决了对元数据服务器的依赖,进而解决了单点故障以及访问的瓶颈

二、GFS 的卷类型

① 分布式卷

分布式卷是 GlusterFS 的默认卷,即在创建卷时,默认选项是创建分布式卷 在该模式下, 并没有对文件进行分块处理,文件直接存储在某个 Server 节点上 直接使用本地文件系统进行文件存储,大部分 Linux 命令和工具可以继续正常使用。需要通过扩展文件属性保存 HASH 值,目前支持的底层文件系统有 EXT3、EXT4、ZFS、XFS 等 由于使用的是本地文件系统,所以存取效率并没有提高,反而会因为网络通信的原因而 有所降低。另外支持超大型文件也会有一定的难度,因为分布式卷不会对文件进行分块处理。虽然 EXT4 已经可以支持最大 16TB 的单个文件,但是本地存储设备的容量实在有限 File1 和 File2 存放在 Server1,而 File3 存放在 Server2,文件都是随机存储,一 个文件(如 File1)要么在 Server1 上,要么在 Server2 上,不能分块同时存放在 Server1 和 Server2 上

分布式卷具有如下特点:

文件通过 HASH 算法分布在所有的 Brick Server上,不具备冗余性 更容易且廉价地扩展卷的大小,其实只是扩大了磁盘空间,若有一块磁盘损坏(存在单点故障),会造成数据丢失,属于文件级的 RAID 0,不具有容错能力 依赖底层的数据保护,即依赖服务器的性能

② 条带卷

类似于 RAID 0,不具备冗余性

根据偏移量将文件分成N块(N个条带节点),轮询的存储(同步)在每个 Brick Server 节点

存储大文件时,性能尤为突出(文件越大,读取效率越高)

特点:

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

③ 复制卷

类比于 RAID1,即同一文件保存一份或多份副本,每个节点上保存相同的内容和目录结构,具有容错能力 因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降 复制模式因为要保存副本,所以磁盘利用率较低 如果多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量

特点:

卷中所有的服务器均保存一个完整的副本 卷的副本数量可由客户创建的时候决定 至少由两个块服务器或更多服务器 具备冗余性,即使一个节点损坏,也不影响数据的正常使用

④ 分布式条带卷

兼顾分布式卷和复制卷的功能,主要用于大文件访问处理

用于需要冗余的情况下,至少需要四台服务器

File1和File2通过分布式卷的功能分别定位到Server1 和 Server2。在 Server1 中,File1 被分割成 4 段,其中 1、3 在 Server1 中的 exp1 目录中, 2、4 在 Server1 中的 exp2 目录中

在 Server2 中,亦是如此

Brick Server 数量是条带数(数据块分布的 Brick 数量)的倍数,兼具分布式与条带卷的特点(优点)

⑤ 分布式复制卷

兼顾分布式卷和复制卷的功能,主要用于需要冗余的情况下 File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。 在存放 File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是 Server1 中的 exp1 目录和 Server2 中的 exp2 目录 在存放 File2 时,File2 根据复制卷的特性,也将存 在两个相同的副本,分别是 Server3 中的 exp3 目录和 Server4 中的 exp4 目录

⑥ 条带复制卷

首先触发条带卷的功能,将数据等分成4份,轮询存放 然后轮询后再进行触发复制卷的作用,进行复制

⑦ 分布式条带复制卷

结合了分布式、条带、复制卷三者的功能

猜你喜欢

转载自blog.csdn.net/Arlssaze/article/details/121404309
GFS