1、整体对比

文件系统

开发者

开发语言

开源协议

易用性

适用场景

特性

缺点

GFS

Google

不开源

HDFS

Apache

Java

Apache

安装简单,官方文档专业化

存储非常大的文件

大数据批量读写,吞吐量高;一次写入,多次读取,顺序读写

难以满足毫秒级别的低延时数据访问;不支持多用户并发写相同文件;不适用于大量小文件

Ceph

加州大学圣克鲁兹分校Sage Weil

C++

LGPL

安装简单,官方文档专业化

单集群的大中小文件

分布式,没有单点依赖,用C编写,性能较好

基于不成熟的btrfs,自身也不够成熟稳定,不推荐在生产环境使用

TFS

Alibaba

C++

GPL V2

安装复杂,官方文档少

跨集群的小文件

针对小文件量身定做,随机IO性能比较高;实现了软RAID,增强系统的并发处理能力及数据容错恢复能力;支持主备热倒换,提升系统的可用性;支持主从集群部署,从集群主要提供读/备功能

不适合大文件的存储;不支持POSIX,通用性较低;不支持自定义目录结构与文件权限控制;通过API下载,存在单点的性能瓶颈;官方文档少,学习成本高

Lustre

SUN

C

GPL

复杂,而且严重依赖内核,需要重新编译内核

大文件读写

企业级产品,非常庞大,对内核和ext3深度依赖

MooseFS

Core Sp. z o.o.

C

GPL V3

安装简单,官方文档多,且提供Web界面的方式进行管理与监控

大量小文件读写

比较轻量级,用perl编写,国内用的人比较多

对master服务器有单点依赖,性能相对较差

MogileFS

Danga Interactive

Perl

GPL

主要用在web领域处理海量小图片

key-value型元文件系统;效率相比mooseFS高很多

不支持FUSE

FastDFS

国内开发者余庆

C

GPL V3

安装简单,社区相对活跃

单集群的中小文件

系统无需支持POSIX,降低了系统的复杂度,处理效率更高;实现了软RAID,增强系统的并发处理能力及数据容错恢复能力;支持主从文件,支持自定义扩展名;主备Tracker服务,增强系统的可用性

不支持断点续传,不适合大文件存储;不支持POSIX,通用性较低;对跨公网的文件同步,存在较大延迟,需要应用做相应的容错策略;同步机制不支持文件正确性校验;通过API下载,存在单点的性能瓶颈

GlusterFS

Z RESEARCH

C

GPL V3

安装简单,官方文档专业化

适合大文件,小文件性能还存在很大优化空间

无元数据服务器,堆栈式架构(基本功能模块可以进行堆栈式组合,实现强大功能),具有线性横向扩展能力;比mooseFS庞大

由于没有元数据服务器,因此增加了客户端的负载,占用相当的CPU和内存;但遍历文件目录时,则实现较为复杂和低效,需要搜索所有的存储节点,不建议使用较深的路径

GridFS

MongoDB

C++

安装简单

通常用来处理大文件(超过16M)

可以访问部分文件,而不用向内存中加载全部文件,从而保持高性能;文件和元数据自动同步

2、 特性对比

文件系统

数据存储方式

集群节点通讯协议

专用元数据存储点

在线扩容

冗余备份

单点故障

跨集群同步

FUSE挂载

访问接口

HDFS

文件

私有协议(TCP)

占用MDS

支持

存在

不支持

支持

不支持POSIX

Ceph

对象/文件/块

私有协议(TCP)

占用MDS

支持

支持

存在

不支持

支持

POSIX

Lustre

对象

私有协议(TCP)/ RDAM(远程直接访问内存)

双MDS

支持

不支持

存在

未知

支持

POSIX/MPI

MooseFS

私有协议(TCP)

占用MFS

支持

支持

存在

不支持

支持

POSIX

MogileFS

文件

HTTP

占用DB

支持

不支持

存在

不支持

不支持

不支持POSIX

FastDFS

文件/块

私有协议(TCP)

支持

支持

不存在

部分支持

不支持

不支持POSIX

GlusterFS

文件/块

私有协议(TCP)/RDAM(远程直接访问内存)

支持

支持

不存在

支持

支持

POSIX

TFS

文件

私有协议(TCP)

占用NS

支持

支持

存在

支持

未知

不支持POSIX

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

四、选型参考

  • 适合做通用文件系统的有: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。
Logo

更多推荐