通常的分布式系统都会采用一个或者多个中心服务用来控制数据的分布,这种机制使得每次IO操做都会先去一个地方查询数据在集群中的元数据信息。当集群的规模变大或者系统的workload比较大时,这些中心服务器必然会成为性能上的瓶颈。Ceph摒弃了这种作法,而是经过引入CRUSH算法,将数据分布的查询操做变成了计算操做,而且是在client端完成。算法
CRUSH是受控复制的分布式hash算法,是ceph里面用于控制数据分布的一种方法,可以高效稳定的将数据分布在普通的结构化的集群中。它是一种伪随机的算法,在相同的环境下,类似的输入获得的结果之间没有相关性,相同的输入获得的结果是肯定的。它只须要一个集群的描述地图和一些规则就能够根据一个整型的输入获得存放数据的一个设备列表。Client在有IO操做的时候,可能会执行CRUSH算法。swift
user:对象存储的使用者,默认状况下,一个用户只能建立1000个存储桶。服务器
bucket:存储桶,用来管理对象的容器。分布式
object:对象,泛指一个文档、图片或视频文件等,尽管用户能够直接上传一个目录,可是ceph并不按目录层级结构保存对象, ceph全部的对象扁平化的保存在bucket中。性能