通常的分佈式系統都會採用一個或者多箇中心服務用來控制數據的分佈,這種機制使得每次IO操做都會先去一個地方查詢數據在集羣中的元數據信息。當集羣的規模變大或者系統的workload比較大時,這些中心服務器必然會成爲性能上的瓶頸。Ceph摒棄了這種作法,而是經過引入CRUSH算法,將數據分佈的查詢操做變成了計算操做,而且是在client端完成。算法
CRUSH是受控複製的分佈式hash算法,是ceph裏面用於控制數據分佈的一種方法,可以高效穩定的將數據分佈在普通的結構化的集羣中。它是一種僞隨機的算法,在相同的環境下,類似的輸入獲得的結果之間沒有相關性,相同的輸入獲得的結果是肯定的。它只須要一個集羣的描述地圖和一些規則就能夠根據一個整型的輸入獲得存放數據的一個設備列表。Client在有IO操做的時候,可能會執行CRUSH算法。swift
user:對象存儲的使用者,默認狀況下,一個用戶只能建立1000個存儲桶。服務器
bucket:存儲桶,用來管理對象的容器。分佈式
object:對象,泛指一個文檔、圖片或視頻文件等,儘管用戶能夠直接上傳一個目錄,可是ceph並不按目錄層級結構保存對象, ceph全部的對象扁平化的保存在bucket中。性能