1. 程式人生 > >【分析】Ceph系統架構與基本概念

【分析】Ceph系統架構與基本概念

Ceph系統架構與基本概念

Ceph是一種為優秀的效能、可靠性和可擴充套件性而設計的統一的、分散式儲存系統。

“統一”表示Ceph一套儲存系統可以同時提供物件儲存、塊儲存和檔案系統儲存三種功能,以便在滿足不同應用需求的前提下簡化部署和運維。

“分散式”表示Ceph系統是真正的無中心結構和沒有理論上限的系統規模可擴充套件性,在實踐當中,Ceph可以被部署於上千臺伺服器上。

作者:Younger Liu,

本文連結地址為:http://blog.csdn.net/younger_china/article/details/76794987


系統架構

Ceph的系統架構由三個層次組成:最底層也是最核心的部分是RADOS物件儲存系統;第二層是librados庫層;最上層對應著Ceph不同形式的儲存介面實現。


  1. 最底層基於RADOS(reliable,autonomous,distributed object store),其內部包括ceph-osd後臺服務程序和ceph-mon監控程序。

  2. 中間層librados庫用於本地或者遠端通過網路訪問RADOS物件儲存系統。

  3. 最上層面嚮應用提供3種不同的儲存介面:塊儲存介面、物件儲存介面、檔案系統介面。檔案系統的元資料伺服器MDS用於提供元資料訪問。資料直接通過librados庫訪問。

在ceph系統中存在兩個物件概念:一個是RGW中的物件儲存,一個是Ceph的後端儲存的物件(後續稱之為Rados物件),這兩個需要區分:前者是面向使用者的,是使用者介面能訪問到的物件;後者是ceph服務端操作的物件;

Rados

RADOS 主要由兩種節點組成:一種是為數眾多的、負責完成資料儲存和維護功能的OSD(Object Storage Device),另一種則是若干個負責完成系統狀態檢測和維護的monitor。


monitor

Monitor是一個獨立部署的daemon程序。通過組成Monitor叢集來保證自己的高可用。Monitor叢集通過Paxos演算法實現了自己資料的一致性。它提供了整個儲存系統的節點資訊等全域性的配置資訊。

OSD

 OSD是負責物理儲存的daemon程序,其功能儲存資料,處理資料的複製、恢復、回填、再均衡,並通過檢查其他OSD守護程序的心跳來向Ceph Monitors提供一些監控資訊。當 Ceph 儲存叢集設定為有2個副本時,至少需要2個OSD守護程序,叢集才能達到active+clean 狀態。

基本概念

在Ceph叢集有這麼幾個基本概念:rados物件、OSD、PG、PGP、pool、file、rbd、rgw object等,這些基本概念組成了整個Ceph叢集的邏輯架構。

Rados物件

物件是資料儲存的基本單元,一般預設4MB大小。
一個物件有三部分組成:
(1) 物件標誌(ID):唯一標識一個物件。
(2) 物件的資料:其在本地檔案系統中對應一個檔案,物件的資料就儲存在檔案中。
(3) 物件的元資料:以Key-Value(鍵值對)的形式,可以儲存在檔案對應的擴充套件屬性中。

OSD (Object Storage Device)

OSD是負責物理儲存的程序,一般情況下,配置為和磁碟一一對應,一塊磁碟啟動一個OSD程序。(其詳細功能可參照前述介紹)
關係說明:
(1) 一個OSD上可以分佈多個PG
(2) OSD裝置是儲存rados物件的載體

PG (placement group)

PG是OSD之上的一層邏輯,可視其為一個邏輯概念。從名字可理解PG是一個放置策略組,它是物件的集合,該集合裡的所有物件都具有相同的放置策略:物件的副本都分佈在相同的OSD列表上。
關係說明:
(1) PG有主從之分,對於多副本而言,一個PG的主從副本分佈在不同的OSD上;
(2) 一個物件只能屬於一個PG,一個PG包含很多個物件
(3) 一個PG對應於一個OSD列表,PG的所有物件對存放在對應的OSD列表上

這裡的物件是rados object,而非使用者物件

pool

Pool是一個抽象的儲存池,它是PG之上的一層邏輯
它規定了資料冗餘的型別以及對應的副本分佈策略。目前實現了兩種pool型別:replicated型別和Erasure Code型別。
關係說明:
(1) 一個pool由多個PG構成,一個PG只能屬於一個POOL
(2) 同一個Pool中的PG具有相同的型別,比如,如Pool為副本型別,則Pool中所有的PG都是多副本的

PGP (Placement Group for Placemen)

關於PGP的介紹並不多,《Learning Ceph》:

PGP is Placement Group for Placement purpose, which should be kept equal to the total number of placement groups (pg_num). For a Ceph pool, if you increase the number of placement groups, that is, pg_num, you should also increase pgp_num to the same integer value as pg_num so that the cluster can start rebalancing. The undercover rebalancing mechanism can be understood in the following way.The pg_num value defines the number of placement groups, which are mapped to OSDs. When pg_num is increased for any pool, every PG of this pool splits into half, but they all remain mapped to their parent OSD. Until this time, Ceph does not start rebalancing. Now, when you increase the pgp_num value for the same pool, PGs start to migrate from the parent to some other OSD, and cluster rebalancing starts. In this way, PGP plays an important role in cluster rebalancing.

其基本意思為:

1. PGP起到對PG進行歸置的作用;
2. PGP的取值應該與PG相同,在PG的值增大的同時,也要增大PGP的值以保持二者的值相同;
3. 當一個POOL的PG增大後,Ceph並不會開始進行rebalancing,只有在PGP的值增大後,PG才會開始遷移至其他的OSD上,並且開始rebalancing

File

檔案是檔案系統中一個概念;
ceph檔案系統是基於元資料儲存池和資料儲存池構建的邏輯系統,檔案系統中的檔案會通過libcephfs及RADOS對映到物件(rados物件),然後利用Crush計算來定位在儲存裝置中的位置。

RBD (Rados Block Device)

RBD是ceph塊裝置;
RBD映象是基於儲存池構建的邏輯儲存系統,RBD映象通過librbd及RADOS對映到物件(rados物件),然後利用Crush計算來定位在儲存裝置中的位置。

Rgw Object

Rgw Object,泛指一個文件、圖片或視訊檔案等,儘管使用者可以直接上傳一個目錄,但是ceph並不按目錄層級結構儲存Rgw Object, 所有的Rgw Object都是扁平化
Rgw Object通過librados及RADOS對映到物件(rados物件),然後利用Crush計算來定位在儲存裝置中的位置。

基本概念就介紹到這裡~~~

作者:Younger Liu,

本文連結地址為:http://blog.csdn.net/younger_china/article/details/76794987