天天看點

Ceph分布式存儲實2.1 Ceph功能子產品與RADOS

存儲基石rados

分布式對象存儲系統rados是ceph最為關鍵的技術,它是一個支援海量存儲對象的分布式對象存儲系統。rados層本身就是一個完整的對象存儲系統,事實上,所有存儲在ceph系統中的使用者資料最終都是由這一層來存儲的。而ceph的高可靠、高可擴充、高性能、高自動化等特性,本質上也是由這一層所提供的。是以,了解rados是了解ceph的基礎與關鍵。

ceph的設計哲學如下。

每個元件必須可擴充。

不存在單點故障。

解決方案必須是基于軟體的。

可擺脫專屬硬體的束縛即可運作在正常硬體上。

推崇自我管理。

由第1章的講解可以知道,ceph包含以下元件。

分布式對象存儲系統rados庫,即librados。

基于librados實作的相容swift和s3的存儲網關系統radosgw。

基于librados實作的塊裝置驅動rbd。

相容posix的分布式檔案ceph fs。

最底層的分布式對象存儲系統rados。

<b>2.1 ceph功能子產品與rados</b>

ceph中的這些元件與rados有什麼關系呢,筆者手繪了一張簡單的ceph架構圖,我們結合圖2-1來分析這些元件與rados的關系。

 圖2-1 ceph架構圖

ceph存儲系統的邏輯層次結構大緻劃分為4部分:基礎存儲系統rados、基于rados實作的ceph fs,基于rados的librados層應用接口、基于librados的應用接口rbd、radosgw。ceph架構(見圖1-1)我們在第1章有過初步的了解,這裡詳細看一下各個子產品的功能,以此了解rados在整個ceph起到的作用。

(1)基礎存儲系統rados

rados這一層本身就是一個完整的對象存儲系統,事實上,所有存儲在ceph系統中的使用者資料最終都是由這一層來存儲的。ceph的很多優秀特性本質上也是借由這一層設計提供。了解rados是了解ceph的基礎與關鍵。實體上,rados由大量的儲存設備節點組成,每個節點擁有自己的硬體資源(cpu、記憶體、硬碟、網絡),并運作着作業系統和檔案系統。本書後續章節将對rados進行深入介紹。

(2)基礎庫librados

librados層的功能是對rados進行抽象和封裝,并向上層提供api,以便直接基于rados進行應用開發。需要指明的是,rados是一個對象存儲系統,是以,librados實作的api是針對對象存儲功能的。rados采用c++開發,所提供的原生librados api包括c和c++兩種。實體上,librados和基于其上開發的應用位于同一台機器,因而也被稱為本地api。應用調用本機上的librados api,再由後者通過socket與rados叢集中的節點通信并完成各種操作。

(3)上層應用接口

ceph上層應用接口涵蓋了radosgw(rados gateway)、rbd(reliable block device)和ceph fs(ceph file system),其中,radosgw和rbd是在librados庫的基礎上提供抽象層次更高、更便于應用或用戶端使用的上層接口。

其中,radosgw是一個提供與amazon s3和swift相容的restful api的網關,以供相應的對象存儲應用開發使用。radosgw提供的api抽象層次更高,但在類s3或swift librados的管理比便捷,是以,開發者應針對自己的需求選擇使用。rbd則提供了一個标準的塊裝置接口,常用于在虛拟化的場景下為虛拟機建立volume。目前,red hat已經将rbd驅動內建在kvm/qemu中,以提高虛拟機通路性能。

(4)應用層

應用層就是不同場景下對于ceph各個應用接口的各種應用方式,例如基于librados直接開發的對象存儲應用,基于radosgw開發的對象存儲應用,基于rbd實作的雲主機硬碟等。

下面就來看看rados的架構。

繼續閱讀