背景
Ceph现在已经是Openstack官方主要支持的存储后端,而最新的Ceph不仅可以提供快服务,文件服务,而且还可以提供对象存储。Openstack Swift也提供对象存储服务,那这两者到底是竞争关系,还是互补关系呢?
Ceph
Ceph是一个基于伪随机算法的强一致性分布式存储系统,它主要提供块服务,能很好的支持顺序IO和随机IO。除了用作cinder后端给虚拟机提供卷服务,同时也可以作为glance的后端;
一般来说,为了同时保证写性能和一致性,一个强一致性系统节点间通讯的延迟要尽量小,所以这样的系统一般不支持跨机房,跨地域的大规模部署。
Swift
swift天生就是专门为对象存储模型设计的,这些特征包括:
- 支持不同的存储后端,不依赖后端的任何如多副本,RAID特性来提供可靠性;
- 最终一致性模型;
- 支持跨机房,跨地域部署;
- 主要用来支持append io和顺序io;
对比
下面是Mirantis针对ceph和swift在对象存储服务的对比:
|
Swift |
Ceph |
Replication |
Yes |
Yes |
Max. obj.
size |
5gb
(bigger objects segmented) |
Unlimited |
Multi DC
installation |
Yes (replication on the container level only,
but a blueprint proposed for full inter dc replication) |
No (demands asynchronous eventual consistency
replication, which Ceph does not yet support) |
Integration
/w Opentsack |
Yes |
Partial
(lack of Keystone support) |
Replicas
management |
No |
Yes |
Writing
algorithm |
Synchronous |
Synchronous |
Amazon S3
compatible API |
Yes |
Yes |
Data placement
method |
Ring (static mapping structure) |
CRUSH (algorithm) |
结论
我个人认为,ceph毕竟不是一个专门的对象存储系统,其对象存储服务其实是在block服务上模拟出来的,所以和专门的对象存储swift比起来,在部署规模,使用成本上会有比较大的差距;但是,因为不是所有的云都需要大规模的对象存储,考虑到跨地域场景时,swift的部署也很复杂,所以在刚开始搭建openstack云服务时,或者是对象存储业务量不是很大时,为了节省系统搭建时间,使用ceph提供S3服务也是个不错的选择。
参考资料
|