分布式文件系统对比与选型参考

一、分布式文件系统

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。

判断一个分布式文件系统是否优秀,取决于以下三个因素:

1. 数据的存储方式

例如有1000万个数据文件,可以在一个节点存储全部数据文件,在其他N个节点上每个节点存储1000/N万个数据文件作为备份;或者平均分配到N个节点上存储,每个节点上存储1000/N万个数据文件。无论采取何种存储方式,目的都是为了保证数据的存储安全和方便获取

2. 数据的读取速率

包括响应用户读取数据文件的请求、定位数据文件所在的节点、读取实际硬盘中数据文件的时间、不同节点间的数据传输时间以及一部分处理器的处理时间等。各种因素决定了分布式文件系统的用户体验。即分布式文件系统中数据的读取速率不能与本地文件系统中数据的读取速率相差太大,否则在本地文件系统中打开一个文件需要2秒,而在分布式文件系统中各种因素的影响下用时超过10秒,就会严重影响用户的使用体验。

3. 数据的安全机制

由于数据分散在各个节点中,必须要采取冗余、备份、镜像等方式保证节点出现故障的情况下,能够进行数据的恢复,确保数据安全。

二、主流分布式文件系统介绍

目前主流的分布式文件系统有:GFS、HDFS、Ceph、Lustre、MogileFS、MooseFS、FastDFS、TFS、GridFS等。

1. GFS(Google File System)

Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。尽管Google公布了该系统的一些技术细节,但Google并没有将该系统的软件部分作为开源软件发布。

2. HDFS(Hadoop Distributed File System)

Hadoop 实现了一个分布式文件系统,简称HDFS。Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapReduce算法的一种开源应用,是Google开创其帝国的重要基石。

参考链接:

http://hadoop.apache.org/docs/r2.9.1/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

3. Ceph

是加州大学圣克鲁兹分校的Sage Weil攻读博士时开发的分布式文件系统。并使用Ceph完成了他的论文。
由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。ceph目前还不足够成熟,它基于的btrfs本身也不成熟,它的官方网站上也明确指出不要把ceph用在生产环境中

参考链接:

https://github.com/ceph/ceph

https://ceph.com

4. Lustre

Lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护的。该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数据量存储系统。目前Lustre已经运用在一些领域,例如HP SFS产品等。

适用高性能计算HPC领域,适用于大文件连续读写

参考链接:

http://lustre.org/

5. MooseFS

支持FUSE,相对比较轻量级,对master服务器有单点依赖,用perl编写,性能相对较差,国内用的人比较多。

参考链接:

https://moosefs.com

https://sourceforge.net/projects/moosefs/?source=directory

https://www.cnblogs.com/hjc4025/p/9956988.html

6. MogileFS

由memcahed的开发公司danga一款perl开发的产品,目前国内使用mogielFS的有图片托管网站yupoo等。MogileFS是一套高效的文件自动备份组件,由Six Apart开发,广泛应用在包括LiveJournal等web2.0站点上。

参考链接:

https://github.com/mogilefs

7. FastDFS

是一款类似Google FS的开源分布式文件系统,是纯C语言开发的。FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

参考链接:

https://github.com/happyfish100/fastdfs

https://www.cnblogs.com/shenxm/p/8459292.html

8. GlusterFS

开源分布式横向扩展文件系统,可以根据存储需求快速调配存储,内含丰富的自动故障转移功能,且摈弃集中元数据服务器的思想。适用于数据密集型任务的可扩展网络文件系统,具有可扩展性、高性能、高可用性等特点。gluster于2011年10月7日被red hat收购。

参考链接:

http://www.gluster.org

https://blog.csdn.net/liuaigui/article/details/6284551

9. TFS(Taobao File System)

TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器 集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用 在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化 了文件的访问流程,一定程度上为TFS提供了良好的读写性能。

参考链接:

http://code.taobao.org/p/tfs/src/

10. GridFS

MongoDB是一种知名的NoSql数据库,GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容,文件内容按一定大小分成若干块,每一块存在一个Document中,这种方法不仅提供了文件存储,还提供了对文件相关的一些附加属性(比如MD5值,文件名等等)的存储。文件在GridFS中会按4MB为单位进行分块存储。

参考链接:

https://docs.mongodb.com/manual/core/gridfs

三、分布式文件系统的对比

1. 综合性对比

2. 特性对比

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),也就是Unix下应用程序共同遵循的一种规范。支持POSIX的应用程序意味着在各个Unix系统间提供了跨平台运行的支持。

四、选型参考

1. 按特性分类

适合做通用文件系统的有:Ceph,Lustre,MooseFS,GlusterFS;

适合做小文件存储的文件系统有:Ceph,MooseFS,MogileFS,FastDFS,TFS;

适合做大文件存储的文件系统有:HDFS,Ceph,Lustre,GlusterFS,GridFS;

轻量级文件系统有:MooseFS,FastDFS;

简单易用,用户数量活跃的文件系统有:MooseFS,MogileFS,FastDFS,GlusterFS;

支持FUSE挂载的文件系统有:HDFS,Ceph,Lustre,MooseFS,GlusterFS。

2. 初步筛选

考虑到GFS不开源,学习成本高,且相关特性资料不全面的情况下,暂时先不考虑使用GFS;

Ceph目前不够成熟稳定,很少有使用在生产环境的案例,暂时排除;

Lustre对内核依赖程度过重,且不易安装使用,暂时排除;

TFS安装复杂,且官方文档少,不利于以后的学习使用,暂时先排除;

经初步筛选剩下的文件系统有:HDFS、MooseFS、MogileFS、FastDFS、GlusterFS、GridFS。

3. 根据需求分析进一步筛选

需求:

  • 需要搭建一部管理原始凭证的文件系统,原始凭证的文件类型主要是小图片,写操作量少,读操作量大,且对安全性要求较高。
  • 随着系统在使用过程中数据量逐步庞大,图片的量会变得繁多,对图片读取速率要求尽可能高但不追求极致(无需到毫秒级)。
  • 文件系统需要有较完善的冗余备份与容错机制,功能尽量精简耐用,安装配置应简单且适合于国产环境部署。

分析:

  1. 根据需求,首选需要选择适合海量小图片存储的文件系统,适合的文件系统有:MooseFS,MogileFS,FastDFS。
  2. 其次需要支持冗余备份,适合的文件系统有:MooseFS、FastDFS、GlusterFS。
  3. 符合条件1,2且功能精简的文件系统有:FastDFS。
  4. 符合条件1,2且功能全面的文件系统有:MooseFS。

总结:

MooseFS功能较为全面,支持在线扩容、冗余备份、FUSE挂载和POSIX访问接口,不支持跨集群同步,存在单点故障,性能相对较差。

FastDFS功能精简,支持在线扩容、冗余备份,部分支持跨集群同步,不支持FUSE挂载和POSIX访问接口,不存在单点故障,性能较好。

提供的建议选型参考为FastDFS或MooseFS,可根据需求的细化进一步分析选取。

备注:此选型参考提供的是分布式文件系统的选型建议,根据系统需求也可选择NFS等其他更合适的文件系统类型;此选型参考仅局限于分析范围内的文件系统,仍然有其他类型的文件系统可能是更好的选择;此选型参考中没有确切的性能测试数据作为对比,无法提供性能方面的精确比较。

五、参考文献

几种分布式文件系统对比 - izhiguo - 博客园 (cnblogs.com)
五大主流分布式存储技术对比分析_SandStone杉岩数据

单存储节点破百万IOPS,焱融科技重新定义高性能文件存储-新闻频道-和讯网

焱融全闪 X NVIDIA InfiniBand:打造 AI 时代 GPU 计算的高性能存储技术 -博客 -焱融科技 (yanrongyun.com)

业界大厂分布式文件存储调研 - 知乎

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值