GlusterFS/GFS 分布式文件系统--理论详解
文章目录
- 一、文件系统简介
- 1.组成
- 2.作用
- 3.文件系统的挂载使用
- 二、GFS分布式文件系统概述
- 1.GFS简介
- 2.GFS的特点
- 3.GFS专业术语
- 4. 模块化堆栈式架构
- 5. GFS 工作流程
- 6. 各服务器详解
- 三、GFS卷类型
- 1. 分布式卷(Distribute volume)
- ①特点
- ②原理
- ③创建分布式卷
- 2.条带卷 (Stripe volume)
- ①原理
- ②特点
- ③创建条带卷
- 3.复制卷(Replica volume)
- ①原理
- ②特点
- ③创建复制卷
- 4.分布式条带卷(Distribute Stripe volume)
- ①原理
- ②创建分布式条带卷
- 5. 分布式复制卷(Distribute Replica volume)
- ①原理
- ②创建分布式复制卷
- 6.条带复制卷(Stripe Replica volume)和分布式条带复制卷(Distribute Stripe Replicavolume)
- 总结
- 总结
一、文件系统简介
1.组成
- 接口:文件系统接口
- 功能模块(管理、存储的工具):对对象管理里的软件集合
- 对象及属性:(使用此文件系统的消费者)
2.作用
- 从系统角度来看,文件系统时对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统
- 主要负责为用户建立文件、存入、读出、修改、转储文件,控制文件的存取
3.文件系统的挂载使用
- 除跟文件系统以外的文件系统创建后要使用需要先挂载至挂载点后才可以被访问
- 挂载点即分区设备文件关联的某个目录文件
- 类比NFS(外部的文件系统),使用挂载的方式才可以让本地系统来使用外部的文件系统的功能
- 例如:配置永久挂载时,我们会写入挂载点与挂载目录,还有文件系统的名称(xfs),文件类型格式等。我们在远程跨服务器使用GFS分布式文件系统,挂载时也需要指定其文件格式(GlusterFS)
二、GFS分布式文件系统概述
1.GFS简介
- GFS是一个可扩展、开源的分布式文件系统(可以很好的体现出弹性伸缩的特点),用于大型的、分布式的、对大量数据进行访问的应用,在传统的解决方案中,GFS 能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储
- GFS由三个组件组成
①存储服务器(Brick Server)
② 客户端(不在本地)(且,有客户端,也会有服务端,这点类似于 NFS,但是更为复杂)
③ 存储网关(NFS/Samaba)
无元数据服务器:
元数据是核心,描述对象的信息,影响其属性;
例如NFS,存放数据本身,是一个典型的元数据服务器可能存在单点故障,故要求服务器性能较高,服务器一旦出现故障就会导致数据丢失;
反过来看,所以无元数据服务不会有单点故障。
那么数据存放在哪里呢?会借用分布式的原则,分散存储,不会有一个统一的数据服务器
2.GFS的特点
- 扩展性和高性能:可扩展性,扩展节点,通过多节点提高性能
- 高可用性:不存在单点故障,有备份机制,类似Raid的容灾机制
- 全局同意命名空间:类比 API 的性质/概念,系统里根据他命名所定义的隔离区域,是一个独立空间;统一的名称空间,与客户端交互,把请求存放至后端的块数据服务器
- 弹性卷管理:方便扩容及对后端存储集群的管理与维护,较为复杂
- 基于标准协议:基于标准化的文件使用协议,让 CentOS 兼容 GFS
3.GFS专业术语
Brick 存储服务器:实际存储用户数据的服务器
Volume:本地文件系统的"分区”
FUSE:用户 空间的文件系统(类比EXT4),“这是一个伪文件系统”;以本地文件系统为例,用户想要读写一个文件,会借助于EXT4文件系统,然后把数据写在磁盘上;而如果是远端的GFS,客户端的请求则应该交给FUSE(为文件系统),就可以实现跨界点存储在GFS上
VFS(虚拟端口) :内核态的虚拟文件系统,用户是先提交请求交给VFS然后VFS交给FUSE,再交给GFS客户端,最后由客户端交给远端的存储
Glusterd(服务):是允许在存储节点的进程
4. 模块化堆栈式架构
- 模块化的设计,即把功能封装在一起,最后一起调用
- 同时启用多个模块,多个功能的组合,这种提供功能的方式叫做堆栈式的结构
- 通过对模块的组合,可以实现复杂的功能
模块化:类似linux 编译安装,很多功能都可以做定制的,通常都是通过软件开发的方式封装为模块,按需使用/不适用
GlusterFs也是这个思想:把功能封装为一个个模块,通过加载/调用/启用的方式就可以对应的功能堆栈式架构设计通过对模块不同功能的组合来实现复杂功能
5. GFS 工作流程
① 客户端或应用程序通过 GlusterFS 的挂载点访问数据
② linux系统内核通过 VFS API 收到请求并处理
③ VFS 将数据递交给 FUSE 内核文件系统,并向系统注册一个实际的文件系统 FUSE,而 FUSE 文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GlusterFS client 端。可以将 FUSE 文件系统理解为一个代理
④ GlusterFS client 收到数据后,client 根据配置文件的配置对数据进行处理
⑤ 经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFS Server,并且将数据写入到服务器存储设备上
GFS-server 端功能模块的划分:
① 卷的类型(使用分布式、复制、条带)
② 存储管理(卷的创建、启用、关闭)
③ I/O调用(存储后,读取数据,如何读取)
④ 与GFS-client 端对接GFS-client 端
① 用户通过用户态模式下,存储数据(写入数据)
② 写入的数据,使用GFS挂载的形式完成(网络挂载samba/NFS)
③数据的写入会由GFS-client转存到GFS-server端(对应的卷中)网络通讯
① Infinlband ——— IB
② RDMA——— 面向连接传输协议—— 数据完整性(丢包率低)
③ TCP/IP
④ RDMA———》以后的服务中可以做为跨节点共享内存资源的协议
6. 各服务器详解
Application:客户端或应用程序通过GlusterFSync的挂载点访问数据
VFS:linux系统内核通过VFS的API 收到请求并处理
FUSE:VFS将数据递交给FUSE内核文件系统,fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS
GlusterFS Client :通过网络将数据传递至远端的GlusterFS Server, 并且写入到服务器存储设备上
三、GFS卷类型
GlusterFS支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷和分布式条带复制卷
1. 分布式卷(Distribute volume)
文件通过 HASH 算法分布到所有 Brick Server 上,这种卷是 GlusterFS 的默认卷;以文件为单位根据 HASH 算法散列到不同的 Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的 RAID0, 不具有容错能力。在该模式下,并没有对文件进行分块处理,文件直接存储在某个 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:/dir1 server2:/dir2 server3:/dir3
2.条带卷 (Stripe volume)
类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上,文件存储以数据块为单位,支持大文件存储, 文件越大,读取效率越高,但是不具备冗余性
①原理
File 被分割为 6 段,1、3、5 放在 Server1,2、4、6 放在 Server2
②特点
根据偏移量将文件分成N块(N个条带点),轮询的存储在每个Brick Serve 节点.分布减少了负载,在存储大文件时,性能尤为突出.没有数据冗余,类似于Raid 0
③创建条带卷
创建了一个名为stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
3.复制卷(Replica volume)
将文件同步到多个 Brick 上,使其具备多个文件副本,属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。但因为要保存副本,所以磁盘利用率较低
①原理
File1 同时存在 Server1 和 Server2,File2 也是如此,相当于 Server2 中的文件是 Server1 中文件的副本
②特点
卷中所有的服务器均保存一个完整的副本。具备冗余性.卷的副本数量可由客户创建的时候决定,但复制数必须等于卷中 Brick 所包含的存储服务器数。至少由两个块服务器或更多服务器。若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为改卷的总容量
③创建复制卷
创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
4.分布式条带卷(Distribute Stripe volume)
Brick Server 数量是条带数(数据块分布的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。 主要用于大文件访问处理,创建一个分布式条带卷最少需要 4 台服务器
①原理
File1 和 File2 通过分布式卷的功能分别定位到Server1和 Server2。在 Server1 中,File1 被分割成 4 段,其中 1、3 在 Server1 中的 exp1 目录中,2、4 在 Server1 中的 exp2 目录中。在 Server2 中,File2 也被分割成 4 段,其中 1、3 在 Server2 中的 exp3 目录中,2、4 在 Server2 中的 exp4 目录中
②创建分布式条带卷
创建一个名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)。Brick 的数量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),条带数为 2(stripe 2)gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复制卷;如果存储服务器的数量是条带或复制数的 2 倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷
5. 分布式复制卷(Distribute Replica volume)
分布式复制卷(Distribute Replica volume):Brick Server 数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点,主要用于需要冗余的情况下
①原理
File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。在存放 File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是 Server1 中的exp1 目录和 Server2 中的 exp2 目录。在存放 File2 时,File2 根据复制卷的特性,也将存在两个相同的副本,分别是 Server3 中的 exp3 目录和 Server4 中的 exp4 目录
②创建分布式复制卷
建一个名为dis-rep的分布式复制卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)。Brick 的数量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),复制数为 2(replica 2)gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
6.条带复制卷(Stripe Replica volume)和分布式条带复制卷(Distribute Stripe Replicavolume)
- 条带复制卷(Stripe Replica volume)类似 RAID 1 0,同时具有条带卷和复制卷的特点。
- 分布式条带复制卷(Distribute Stripe Replicavolume)三种基本卷的复合卷,通常用于类 Map Reduce 应用
总结
GFS数据流向
①mysql服务器——>存储数据到挂载目录中/data
②mysql数据会优先交给内核的文件系统处理——>GFS客户端处理(本地)
0,同时具有条带卷和复制卷的特点。
- 分布式条带复制卷(Distribute Stripe Replicavolume)三种基本卷的复合卷,通常用于类 Map Reduce 应用
总结
GFS数据流向
①mysql服务器——>存储数据到挂载目录中/data
②mysql数据会优先交给内核的文件系统处理——>GFS客户端处理(本地)
③GFS客户端会和GFS服务端进行交互,GFS服务端接收到数据,然后再通过挂载的卷的类型,对应保存在后端block块节点服务器上
GlusterFS/GFS 分布式文件系统--理论详解相关推荐
- 分布式文件系统FastDFS详解-附带视频教程
目录 1.FastDFS教程 2.FastDFS安装 安装FastDFS FastDFS配置文件详解 FastDFS启动 3.FastDFS重启与FastDFS关闭 FastDFS关闭 4.FastD ...
- 分布式文件系统FastDFS详解
个人博客请访问 http://www.x0100.top 01 序 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解 ...
- FastDFS分布式文件系统实践详解
FastDFS简介 FastDFS体系结构 上传流程 文件存储 pom.xml依赖 FastDFS配置 文件信息封装 文件上传 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统, ...
- GFS(GlusterFS)分布式文件系统
GFS(GlusterFS)分布式文件系统 一.GlusterFS概述 1.GliusterFS特点 2.GFS组成 3.GFS文件系统组成 4.GFS术语 5.GFS架构 6.GlusterFS工作 ...
- 如何搭建GFS分布式文件系统
如何搭建GFS分布式文件系统 什么是文件系统 文件系统的组成部分 文件系统作用 文件系统的使用 分布式文件系统GFS GFS简介 GFS组成 GFS的特点 GFS专业术语 GFS模块化和堆栈式架构 G ...
- 删除隐藏版本信息 版本回退_Git系列之-分布式版本控制Git详解
课程简介: 课程目标:通过本课程的学习,将全面掌握Git版本管理工具的配置与使用,以适应工作的需要. 适用人群:具有一定开发基础的开发人员. 课程概述:Git (读音为/gɪt/)是一个开源的分布式版 ...
- GFS分布式文件系统简介及部署——让存储变得更高级
GFS分布式文件系统简介及部署 一.GFS概述 1.文件系统 ①.文件系统组成 ②.文件系统的作用 ③.专业术语 二.GFS特点 三.GFS工作原理 四.GFS卷 1.GFS卷类型 2.三大基本卷的特 ...
- GFS —— 分布式文件系统
文章目录 一.概述 1.1 文件系统组成 1.2 文件系统FS作用 1.3 文件系统FS 的挂载使用 1.4 分布式文件系统(GFS)组成 1.5 分布式文件系统(GFS)特点 1. 6 分布式文件系 ...
- 浅识一下GFS分布式文件系统
GFS分布式文件系统 什么是GFS分布式文件系统 GFS(GlusterFS) 是一个开源的分布式文件系统. 由存储服务器.客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成. 没有 ...
最新文章
- 选IDC房时,用脚本截取丢失包和rtt的值作比对
- ajax请求的五个步骤_监控整个页面,非AJAX,需要通知
- 科普 | USB 协议与接口
- 编译原理——词法分析器
- Uipath 学习栏目基础教学:2Uipath变量介绍
- python 装饰函数
- Python变量赋值的秘密
- 为Editplus安装smali代码语法高亮插件
- 【DS】atoi()实现
- RunLoop相关知识
- 实现ls -l功能 和目录实现
- Idea:新版本Idea底部工具栏Git中没有Local Changes
- Android音视频——Libyuv使用实战
- 在线log计算机,log换算(log计算器在线)
- 概率论大作业C语言验证正态分布的数学期望和方差
- GBase8s数据库MINUS 运算符
- 中语言超酷特性 之 --- 泛指(包含证明“白马非马”)
- Android Material 常用组件详解(六)—— Progress indicators、Slider 使用详解
- 人脸检测技术即matlab的实现,人脸检测研究及MATLAB实现.doc
- android 仿网易标签切换,高仿网易云音乐客户端的Home页面切换Tabhost-IT蓝豹
热门文章
- opencv曝光过度_直方图均衡化
- Lightroom Classic 教程:如何在 Lightroom 中修复曝光过度的照片?
- RestTemplate 微信接口 text/plain HttpMessageConverter
- YHM-350五轴转台的特点包括哪些方面?
- python辅助_Python-第一个微信小项目——微信跳一跳辅助工具
- 电脑故障维护大全目录
- 王者服务器维护5月1日,王者荣耀异常说明公告:5月1日全服不停机更新,游戏内问题通告说明...
- picacg服务器维护,picacg打不开是怎么回事 picacg打不开如何解决
- mac终端查看端口命令
- Centos7.5解压rar包的方式