分布式文件系统的对比
系统无需支持POSIX,降低了系统的复杂度,处理效率更高;不支持断点续传,不适合大文件存储;对跨公网的文件同步,存在较大延迟,需要应用做相应的容错策略;由于没有元数据服务器,因此增加了客户端的负载,占用相当的CPU和内存;但遍历文件目录时,则实现较为复杂和低效,需要搜索所有的存储节点,不建议使用较深的路径。无元数据服务器,堆栈式架构(基本功能模块可以进行堆栈式组合,实现强大功能),具有线性横向扩展
1、整体对比
文件系统 |
开发者 |
开发语言 |
开源协议 |
易用性 |
适用场景 |
特性 |
缺点 |
---|---|---|---|---|---|---|---|
GFS |
|
不开源 |
|||||
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。
更多推荐
所有评论(0)