天天看點

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

大家好,又見面了,我是你們的朋友全棧君。

一、Ceph簡介:

Ceph是一種為優秀的性能、可靠性和可擴充性而設計的統一的、分布式檔案系統。ceph 的統一展現在可以提供檔案系統、塊存儲和對象存儲,分布式展現在可以動态擴充。在國内一些公司的雲環境中,通常會采用 ceph 作為openstack 的唯一後端存儲來提高資料轉發效率。

Ceph項目最早起源于Sage就讀博士期間的工作(最早的成果于2004年發表),并随後貢獻給開源社群。在經過了數年的發展之後,目前已得到衆多雲計算廠商的支援并被廣泛應用。RedHat及OpenStack都可與Ceph整合以支援虛拟機鏡像的後端存儲。

官網:https://ceph.com/

官方文檔:http://docs.ceph.com/docs/master/#

二、Ceph特點:

高性能:

a. 摒棄了傳統的集中式存儲中繼資料尋址的方案,采用CRUSH算法,資料分布均衡,

并行度高。

b.考慮了容災域的隔離,能夠實作各類負載的副本放置規則,例如跨機房、機架

感覺等。

c. 能夠支援上千個存儲節點的規模,支援TB到PB級的資料。

高可用性:

a. 副本數可以靈活控制。

b. 支援故障域分隔,資料強一緻性。

c. 多種故障場景自動進行修複自愈。

d. 沒有單點故障,自動管理。

高可擴充性:

a. 去中心化。

b. 擴充靈活。

c. 随着節點增加而線性增長。

特性豐富:

a. 支援三種存儲接口:塊存儲、檔案存儲、對象存儲。

b. 支援自定義接口,支援多種語言驅動。

三、Ceph應用場景:

  Ceph可以提供對象存儲、塊裝置存儲和檔案系統服務,其對象存儲可以對接網盤(owncloud)應用業務等;其塊裝置存儲可以對接(IaaS),目前主流的IaaS運平台軟體,如:OpenStack、CloudStack、Zstack、Eucalyptus等以及kvm等。

Ceph是一個高性能、可擴容的分布式存儲系統,它提供三大功能:

對象存儲(RADOSGW):提供RESTful接口,也提供多種程式設計語言綁定。相容S3、Swift;

塊存儲(RDB):由RBD提供,可以直接作為磁盤挂載,内置了容災機制;

檔案系統(CephFS):提供POSIX相容的網絡檔案系統CephFS,專注于高性能、大容量存儲;

什麼是塊存儲/對象存儲/檔案系統存儲?

1.對象存儲:

也就是通常意義的鍵值存儲,其接口就是簡單的GET、PUT、DEL 和其他擴充,代表主要有 Swift 、S3 以及 Gluster 等;

2.塊存儲:

這種接口通常以 QEMU Driver 或者 Kernel Module 的方式存在,這種接口需要實作 Linux 的 Block Device 的接口或者 QEMU 提供的 Block Driver 接口,如 Sheepdog,AWS 的 EBS,青雲的雲硬碟和阿裡雲的盤古系統,還有 Ceph 的 RBD(RBD是Ceph面向塊存儲的接口)。在常見的存儲中 DAS、SAN 提供的也是塊存儲;

3.檔案系統存儲:

通常意義是支援 POSIX 接口,它跟傳統的檔案系統如 Ext4 是一個類型的,但差別在于分布式存儲提供了并行化的能力,如 Ceph 的 CephFS (CephFS是Ceph面向檔案存儲的接口),但是有時候又會把 GlusterFS ,HDFS 這種非POSIX接口的類檔案存儲接口歸入此類。當然 NFS、NAS也是屬于檔案系統存儲;

四、Ceph核心元件:

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

(1)Monitors:螢幕,維護叢集狀态的多種映射,同時提供認證和日志記錄服務,包括有關monitor 節點端到端的資訊,其中包括 Ceph 叢集ID,監控主機名和IP以及端口。并且存儲目前版本資訊以及最新更改資訊,通過 “ceph mon dump”檢視 monitor map。

(2)MDS(Metadata Server):Ceph 中繼資料,主要儲存的是Ceph檔案系統的中繼資料。注意:ceph的塊存儲和ceph對象存儲都不需要MDS。

(3)OSD:即對象存儲守護程式,但是它并非針對對象存儲。是實體磁盤驅動器,将資料以對象的形式存儲到叢集中的每個節點的實體磁盤上。OSD負責存儲資料、處理資料複制、恢複、回(Backfilling)、再平衡。完成存儲資料的工作絕大多數是由 OSD daemon 程序實作。在建構 Ceph OSD的時候,建議采用SSD 磁盤以及xfs檔案系統來格式化分區。此外OSD還對其它OSD進行心跳檢測,檢測結果彙報給Monitor

(4)RADOS:Reliable Autonomic Distributed Object Store。RADOS是ceph存儲叢集的基礎。在ceph中,所有資料都以對象的形式存儲,并且無論什麼資料類型,RADOS對象存儲都将負責儲存這些對象。RADOS層可以確定資料始終保持一緻。

(5)librados:librados庫,為應用程度提供通路接口。同時也為塊存儲、對象存儲、檔案系統提供原生的接口。

(6)RADOSGW:網關接口,提供對象存儲服務。它使用librgw和librados來實作允許應用程式與Ceph對象存儲建立連接配接。并且提供S3 和 Swift 相容的RESTful API接口。

(7)RBD:塊裝置,它能夠自動精簡配置并可調整大小,而且将資料分散存儲在多個OSD上。

(8)CephFS:Ceph檔案系統,與POSIX相容的檔案系統,基于librados封裝原生接口。

五、Ceph存儲系統的邏輯層次結構:

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

六、RADOS的系統邏輯結構:

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

七、Ceph 資料存儲過程:

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

 無論使用哪種存儲方式(對象、塊、檔案系統),存儲的資料都會被切分成Objects。Objects size大小可以由管理者調整,通常為2M或4M。每個對象都會有一個唯一的OID,由ino與ono生成,雖然這些名詞看上去很複雜,其實相當簡單。

ino:即是檔案的File ID,用于在全局唯一辨別每一個檔案

ono:則是分片的編号

  比如:一個檔案FileID為A,它被切成了兩個對象,一個對象編号0,另一個編号1,那麼這兩個檔案的oid則為A0與A1。

  File —— 此處的file就是使用者需要存儲或者通路的檔案。對于一個基于Ceph開發的對象存儲應用而言,這個file也就對應于應用中的“對象”,也就是使用者直接操作的“對象”。

Ojbect —— 此處的object是RADOS所看到的“對象”。Object與上面提到的file的差別是,object的最大size由RADOS限定(通常為2MB或4MB),以便實作底層存儲的組織管理。是以,當上層應用向RADOS存入size很大的file時,需要将file切分成統一大小的一系列object(最後一個的大小可以不同)進行存儲。為避免混淆,在本文中将盡量避免使用中文的“對象”這一名詞,而直接使用file或object進行說明。

PG(Placement Group)—— 顧名思義,PG的用途是對object的存儲進行組織和位置映射。具體而言,一個PG負責組織若幹個object(可以為數千個甚至更多),但一個object隻能被映射到一個PG中,即,PG和object之間是“一對多”映射關系。同時,一個PG會被映射到n個OSD上,而每個OSD上都會承載大量的PG,即,PG和OSD之間是“多對多”映射關系。在實踐當中,n至少為2,如果用于生産環境,則至少為3。一個OSD上的PG則可達到數百個。事實上,PG數量的設定牽扯到資料分布的均勻性問題。關于這一點,下文還将有所展開。

  OSD —— 即object storage device,前文已經詳細介紹,此處不再展開。唯一需要說明的是,OSD的數量事實上也關系到系統的資料分布均勻性,是以其數量不應太少。在實踐當中,至少也應該是數十上百個的量級才有助于Ceph系統的設計發揮其應有的優勢。

基于上述定義,便可以對尋址流程進行解釋了。具體而言, Ceph中的尋址至少要經曆以下三次映射:

(1)File -> object映射

(2)Object -> PG映射,hash(oid) & mask -> pgid

(3)PG -> OSD映射,CRUSH算法

CRUSH,Controlled Replication Under Scalable Hashing,它表示資料存儲的分布式選擇算法, ceph 的高性能/高可用就是采用這種算法實作。CRUSH 算法取代了在中繼資料表中為每個用戶端請求進行查找,

作用:它通過計算系統中資料應該被寫入或讀出的位置。CRUSH能夠感覺基礎架構,能夠了解基礎設施各個部件之間的關系。并CRUSH儲存資料的多個副本,這樣即使一個故障域的幾個元件都出現故障,資料依然可用。CRUSH 算是使得 ceph 實作了自我管理和自我修複。

RADOS 分布式存儲相較于傳統分布式存儲的優勢在于:

  1. 将檔案映射到object後,利用Cluster Map 通過CRUSH 計算而不是查找表方式定位檔案資料存儲到儲存設備的具體位置。優化了傳統檔案到塊的映射和Block MAp的管理。

  2. RADOS充分利用OSD的智能特點,将部分任務授權給OSD,最大程度地實作可擴充

八、Ceph IO流程及資料分布:

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

(1)正常IO流程圖:

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

  步驟:

   1. client 建立cluster handler。

   2. client 讀取配置檔案。

   3. client 連接配接上monitor,擷取叢集map資訊。

   4. client 讀寫io 根據crshmap 算法請求對應的主osd資料節點。

   5. 主osd資料節點同時寫入另外兩個副本節點資料。

   6. 等待主節點以及另外兩個副本節點寫完資料狀态。

   7. 主節點及副本節點寫入狀态都成功後,傳回給client,io寫入完成。

(2)新主IO流程圖:

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

說明:如果新加入的OSD1取代了原有的 OSD4成為 Primary OSD, 由于 OSD1 上未建立 PG , 不存在資料,那麼 PG 上的 I/O 無法進行,怎樣工作的呢?

新主IO流程步驟:

   1. client連接配接monitor擷取叢集map資訊。

   2. 同時新主osd1由于沒有pg資料會主動上報monitor告知讓osd2臨時接替為主。

   3. 臨時主osd2會把資料全量同步給osd1。

   4. client IO讀寫直接連接配接臨時主osd2進行讀寫。

   5. osd2收到讀寫io,同時寫入另外兩副本節點。

   6. 等待osd2以及另外兩副本寫入成功。

   7. osd2三份資料都寫入成功傳回給client, 此時client io讀寫完畢。

   8. 如果osd1資料同步完畢,臨時主osd2會交出主角色。

   9. osd1成為主節點,osd2變成副本。

九、Ceph Pool和PG分布情況:

pool:是ceph存儲資料時的邏輯分區,它起到namespace的作用。每個pool包含一定數量(可配置) 的PG。PG裡的對象被映射到不同的Object上。pool是分布到整個叢集的。 pool可以做故障隔離域,根據不同的使用者場景不統一進行隔離。

ceph介紹_ceph為什麼用rgw一、Ceph簡介:二、Ceph特點:三、Ceph應用場景: 四、Ceph核心元件:五、Ceph存儲系統的邏輯層次結構: 六、RADOS的系統邏輯結構: 七、Ceph 資料存儲過程:八、Ceph IO流程及資料分布:九、Ceph Pool和PG分布情況:

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/167498.html原文連結:https://javaforall.cn