当前位置: 首页 > news >正文

GFS分布式 文件系统

一、GFS的概念

        文件存储分为nfs、lvm、raid

        对象存储分为GFS、CEPH、fastDFS(分布式文件存储)NAS OSS  S3  switch

OSS   属于阿里云  通过URL 链接        S3属于亚马逊通过URL链接

1.1 GFS简介

        开源的分布式文件系统,由存储服务器、客户端以及NFS/Samba存储网关组成,无原数据服务器

        具有扩展性和高性能,高可用性有(冗余、容灾),全局统一命名空间,弹性卷管理,基于标准协议,通过多和互联网的存储节点进行冗余,以确保数据的可用性和一致性

1.2 GFS的组成

① 存储服务器

② 客户端NFS/Samba存储网关 组成

③ 五元数据服务器:保存数据的地方

二、GFS特点

2.1扩展性和高可用性

        允许通过简单地增加存储节点的方式来提高存储容量和性能(磁盘、计算和I/O资源都可以独立增加)。改善了单点故障和性能瓶颈,真正实现了并行化数据访问GlusterFS采用弹性哈希算法在存储池中可以智能地定位任意数据分片(将数据分片存储在不同节点上),不需要查看索引或者向元数据服务器查询。

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

2.2 全局统一命名空间

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

2.3 弹性卷管理

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

2.4 基于一个标准协议

        存储服务支持NFS、CIFS、HTTP、FTP、SMB 及Gluster原生协议,完全与POSIX标准(可移植操作系统接口)兼容。

        现有应用程序不需要做任何修改就可以对Gluster中的数据进行访问,也可以使用专用API进行访问。

三、GFS专业术语

        Brick(块存储服务器)实际存储用户数据的服务器
        Volume(逻辑卷)本地文件系统的"分区"
        FUSE用户空间的文件系统(类别EXT4),”这是一个伪文件系统“,用户端的交换模块
        VFS(虚拟端口)内核态的虚拟文件系统,用户是提交请求给VFS 然后VFS交给FUSH,再交给GFS客户端,最后由客户端交给远端的存储
        Glusterd(服务)是运行再存储节点的进程(客户端运行的是gluster client)GFS使用过程中整个GFS之间的交换由Gluster client 和glusterd完成。

        使用GFS会使用到以上的虚拟文件系统

四、GFS工作原理

GlusterFS 的工作流程:

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

1.外来一个请求,例:用户端申请创建一个文件,客户端或应用程序通过GFS的挂载点访问数据
2.linux系统内容通过VFSAPI收到请求并处理
3.VFS将数据递交给FUSE内核文件系统,fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端
4.GlusterFS client端收到数据后,会根据配置文件的配置对数据进行处理
5.再通过网络,将数据发送给远端的ClusterFS server,并将数据写入到服务器储存设备上
6.server再将数据转交给VFS伪文件系统,再由VFS进行转存处理,最后交给EXT3

五、GFS卷的类型 (七个卷)

5.1 分布式卷(Distribute volume)

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


分布式卷具有如下特点:

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


6.2 条带卷(Stripe volume)

        类似RAID0,文件被分成数据块并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高,但是不具备冗余性。

条带卷特点:

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


6.3 复制卷(Replica volume)

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

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

6.4 分布式条带卷(Distribute Stripe volume)

        BrickServer数量是条带数(数据块分布的Brick数量)的倍数,兼具分布式卷和条带卷的特点。
主要用于大文件访问处理,创建一个分布式条带卷最少需要4台服务器。
创建一个名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)。Brick的数量是4 (Server1:/dir1、Server2:/dir2、Server3:/dir3和Server4:/dir4),条带数为2(stripe 2)
        创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复制卷:如果存储服务器的数量是条带或复制数的2倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷。

6.5 分布式复制卷(Distribute Replica volume)

        Brick Server数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。主要用于需要冗余的情况下。
        创建一个名为dis-rep的分布式复制卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)。Brick的数量是4 (Server1:/dir1、Server2:/dir2、Server3:/dir3 和Server4:/dir4),复制数为2(replica 2)

6.6 条带复制卷(Stripe Replca volume)

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

6.7 分布式条带复制卷(Distribute Stripe Replicavolume)

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

六、GFS部署

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 前端小白的学习之路(Vue2 一)
  • Excel全套213集教程
  • 【数据结构】考研真题攻克与重点知识点剖析 - 第 5 篇:树与二叉树
  • Rust 实现线程安全的 Lock Free 计数器
  • Springboot使用教程
  • c语言:操作符
  • 【远程桌面】Microsoft Remote Desktop 4 mac
  • 景芯2.5GHz A72训练营dummy添加(一)
  • 4.8作业
  • 蓝桥杯 历届真题 双向排序【第十二届】【省赛】【C组】
  • 创建线程的方式
  • VGA显示器字符显示
  • GitHub教程:最新如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细步骤讲解(图文教程)
  • stable-diffusion-webui怎么样增加自己训练的LoRA模型?
  • HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP3.0的区别
  • 自己简单写的 事件订阅机制
  • 【RocksDB】TransactionDB源码分析
  • 【剑指offer】让抽象问题具体化
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • PAT A1017 优先队列
  • Vue组件定义
  • 程序员该如何有效的找工作?
  • 分享一份非常强势的Android面试题
  • ------- 计算机网络基础
  • 看域名解析域名安全对SEO的影响
  • 你真的知道 == 和 equals 的区别吗?
  • 前端代码风格自动化系列(二)之Commitlint
  • 驱动程序原理
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 正则与JS中的正则
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 整理一些计算机基础知识!
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总518. 零钱兑换 II
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • $.ajax()方法详解
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (floyd+补集) poj 3275
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (理论篇)httpmoudle和httphandler一览
  • (四)JPA - JQPL 实现增删改查
  • (转)socket Aio demo
  • (轉)JSON.stringify 语法实例讲解
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .htaccess 强制https 单独排除某个目录
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 解决重复提交问题
  • .NET 使用配置文件
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net开发日常笔记(持续更新)