存儲基石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的架構。