1. 程式人生 > >001.Ceph簡介概述

001.Ceph簡介概述

一 Ceph簡介

Red Hat Ceph是一個分散式的資料物件儲存,系統設計旨在效能、可靠性和可擴充套件性上能夠提供優秀的儲存服務。分散式物件儲存是儲存的未來,因為它們適應非結構化資料,並且客戶端可以同時使用當前及傳統的物件介面進行資料存取。例如:
  • 本地語言繫結介面(C/C++, Java, Python)
  • RESTful 介面(S3/Swift)
  • 塊裝置介面
  • 檔案系統介面
Red Hat Ceph具有非常好的可擴充套件性——數以千計的客戶端可以訪問PB級到EB級甚至更多的資料。

二 Ceph優勢及特點

2.1 Ceph優勢

Ceph區別於其他檔案系統(如glusterfs、swift等)主要具有以下優勢:
  1. CRUSH演算法
CRUSH演算法執行在Ceph Clients和Ceph OSD上,用於計算物件的位置資訊,它代替了傳統的查表的思想,把工作分攤到所有Ceph Clients和Ceph OSD上,增強了彈性擴充套件和高可用性,是ceph的兩大創新之一。ceph摒棄了傳統的集中式儲存元資料定址的方案,而使用CRUSH演算法完成資料的定址操作。CRUSH在一致性雜湊基礎上很好的考慮了容災域的隔離,能夠實現各類負載的副本放置規則,例如跨機房、機架感知等。Crush演算法有相當強大的擴充套件性,理論上支援數千個儲存節點。
  1. 高可用
Ceph中的資料副本數量可以由管理員自行定義,並可以通過CRUSH演算法指定副本的物理儲存位置以分隔故障域,支援資料強一致性;ceph可以忍受多種故障場景並自動嘗試並行修復。
  1. 高擴充套件性
Ceph不同於swift,客戶端所有的讀寫操作都要經過代理節點,一旦叢集併發量增大時,代理節點很容易成為單點瓶頸。Ceph本身並沒有主控節點,擴充套件起來比較容易,並且理論上,它的效能會隨著磁碟數量的增加而線性增長。
  1. 特性豐富
Ceph支援三種呼叫介面:物件儲存,塊儲存,檔案系統掛載。三種方式可以一同使用。 2.2 Ceph特點
  1. 統一儲存
  2. 無任何單點故障
  3. 資料多份冗餘
  4. 儲存容量可擴充套件
  5. 自動容錯及故障自愈

三 體系架構

體系架構示意圖(來源於官方):
001

3.1 RADOS

Ceph的底層核心為RADOS(Reliable, Autonomic Distributed Object Store),RADOS本身也是分散式儲存系統,CEPH所有的儲存功能都是基於RADOS實現。Ceph的上層應用呼叫本機上的librados API,再由後者通過socket與RADOS叢集中的其他節點通訊並完成各種操作。 Ceph的本質是一個物件儲存。RADOS由兩個元件組成:OSD和Monitor。 OSD主要提供儲存資源,每一個disk、SSD、RAID group或者一個分割槽都可以成為一個OSD,而每個OSD還將負責向該物件的複雜節點分發和恢復; Monitor維護Ceph叢集並監控Ceph叢集的全域性狀態,提供一致性的決策。 RADOS分發策略依賴於CRUSH(Controlled Replication Under Scalable Hashing)演算法(基於可擴充套件雜湊演算法的可控複製)。

3.2 RADOS GW和RBD

RADOS GateWay、RBD其作用是在librados庫的基礎上提供抽象層次更高、更便於應用或客戶端使用的上層介面。其中,RADOS GW是一個提供與Amazon S3和Swift相容的RESTful API的gateway,以供相應的物件儲存應用開發使用。 RBD則提供了一個標準的塊裝置介面,常用於在虛擬化的場景下為虛擬機器建立volume。目前,Red Hat已經將RBD驅動集成於KVM/QEMU中,以提高虛擬機器訪問效能。這兩種方式目前在雲端計算中應用的比較多。

3.3 CEPHFS

CEPHFS則提供了POSIX介面,使用者可直接通過客戶端掛載使用。它是核心態的程式,所以無需呼叫使用者空間的librados庫。它通過核心中的net模組來與Rados進行互動。

四 Ceph角色及原理

4.1 角色及作用

002 所有Ceph儲存叢集的部署都始於部署一個個Ceph節點、網路和Ceph儲存叢集。Ceph儲存叢集至少需要一個Ceph Monitor和兩個OSD守護程序。而執行Ceph檔案系統客戶端時,則必須要有元資料伺服器(Metadata Server)。
  • Ceph OSDs:Ceph OSD守護程序( Ceph OSD )的功能是儲存資料,處理資料的複製、恢復、回填、再均衡,並通過檢查其他OSD守護程序的心跳來向Ceph Monitors提供一些監控資訊。當Ceph儲存叢集設定為有2個副本時,至少需要2個OSD守護程序,叢集才能達到active+clean狀態(Ceph預設有3個副本)。
  • Monitors:Ceph Monitor維護著展示叢集狀態的各種圖表,包括監視器圖、OSD圖、歸置組(PG)圖、和CRUSH 圖。Ceph 儲存著發生在Monitors、OSD和PG上的每一次狀態變更的歷史資訊(稱為epoch)。
  • MDSs: Ceph元資料伺服器(MDS)為Ceph檔案系統儲存元資料(也就是說,Ceph塊裝置和Ceph 物件儲存不使用MDS)。元資料伺服器使得POSIX檔案系統的客戶端,可以在不對Ceph儲存叢集造成負擔的前提下,執行諸如ls、find等基本命令。

4.2 儲存通訊機制

03 當一個OSD需要儲存資料時(不管是來自Ceph塊裝置、Ceph物件儲存、Ceph檔案系統、還是基於librados的自定義實現),Ceph OSD在扁平的名稱空間內把所有資料都儲存為物件。 004 提示:物件包含一個識別符號、二進位制資料、和由名字/值對組成的元資料,元資料語義完全取決於Ceph客戶端。例如,CephFS用元資料儲存檔案屬性,如檔案所有者、建立日期、最後修改日期等等。一個物件ID不止在本地唯一 ,它在整個叢集內都是唯一的。 Ceph客戶端維護物件ID和儲存物件的儲存池名稱,但它們既不需要維護物件到OSD的索引,也不需要與一個集中的物件索引進行通訊來查詢資料物件的位置。 為了能夠儲存並獲取資料,Ceph客戶端首先會訪問一臺Ceph mon並得到最新的儲存叢集對映關係,然後Ceph客戶端可以通過提供的物件名稱與儲存池名稱,使用叢集對映關係和CRUSH演算法(可控的、可擴充套件的、分散式的副本資料放置演算法)來計算出提供物件所在的歸置組(PG)和主Ceph OSD。 最後,Ceph客戶端連線到可執行讀寫操作的主OSD上進而達到資料的儲存與獲取。客戶端和OSD之間沒有中間伺服器,中介軟體或匯流排。

五 Ceph應用場景

Ceph的應用場景主要由它的架構確定,Ceph提供物件儲存、塊儲存和檔案儲存。

5.1 LIBRADOS應用

通俗理解,Librados提供了應用程式對RADOS的直接訪問,目前Librados已經提供了對C、C++、Java、Python、Ruby和PHP的支援。它支援單個單項的原子操作,如同時更新資料和屬性、CAS操作,同時有物件粒度的快照操作。它的實現是基於RADOS的外掛API,也就是在RADOS上執行的封裝庫。

5.2 RADOSGW應用

此類場景基於Librados之上,增加了HTTP協議,提供RESTful介面並且相容S3、Swfit介面。RADOSGW將Ceph叢集作為分散式物件儲存,對外提供服務。

5.3 RBD應用

此類場景也是基於Librados之上的,細分為下面兩種應用場景。 第一種應用場景為虛擬機器提供塊裝置。通過Librbd可以建立一個塊裝置(Container),然後通過QEMU/KVM附加到VM上。通過Container和VM的解耦,使得塊裝置可以被繫結到不同的VM上。 第二種應用場景為主機提供塊裝置。這種場景是傳統意義上的理解的塊儲存。 以上兩種方式都是將一個虛擬的塊裝置分片儲存在RADOS中,都會利用資料條帶化提高資料並行傳輸,都支援塊裝置的快照、COW(Copy-On-Write)克隆。最重要的是RBD還支援Live migration。

5.4 CephFS(Ceph檔案系統)應用

此類場景是基於RADOS實現的PB級分散式檔案系統,其中引入MDS(Meta Date Server),它主要為相容POSIX檔案系統提供元資料,比如檔案目錄和檔案元資料。同時MDS會將元資料儲存在RADOS中,這樣元資料本身也達到了並行化,可以大大加快檔案操作的速度。MDS本身不為Client提供資料檔案,只為Client提供對元資料的操作。當Client開啟一個檔案時,會查詢並更新MDS相應的元資料(如檔案包括的物件資訊),然後再根據提供的物件資訊直接從RADOS中得到檔案資料。   更多有趣知識可見:https://blog.csdn.net/sunhf_csdn/article/details/79797186 官方文件:http://docs.ceph.org.cn 參考:http://ceph.org.cn/2018/06/29/red-hat-ceph%E5%AD%98%E5%82%A8-%E3%80%8A%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3ceph%E6%9E%B6%E6%9E%84%E3%80%8B/ https://www.jianshu.com/p/25163032f57f http://www.51niux.com/?id=161