OpenstackCeph分布式存储的功能实现和适用场景
关于Openstack的分布式存储,我关注Ceph,swift,hdfs的功能实现和优缺点,适用场景。
1.存储文件大小
HDFS、HBase、Hive不太适合存文档、图片大小的文件,HDFS适用于存大文件。
SWIFT:处理几个G的大文件性能上可能会比HDFS差,因为没有条带化。但遇到很多几兆、几十兆的,这些文件的存储,HDFS就不如SWIFT。所以对于日常文件的单独处理用SWIFT,集中处理如果达到G级用HDFS。
2.存储类型:块存储和对象存储
如果你只需要用块存储,那当然是Ceph,如果只需要用对象存储,那当然是SWIFT。各自有各自擅长的地方,不过现在因为Ceph也支持对象存储,SWIFT和Ceph又是OpenStack社区非常频繁提到的两种存储形式,所以,有很多人会把SWIFT和Ceph在一起比较。
如果只要用对象存储,就选择SWIFT;如果只要用块存储,那就Ceph;即要用对象存储又要用块存储的场合,是用SWIFT还是Ceph呢?我们一般是这样推荐的:
1)如果节点数量很大,推荐用Ceph单独做块,用SWIFT做对象存储,因为在节点数量较大时,Ceph的维护成本比SWIFT要高得多,大多数场景实际应用的时候会发现,大部分数据都可以放到对象存储上(这一点如果有疑问,欢迎随时讨论);
2)如果节点数量少,那就用Ceph统一搞定,因为一般认为生产环境中最小的分布式存储应当有五个节点,所以,如果节点数量少于十个或者刚到十来个,那构建两个分布式存储显然是不理想的(考虑到空间划分问题);
3)如果团队里有牛人能轻松解决Ceph大规模部署问题,那就果断用Ceph;
4)如果希望对象存储能够和OpenStack其他项目无缝结合,如果希望实现多租户,果断用SWIFT来实现对象存储。
3.对象存储概念:
RESTful接口和扁平的数据组织形式。
4.对象存储和文件系统存储区别:
所谓文件系统的本质是POSIX接口,“对象”这个名词是做对象存储的人为了把自己做的东西和文件系统区分开而用的术语,把存在对象存储里的文件叫做“对象”,所以选择文件系统还是对象存储,跟你把这堆数据称作对象还是文件并没有直接关系,而是要看你是需要POSIX还是RESTful HTTP接口,是需要目录结构还是适用扁平数据管理结构。