美文网首页
七天七文件系统之moosefs

七天七文件系统之moosefs

作者: 要厉害的 | 来源:发表于2019-06-22 16:16 被阅读0次

    选分布式文件系统就像选一辆车,功能相近(高可用、高性能、高可扩展性),但是总有不一样的地方。

    作为老牌的开源的软件定义存储,项目始于2008年,来自欧洲的波兰华沙。目的是为了解决30W每秒的大数据处理作业。使用C语言开发,目前版本为3.0。设计理念和其他分布式文件系统大同小异。

    - 高可用(High Availability),为数据提供副本,为元数据采用日志加元数据备份的方式保证数据不丢失。

    - 低开销的数据安全能力(Low-cost data safety) 在使用冗余的情况下可以节省55%的空间(这点倒是很有意思)。

    -可扩展性(Scalability)可以扩展到16EB,最大存储20亿个文件。

    - 高性能(High performance)能做到数据的并发读写。

    架构组件

    mfsmaster 负责存储整个文件系统的元数据。一般元数据会就近存在本地以raid1和raid1+0组成的磁盘。在设计上该服务只是一个单线程,因此需要配备主频更高的处理核心,而对核心数的要求则相对较低。这里可能存在单点的性能瓶颈。

    mfschunkserver负责存储文件系统的数据,由一组服务器组成。一般使用JBOD上面做xfs文件系统。在设计的时候数据服务能够发现底层磁盘出现的问题,将数据复制到其他地方,并将该磁盘设置成损坏。moosefs是不建议底层磁盘采用raid方式,因为它检测不出raid盘坏,出现了问题。(在使用beegfs底层用raid时就有类似的问题,只有在IO的时候才发现磁盘组有问题,甚是痛苦)

    chunkserver的状态有三种normal/internal rebalance/overloaded。这点和beegfs很像也是三种状态。三种状态对应的是所使用磁盘的状态,normal代表磁盘正常,internal rebalance一般在新的节点加入时出现,之后chunkserver之间会发生数据平衡。overloaded代表此时磁盘负载过重,并会向mfsmaster发出警告消息。

    在区分chunkserver时moosefs引入了label的概念,给不同的服务器设置label,并将文件和目录设置不同的label表达式,达到控制数据流向目的。

    mfsmetalogger 负责作为元数据服务器的备份,定期获取元数据服务的changelog(也可以理解为journal)和元数据,在mfsmaster出现问题的时候负责接管元数据服务。

    mfsmount负责做客户端工作,同mfsmaster获得元数据,同mfschunkserver获得数据。数据块的最大为64MB。

    内部的文件完整性检查使用hash算法的方式。

    架构设计上lizardfs作为moosefs的一个分支基本是一致的。和HDFS也很神似。

    特性功能

    支持节点加入之后的数据均衡,和节点损坏之后的自动恢复,自动15分钟内1TB的恢复能力

    能够为不同的文件以及目录选择数据存储的节点。

    提供缓存存储。它是一个提升性能的手段,使得存储资源可以合理利用。

    接口方面,文件提供的接口兼容POSIX接口,提供原生的客户端FUSE和Windows(提供原生客户端的目的可以考虑功能,但主要是性能方面的要求)。

    数据保护方面,底层存储提供的数据保护,支持纠删码和默认为2的数据副本

    访问控制方面支持,原生的Unix权限和访控列表(ACL)。

    支持快照,快照是一些备份机制的基础。

    回收站功能,防止数据被误删。

    提供基于目录的配额

    IO由多线程并发执行。

    目前提供两个版本普通版专业版。普通版使用(GPLv2)许可,专业版面向的是企业用户提供了其他的一些特性(windows客户端、元数据高可用、以及纠删码),这些特性旨在提高系统的稳定性和可靠性。目前现在很多分布式厂商也采用类似的玩法,不如beegfs开源了自己的版本,但在如windows客户端等一些功能上采用商用的许可证。

    领域

    宣传比较多的为大数据提供存储。多分布在欧洲。

    相关资源

    官方网站:https://moosefs.com

    相关文章

      网友评论

          本文标题:七天七文件系统之moosefs

          本文链接:https://www.haomeiwen.com/subject/bybyqctx.html