相信很多公司和我们一样,本就不充足的研发队伍,由于种种历史和政治原因,在同一个领域里充斥了大量类似的开源项目,在我们的分布式存储系统里,目前就采用了HDFS,Gluster,Swift和Ceph四种系统。今天就凭着印象,聊一聊这四种分布式存储的不同。
1.HDFS
其实在真正搞过分布式文件系统的人看来,HDFS不能算得上是真正的文件系统。因为他实在太简单,太粗糙。甚至连搞个append接口都搞了老半天,到现在应该还不支持随机读写之类的文件系统最基本的功能。他***的优势是借助hadoop这个生态系统得以比较稳定。另外还有一个优势就是他是用 java写的,这样一帮java程序员也可以号称自己在搞文件系统了。
HDFS到现在应该还是不是真正意义上的分布式,他的nameode的federation相当于静态目录,虽然共享存储池,但是namespace是不共享的。
2.Gluster
Gluster***的优势在于他继承了传统文件系统的posix接口,而且表现比较稳定。虽然他的元数据的分布式hash带来很多性能上的问题,但如果非要用文件系统接口的似乎也没有更好的选择。
但是Gluster用的是c/c++,对于很多只想拿来就用不想踩坑的同学无疑是个负担,万一出了问题不是很容易解决。
3.Swift
Swift的流行得益于openstack,它应该是目前***的对象存储系统,印象中有在生产环节跑到上百PB的case。但总感觉这玩意用python写的,有点粗糙,似乎就是一堆脚本的拼凑。
4.Ceph
***不得不谈一下笔者的***,Ceph。初次接触他是在2012年初。它***的优势就是同时支持三种存储接口,是真正意义上的融合存储。但它 mds的设计过于学术,似乎很难有稳定下来的一天。Ceph真正大火也是得益于跟opestack的结合,现在它已经是openstack快存储的不二之选。它的对象存储也还算稳定,dreamhost,CERN包括最近的yahoo都有PB级的生产级别使用。
总结下来HDFS如果不是离线的大数据计算,应该是最没吸引力的。如果是非要用文件系统接口,那只能是gluster。如果单纯的对象存储推荐swift。如果考虑更好的兼容S3或者跟openstack相结合,当然是ceph。
Gluster和Ceph都是c/c++,对于java和pyhon大行其道的今天,选择要慎重。但如果有点情怀特别是追求底层的性能,可以挑战一下ceph。