1. 程式人生 > 其它 >1、Ceph介紹

1、Ceph介紹

為什麼要用Ceph

Ceph是當前非常流行的開源分散式儲存系統,具有高擴充套件性、高效能、高可靠性等優點,同時提供塊儲存服務(rbd)、物件儲存服務(rgw)以及檔案系統儲存服務(cephfs),Ceph在儲存的時候充分利用儲存節點的計算能力,在儲存每一個數據時都會通過計算得出該資料的位置,儘量的分佈均衡。。目前也是OpenStack的主流後端儲存,隨著OpenStack在雲端計算領域的廣泛使用,ceph也變得更加炙手可熱。國內目前使用ceph搭建分散式儲存系統較為成功的企業有x-sky,深圳元核雲,上海UCloud等三家企業。

Ceph架構介紹

Ceph使用RADOS提供物件儲存,通過librados封裝庫提供多種儲存方式的檔案和物件轉換。外層通過RGW(Object,有原生的API,而且也相容Swift和S3的API,適合單客戶端使用)、RBD(Block,支援精簡配置、快照、克隆,適合多客戶端有目錄結構)、CephFS(File,Posix介面,支援快照,社會和更新變動少的資料,沒有目錄結構不能直接開啟)將資料寫入儲存。

  • 高效能
    a. 摒棄了傳統的集中式儲存元資料定址的方案,採用CRUSH演算法,資料分佈均衡,並行度高
    b.考慮了容災域的隔離,能夠實現各類負載的副本放置規則,例如跨機房、機架感知等
    c. 能夠支援上千個儲存節點的規模,支援TB到PB級的資料
  • 高可擴充套件性
    a. 去中心化
    b. 擴充套件靈活
    c. 隨著節點增加而線性增長
  • 特性豐富
    a. 支援三種儲存介面:塊儲存、檔案儲存、物件儲存
    b. 支援自定義介面,支援多種語言驅動

Ceph核心概念

RADOS

全稱Reliable Autonomic Distributed Object Store,即可靠的、自動化的、分散式物件儲存系統。RADOS是Ceph叢集的精華,使用者實現資料分配、Failover等叢集操作。

Librados

Rados提供庫,因為RADOS是協議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支援。

Crush

Crush演算法是Ceph的兩大創新之一,通過Crush演算法的定址操作,Ceph得以摒棄了傳統的集中式儲存元資料定址方案。而Crush演算法在一致性雜湊基礎上很好的考慮了容災域的隔離,使得Ceph能夠實現各類負載的副本放置規則,例如跨機房、機架感知等。同時,Crush演算法有相當強大的擴充套件性,理論上可以支援數千個儲存節點,這為Ceph在大規模雲環境中的應用提供了先天的便利。

Pool

Pool是儲存物件的邏輯分割槽,它規定了資料冗餘的型別和對應的副本分佈策略,支援兩種型別:副本(replicated)和 糾刪碼( Erasure Code);

PG

PG( placement group)是一個放置策略組,它是物件的集合,該集合裡的所有物件都具有相同的放置策略,簡單點說就是相同PG內的物件都會放到相同的硬碟上,PG是 ceph的邏輯概念,服務端資料均衡和恢復的最小粒度就是PG,一個PG包含多個OSD。引入PG這一層其實是為了更好的分配資料和定位資料;

Object

簡單來說塊儲存讀寫快,不利於共享,檔案儲存讀寫慢,利於共享。能否弄一個讀寫快,利 於共享的出來呢。於是就有了物件儲存。最底層的儲存單元,包含元資料和原始資料。

Ceph核心元件

OSD

OSD是負責物理儲存的程序,一般配置成和磁碟一一對應,一塊磁碟啟動一個OSD程序。主要功能是儲存資料、複製資料、平衡資料、恢復資料,以及與其它OSD間進行心跳檢查,負責響應客戶端請求返回具體資料的程序等;

Pool、PG和OSD的關係:

  • 一個Pool裡有很多PG;
  • 一個PG裡包含一堆物件,一個物件只能屬於一個PG;
  • PG有主從之分,一個PG分佈在不同的OSD上(針對三副本型別);

Monitor

一個Ceph叢集需要多個Monitor組成的小叢集,它們通過Paxos同步資料,用來儲存OSD的元資料。負責堅實整個Ceph叢集執行的Map檢視(如OSD Map、Monitor Map、PG Map和CRUSH Map),維護叢集的健康狀態,維護展示叢集狀態的各種圖表,管理叢集客戶端認證與授權;

MDS

MDS全稱Ceph Metadata Server,是CephFS服務依賴的元資料服務。負責儲存檔案系統的元資料,管理目錄結構。物件儲存和塊裝置儲存不需要元資料服務;

Mgr

ceph 官方開發了 ceph-mgr,主要目標實現 ceph 叢集的管理,為外界提供統一的入口。例如cephmetrics、zabbix、calamari、promethus

RGW

RGW全稱RADOS gateway,是Ceph對外提供的物件儲存服務,介面與S3和Swift相容。

Admin

Ceph常用管理介面通常都是命令列工具,如rados、ceph、rbd等命令,另外Ceph還有可以有一個專用的管理節點,在此節點上面部署專用的管理工具來實現近乎叢集的一些管理工作,如叢集部署,叢集元件管理等。

Ceph三種儲存型別

1、塊儲存(RBD)

  • 優點:

    • 通過Raid與LVM等手段,對資料提供了保護;
    • 多塊廉價的硬碟組合起來,提高容量;
    • 多塊磁碟組合出來的邏輯盤,提升讀寫效率;
  • 缺點:

    • 採用SAN架構組網時,光纖交換機,造價成本高;
    • 主機之間無法共享資料;
  • 使用場景

    • docker容器、虛擬機器磁碟儲存分配;
    • 日誌儲存;
    • 檔案儲存;

2、檔案儲存(CephFS)

  • 優點:

    • 造價低,隨便一臺機器就可以了;
    • 方便檔案共享;
  • 缺點:

    • 讀寫速率低;
    • 傳輸速率慢;
  • 使用場景

    • 日誌儲存;
    • FTP、NFS;
    • 其它有目錄結構的檔案儲存

3、物件儲存(Object)(適合更新變動較少的資料)

  • 優點:

    • 具備塊儲存的讀寫高速;
    • 具備檔案儲存的共享等特性;
  • 使用場景

    • 圖片儲存;
    • 視訊儲存;