二 Ceph存儲工作原理及實現


  認識Ceph

  ceph是一個能提供文件存儲,快存儲和對象存儲的分布式存儲系統。它提供了一個可無限伸縮的Ceph存儲集群

  ceph構架

  參考官網:https://ceph.io/

  中文官網:http://docs.ceph.org.cn/

 

   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開源社區作為其最初的核心子項目之一.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM