[TOC] [分布式存储系统(GlusterFS,Swift,Cassandra)设计对比](http://blog.csdn.net/liuhong1123/article/details/12835865) -------------------------------------------------- |名称|优点|缺点|总结|源码链接| |---|---|---|---|---| |GlusterFS |||文件系统标准的posix接口支持,可以做分布式NAS,也有人HPC,甚至支持KVM的虚机卷;做分布式NAS最多,其他方面用的不多,很多互联网视频公司用GlusterFS来做片库;|https://www.gluster.org/| |REX-Ray|||REX-Ray 是一个 EMC {code} 团队领导的开源项目,为 Docker、Mesos 及其他容器运行环境提供持续的存储访问。其设计旨在囊括通用存储、虚拟化和云平台,提供高级的存储功能。|https://github.com/emccode/rexray| |SeaweedFS|||SeaweedFS 是简单,高伸缩性的分布式文件系统,包含两部分:存储数十亿的文件;快速为文件服务。SeaweedFS 作为支持全 POSIX 文件系统语义替代,Seaweed-FS 选择仅实现 key-file 的映射,类似 "NoSQL",也可以说是"NoFS"。|http://github.com/chrislusf/seaweedfs| |ceph|支持POSIX;开源|在Linux主流内核中找到ceph;不成熟,处于测试推广阶段|支持块ceph RBD,对象ceph RGW,文件cephfs;ceph RBD和ceph RGW比较成熟,在openstack社区比较火,做虚机块存储用的很多,cephfs的前期bug比较多,社区目前也在解决这些问题;|https://ceph.com/| |Lustre|开源;支持POSIX;文件被分割成若干的Chunk,每个chunk是一般为1MB-4MB||比较老牌的分布式文件系统,部署在多个san阵列上,不支持副本,支持分布式锁,主要做HPC高性能计算;|http://lustre.org/| |HDFS|大数据批量读写,吞吐量高;一次写入,多次读取,顺序读写;|交互式应用,低延迟很难满足;不支持多用户并发写相同文件;只支持追加写,设计中没有考虑修改写、截断写、稀疏写等复杂的posix语义,目的并不是通用的文件系统,一般作为hadoop ecosystem的存储引擎|如果是很多小文件,nameNode压力大|http://hadoop.apache.org| |moosefs |||比较接近GoogleFS的c++实现,通过fuse支持了标准的posix,算是通用的文件系统,可惜社区不是太活跃;|https://moosefs.com| |BFS||||https://github.com/baidu/bfs| |TFS|开源|小于1M的文件;TFS内部是没有任何数据的内存缓冲的| 适合单个文件比较小的系统|http://tfs.taobao.org| |MogileFs|开源|| 比FastDFS 差|http://www.danga.com| |FastDFS|开源;适合以文件为载体的在线服务;FastDFS没有对文件做分块存储;不需要二次开发即可直接使用;比mogileFS更易维护和使用;直接使用socket通信方式,相对于MogileFS的HTTP方式,效率更高。|文件访问方式使用专有API,不支持POSIX||https://github.com/happyfish100/fastdfs https://www.jianshu.com/p/1c71ae024e5e| |swiftfs|||基于HDFS| |NFS|用户和程序可以象访问本地文件一样访问远端系统上的文件|||http://nfs.sourceforge.net| |Terry-Mao/bfs|||facebook Haystack开源实现,bfs 是使用 Go 编写的分布式文件系统(小文件存储)。|https://github.com/Terry-Mao/bfs| |Torus|||Torus是一种针对容器集群量身打造的存储系统,可以为通过Kubernetes编排和管理的容器集群提供可靠可扩展的存储。这是继etcd、rkt、flannel,以及CoreOS Linux之后CoreOS发布的另一个开源产品。|http://github.com/coreos/torus| |Afero|||Afero 是一个文件系统框架,提供一个简单、统一和通用的 API 和任何文件系统进行交互,作为抽象层还提供了界面、类型和方法。Afero的界面十分简洁,设计简单,舍弃了不必要的构造函数和初始化方法。Afero 作为一个库还提供了一组可交互操作的后台文件系统,这样在与 Afero 协作时,还可以保留 os 和 ioutil 软件包的功能和好处。|http://github.com/spf13/afero| |IPFS|||IPFS 是分布式文件系统,寻求连接所有计算机设备的相同文件系统。在某些方面,这很类似于原始的 Web 目标,但是 IPFS 最终会更像单个比特流群交换的 git 对象。IPFS = InterPlanetary File System|http://github.com/ipfs/go-ipfs| |GPFS(IBM)|不开源||一个很老牌的分布式文件系统,非常强大,有两个分支,一个是通用文件系统,一个是兼容hadoop mapreduce,可惜没有开源,国内也没人买的起;| |googleFs|成本低,运行在廉价的普通硬件上|不开源|不开源,使用困难| |facebook Haystack|||一个专有的图片存储系统的原型,适合小文件和worm场景(write once read many),本身并没有开源,github上已经有一个比较成熟的实现Terry-Mao/bfs(不是百度的BFS)|