ceph儲存系統

2021-08-01 12:06:09 字數 2452 閱讀 8780

ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.」

也即,ceph是一種為優秀的效能、可靠性和可擴充套件性而設計的統一的、分布式的儲存系統。應該說,這句話確實點出了ceph的要義,可以作為理解ceph系統設計思想和實現機制的基本出發點。在這個定義中,應當特別注意「儲存系統」這個概念的兩個修飾詞,即「統一的」和「分布式的」。

具體而言,「統一的」意味著ceph可以一套儲存系統同時提供物件儲存、塊儲存和檔案系統儲存三種功能,以便在滿足不同應用需求的前提下簡化部署和運維。而「分布式的」在ceph系統中則意味著真正的無中心結構和沒有理論上限的系統規模可擴充套件性。在實踐當中,ceph可以被部署於上千臺伺服器上。截至2023年3月初,ceph在生產環境下部署的最大規模系統為dreamhost公司的物件儲存業務集群,其管理的物理儲存容量為3pb[1]。

事實上,ceph最初針對的目標應用場景,就是大規模的、分布式的儲存系統。所謂「大規模」和「分布式」,是指至少能夠承載pb級別的資料,並且由成千上萬的儲存節點組成。

ceph最為核心的技術創新就是前面所概括的八個字——「無需查表,算算就好」。一般而言,乙個大規模分布式儲存系統,必須要能夠解決兩個最基本的問題:

一是「我應該把資料寫入到什麼地方」。對於乙個儲存系統,當使用者提交需要寫入的資料時,系統必須迅速決策,為資料分配乙個儲存位置和空間。這個決策的速度影響到資料寫入延遲,而更為重要的是,其決策的合理性也影響著資料分布的均勻性。這又會進一步影響儲存單元壽命、資料儲存可靠性、資料訪問速度等後續問題。

二是「我之前把資料寫到什麼地方去了」。對於乙個儲存系統,高效準確的處理資料定址問題也是基本能力之一。

針對上述兩個問題,傳統的分布式儲存系統常用的解決方案是引入專用的伺服器節點,在其中儲存用於維護資料儲存空間對映關係的資料結構。在使用者寫入/訪問資料時,首先連線這一伺服器進行查詢操作,待決定/查到資料實際儲存位置後,再連線對應節點進行後續操作。由此可見,傳統的解決方案一方面容易導致單點故障和效能瓶頸,另一方面也容易導致更長的操作延遲。

針對這一問題,ceph徹底放棄了基於查表的資料定址方式,而改用基於計算的方式。簡言之,任何乙個ceph儲存系統的客戶端程式,僅僅使用不定期更新的少量本地元資料,加以簡單計算,就可以根據乙個資料的id決定其儲存位置。對比之後可以看出,這種方式使得傳統解決方案的問題一掃而空。ceph的幾乎所有優秀特性都是基於這種資料定址方式實現的。

ceph儲存系統的邏輯層次結構如下圖所示。

ceph系統邏輯層次結構自下向上,可以將ceph系統分為四個層次:

(1)基礎儲存系統rados(reliable, autonomic, distributed object store,即可靠的、自動化的、分布式的物件儲存)

顧名思義,這一層本身就是乙個完整的物件儲存系統,所有儲存在ceph系統中的使用者資料事實上最終都是由這一層來儲存的。而ceph的高可靠、高可擴充套件、高效能、高自動化等等特性本質上也是由這一層所提供的。因此,理解rados是理解ceph的基礎與關鍵。物理上,rados由大量的儲存裝置節點組層,每個節點擁有自己的硬體資源(cpu、記憶體、硬碟、網路),並執行著作業系統和檔案系統。

(2)基礎庫librados

這一層的功能是對rados進行抽象和封裝,並向上層提供api,以便直接基於rados(而不是整個ceph)進行應用開發。特別要注意的是,rados是乙個物件儲存系統,因此,librados實現的api也只是針對物件儲存功能的。rados採用c++開發,所提供的原生librados api包括c和c++兩種。物理上,librados和基於其上開發的應用位於同一臺機器,因而也被稱為本地api。應用呼叫本機上的librados api,再由後者通過socket與rados集群中的節點通訊並完成各種操作。

(3)高層應用介面

這 一層包括了三個部分:rados gw(rados gateway)、 rbd(reliable block device)和ceph fs(ceph file system),其作用是在librados庫的基礎上提供抽象層次更高、更便於應用或客戶端使用的上層介面。其 中,rados gw是乙個提供與amazon s3和swift相容的restful api的gateway,以供相應的物件儲存應用開發使用。rados gw提供的api抽象層次更高,但功能則不如librados強大。因此,開發者應針對自己的需求選擇使用。rbd則提供了乙個標準的塊裝置介面,常用於在虛擬化的場景下為虛擬機器建立volume。目前,red hat已經將rbd驅動整合在kvm/qemu中,以提高虛擬機器訪問效能。ceph fs是乙個posix相容的分布式檔案系統。由於還處在開發狀態,因而ceph官網並不推薦將其用於生產環境中。

(4)應用層

這一層就是不同場景下對於ceph各個應用介面的各種應用方式,例如基於librados直接開發的物件儲存應用,基於rados gw開發的物件儲存應用,基於rbd實現的雲硬碟等等。

分布式儲存系統 Ceph

你了解ceph嗎?ceph是一種分布式儲存系統,它可以將多台伺服器組成乙個超大集群,把這些機器中的磁碟資源整合到一塊兒,形成乙個大的資源池 pb級別 然後按需分配給應用使用。那麼你知道ceph的架構嗎?ceph的底層實現是rados,rados是由c 寫的,但是它向外界暴露了呼叫介面,即librad...

分布式儲存系統 Ceph

你了解ceph嗎?ceph是一種分布式儲存系統,它可以將多台伺服器組成乙個超大集群,把這些機器中的磁碟資源整合到一塊兒,形成乙個大的資源池 pb級別 然後按需分配給應用使用。那麼你知道ceph的架構嗎?ceph的底層實現是rados,rados是由c 寫的,但是它向外界暴露了呼叫介面,即librad...

Ceph分布式儲存系統簡介

內容 注 了解ceph的作用與基本概念 ceph是乙個可靠地 自動重均衡 自動恢復的分布式儲存系統,根據場景劃分可以將ceph分為三大塊,分別是物件儲存 塊裝置儲存和檔案系統服務。在虛擬化領域裡,比較常用到的是ceph的塊裝置儲存,比如在openstack專案裡,ceph的塊裝置儲存可以對接open...