GlusterFS社区最近给出了 4.0的开发计划,其目标是对3.x版本在扩展性和易操作性方面作出重大改进,支持10K节点的集群扩展能力。为此,GlusterFS将在系统架构、控制平面和数据平面的内部机制、命令行工具和接口等方面作全新的重构,以实现更大的扩展性和易用性,期望使得GlusterFS成为倍受用户青睐的分布式文件系统。

GlusterFS 4.0开发计划主要涉及管理平面和数据平面两大部分,管理平面改进包括资源池管理、简化卷管理、灵活副本、卷内部机制、简化卷操作、卷配置数据管理、REST管理API、统一管理、透明驱动器迁移等方面,数据平面改进包括弹性Hash算法2.0、廋原生客户端和Stripe 2.0等。在这些重大改进中,我个人认为产生积极影响的是资源池管理、灵活副本、卷配置数据管理、弹性Hash 2.0和Stripe 2.0等五个新特性。

资源池管理
Xlator是GlusterFS最为核心的概念,按照特定拓扑结构组织的一组xlator可以构建出用户可访问的存储空间,即GLusterFS的卷,也就是一个分布式文件系统。GlusterFS使用卷配置文件来表示拓扑构造,早先版本需要人工编辑生成该文件,3.0之后引入Gluster工具来简化卷管理工作。使用gluster工具创建卷,需要按照卷类型指定brick列表和顺序,当卷包含的brick数量很大时,比如节点规模达到1000以上,操作非常不便且很容易产生失误。因此,4.0计划引入新的管理方式,采用函数编程式的声明方法,声明资源属性并定义操作目标,以更加适合人类思维模式的方式管理资源,简化管理和提高效率。

灵活副本
复制卷和条带卷模式下,扩展卷必须以复制和条带的倍数进行节点扩展,这个在处理卷扩展时极为不方便。4.0计划引入两个特性,一个是复制数和条带数可动态改变,二是同一个卷中不同子目录可以设置不同的复制数和条带数。如此,用户可以根据实际需求动态调整复制卷和条带卷设置,管理便利,而且可以提高存储资源利用率。

卷配置数据管理
GlusterFS 3.x中,配置信息在所有节点之间是同步的,也就是说所有节点都是对等的,每个节点都保存有全部的节点和卷配置信息。这种机制下,要求两两节点之间都要建立长连接的通信链路,集群规模扩展会大大受限于此。4.0引入超节点的概念和etcd服务,比如每个机架Rack为一个超节点,选举其中一个节点作为代表节点,多个Rack就会选举出多个代表节点并组建成一个quorum集群,存储所有的配置数据。代表节点之间按照之前的规则进行配置数据同步,Rack中的节点从本Rack代表节点处获得配置信息。由于代表节点组成的quorum集群规模远远小于整个集群规模,因此系统扩展能力大大增强。同时,管理服务进程工作也得到一定解放,不用再负责配置信息同步,而转为重点负责存储智能管理、系统监控和brick进程管理等工作。

弹性Hash 2.0
当前DHT Xlator在所有brick上维护相同的命名空间目录结构,lookup时需要与所有brick交互通信,实际上这是GluserFS扩展到10K节点的最大限制因素。4.0引入一个种全新的方法来消除这种限制,它选择一个brick子集(一个或多个)来存储目录结构,仅存储分配有GFID的目录,而不存储任何文件,这样的节点称为框架节点。目录结构覆盖整个命名空间,目录下的文件通过hash算法分散到不同节点上。对于每一个目录,每个节点会在偏平命名空间下创建一个对应的目录描述文件,采用UUID方式的ASCII编码GFID命名。ls列目录时,首先从框架节点上获得所有子目录,然后从所有数据节点获取文件列表,从而获得完整的目录文件列表。数据节点上也会保存文件对应子目录的列表项文件,当框架节点不可用时,可以用数据节点上获取子目录列表。这种模式下,扩展目录独立于父目录或子目录,服务器的扩展数量远高于目前集群可达的规模。框架节点不会产生新的负载,实际上当前系统中已经随处存在(比如复制卷和锁节点),这样我们可以把负载从N个节点减少到一个节点。此外,这种方式还可带来诸如以下的其他更多好处。
(1)由于每个目录是完全独立的,按目录级别设置复制实现难度大大降低;
(2)数据节点上的偏平目录可以按需进行创建,当首次文件名hash到节点时创建;
(3)框架目录结构可以存储在SSD固态硬盘上,或者使用大缓存,以加速目录结构访问;
(4)框架目录结构能够存储所有节点的hash范围,可以有效避免lookup扇出;
(5)框架节点上目录访问记帐(如访问时间、文件大小、文件数量等),相比在数据节点上处理,会避免大量的重复操作。

Stripe 2.0
GlusterFS处理超大文件的方法不够明智,一个文件大小可能增长超过一个brick容量。GlusterFS可以使用stripe进行条带化存储,但不够灵活,不可能混合存储条带化的文件和非条带化的文件。在大数据或hadoop应用下,超大文件是正常现象,这就限制了GlusterFS适用范围。4.0计划提出使用Shard xlator替换原先的条带,初始情况下所有文件都正常创建,当文件增长每超过预先设置的阈值(如64MB),则按照特定 规则生成一个新文件,比如依据GFID和块索引号命名。这种模式下,所有数据块仍然按正常的Hash方式分布,扩展节点不需要按照之前的条带倍数进行,大文件的自修复拆分成多个较小文件在多个节点之间并发进行,数据块文件名命名模式不受重命名和硬链接影响。

GlusterFS 4.0开发计划解读相关推荐

  1. 达梦数据库优化器执行计划解读

    说明: 1.达梦数据库执行计划 一条SQL语句在数据库中的执行过程或者访问路径的描述,通过执行计划,可以知道优化器对sql进行了哪些处理,使用了哪些方式去执行sql.执行计划看起来就像一棵树,执行过程 ...

  2. iOS开发CoreAnimation解读之四——Layer层动画内容

    iOS开发CoreAnimation解读之四--Layer层动画内容 一.引言 通过前几篇博客的介绍,我们可以了解到layer层可以设置许多与控件UI相关的属性,并且对于iOS开发,UIView层的属 ...

  3. GODOT 3.0 开发进度汇报 #6

    经过了又一个月的开发工作,在此作进度报告.本月的工作可以划分为:完成Web导出工具开发.GDNative.以及新的粒子系统. Web Export Godot 现在有了一款实验性的导出工具,导出目标为 ...

  4. 软件工程--项目开发计划

    项目开发计划(GB856T--88) 1引言 1.1编写目的 主要针对机房收费系统的费用,时间,速度,人员组织,硬件设备的配置,开发环境和运行环境的配置进行说明,为开发的下一代做准备,预期读者是系统分 ...

  5. iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程

    iOS开发CoreAnimation解读之一--初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...

  6. iOS开发CoreAnimation解读之三——几种常用Layer的使用解析

    iOS开发CoreAnimation解读之三--几种常用Layer的使用解析 一.CAEmitterLayer CAEmitterLayer是CoreAnimation框架中的粒子发射层,在以前的一片 ...

  7. 2017云栖大会门票转让_「揭秘GP」云栖大会 | Greenplum 6.0 内核优化解读和7.0展望...

    9月25日,云栖大会在杭州阿里巴巴云栖小镇正式拉开序幕,三天会议期间,共吸引了200多位世界级科学家.400多家科技合作伙伴参与,科技展区面积超过3万平方米,共发布了1000多项顶尖技术. 云栖大会现 ...

  8. Enterprise Library v3 初步开发计划

    Tom Hollander在几天前发布了一篇Post,提出了一些Enterprise Library v3(下一个版本的Enterprise Library 具体的名称还没定,暂时先用Enterpri ...

  9. 从0开发《工程测绘大师》小程序之什么是微信小程序篇(一)

    我们今天来讲讲如何从0开发<工程测绘大师>小程序之什么是微信小程序篇.先来说说什么是微信小程序,什么是微信小程序?为什么会有微信小程序诞生?它到底解决了什么痛点?与传统的网页开发和APP相 ...

  10. 三星android 8.0的变化,三星发布最新android 8.0升级计划 最快11月部分升级

    [TechWeb]9月30日消息,近日不少主流机型都已经预装android 8.0操作系统,可是去年的那些主流机型还处于旧系统状态,手机厂商开始加紧为主流机型加入安卓8.0升级计划.现在最新消息,三星 ...

最新文章

  1. python官网怎么改中文-如何配置pycharm为中文?
  2. 一文了解2020年中国液冷数据中心行业市场现状与发展前景分析市场规模有望破千亿...
  3. MTK DDR不能兼容分析
  4. 嵌入式学习路线怎么学,如何学习嵌入式系统
  5. linux mysql主从配置_linux下mysql主从配置
  6. 三周的 软件工程实践课 课程安排建议
  7. 看ADS如何治愈DDoS伤痛
  8. 使用React和axios设置服务器端渲染的最简单方法
  9. C# 解决窗体假死的状态
  10. wgs84坐标系转换工具_ArcGIS中不同坐标系之间的转换
  11. 搜狐提出畅游私有化要约 后者收盘涨近50%
  12. linux查询用过的历史命令,在linux中,怎麼查看系统的版本,怎麼查看自己用过的历史命令...
  13. 给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?...
  14. Python 一键转 Java?“Google 翻译”你别闹
  15. uhd630黑苹hdmi_【EFI】联想 ThinkCentre M920t-N000 i5-9500 UHD630 ALC662 10.14.6 HDMI 黑苹果Hackintosh 引导下载...
  16. Cygwin的进程管理
  17. AutoCAD2020命令提示框信息设置
  18. Installshield如何实现升级覆盖文件
  19. 按键精灵---后台按键及鼠标操作
  20. LPC1768 IAP

热门文章

  1. js控制flash播放器
  2. 详解js继承的那些事儿
  3. excel数据处理技巧笔记
  4. 原生select下拉框样式修改:去除聚焦的黄色边框样式
  5. php paypal ipn,PHP 开发详解:PayPal Instant Payment Notification (IPN)
  6. 如何提取NC中的数据不同维度信息(如:变量、时间等
  7. 华为ensp中AC下发配置
  8. 微信小程序 - 点击事件传递参数(简单详细)
  9. PN结、二极管原理详解与应用
  10. maven 环境变量的配置