認識Ceph
ceph是一個能提供文件存儲,快存儲和對象存儲的分布式存儲系統。它提供了一個可無限伸縮的Ceph存儲集群
ceph構架
參考官網:https://ceph.io/
ceph架構
中文圖示
RADOS:Ceph的高可靠,高可拓展,高性能,高自動化都是由這一層來提供的, 用戶數據的存儲最終也都是通過這一層來進行存儲的。
可以說RADOS就是ceph底層原生的數據引擎, 但實際應用時卻不直接使用它,而是分為如下4種方式來使用
LIBRADOS是一個庫, 它允許應用程序通過訪問該庫來與RADOS系統進行交互,支持多種編程語言。如Python,C,C++等. 簡單來說,就是給開發人員使用的接口。
CEPH FS通過Linux內核客戶端和FUSE來提供文件系統。(文件存儲)
RBD通過Linux內核客戶端和QEMU/KVM驅動來提供一個分布式的塊設備。(塊存儲)
RADOSGW是一套基於當前流行的RESTFUL協議的網關,並且兼容S3和Swift。(對象存儲)
ceph存儲數據方法(IO算法)
1,File用戶需要讀寫的文件。File->Object映射
a.ino(File的元數據,File的唯一id)
b.ono(File切分產生的某個object序號,默認以4M分一個快大小)
c.oid(object id:ino+ono)
2,Object是RADOS需要的對象,Ceph指定一個靜態hash函數計算oid的值,將oid映射成一個近似均勻分布的偽隨機值,然后和mask按位相於,得到pgid.Object->PG映射
a.hash(oid)& mask->pgid
b.mask=PG總數m(m為2的整數冪)-1
3.PG(Placement Group)用途是對object的存儲進行組織和位置映射(類似於redis cluter里面的slot概念)一個PG里面會有很多object。采用CRUSH算法將pgid代入其中,然后得到一組OSD。PG-》OSD映射
a.CRUSH
拓展名詞
RESTFUL: RESTFUL是一種架構風格,提供了一組設計原則和約束條件,http就屬於這種風格的典型應用。REST最大的幾個特點為:資源、統一接口、URI和無狀態。
資源: 網絡上一個具體的信息: 一個文件,一張圖片,一段視頻都算是一種資源
統一接口: 數據的元操作,即CRUD(create, read, update和delete)操作,分別對應於HTTP方法
* GET(SELECT):從服務器取出資源(一項或多項)。
* POST(CREATE):在服務器新建一個資源。
* PUT(UPDATE):在服務器更新資源(客戶端提供完整資源數據)。
* PATCH(UPDATE):在服務器更新資源(客戶端提供需要修改的資源數據)。
* DELETE(DELETE):從服務器刪除資源。
* URI(統一資源定位符): 每個URI都對應一個特定的資源。要獲取這個資源,訪問它的URI就可以。最典型的URI即URL
* 無狀態: 一個資源的定位與其它資源無關,不受其它資源的影響。
S3 (Simple Storage Service 簡單存儲服務): 可以把S3看作是一個超大的硬盤, 里面存放數據資源(文件,圖片,視頻等),這些資源統稱為對象.這些對象存放在存儲段里,在S3叫做bucket.
和硬盤做類比, 存儲段(bucket)就相當於目錄,對象就相當於文件
硬盤路徑類似`/root/file1.txt`
S3的URI類似`s3://bucket_name/object_name`
swift: 最初是由Rackspace公司開發的高可用分布式對象存儲服務,並於2010年貢獻給OpenStack開源社區作為其最初的核心子項目之一.