ceph-設計思想及結構
大規模的儲存系統,有三個動態特性:
儲存系統規模的變化
:隨著業務的不斷發展,系統需要承載越來越大的資料容量。
儲存系統中裝置的變化:
對於由成千上萬個節點構成的系統,其節點的故障與替換必然是時長出現的情況,不能使業務受到這種頻繁出現的硬體及底層軟體問題的影響,同時應該智慧型化,並降低維護的成本。
儲存系統中資料的變化:
對於乙個大規模,通常被應用於網際網路應用中的儲存系統,其中儲存的變化很可能是高度頻繁的。因此資料更新、移動乃至刪除時常發生。
針對目標應用場景所提出的預期技術特性:
ceph:高可靠性、高度自動化、高可擴充套件性。
針對預期技術特性所提出的設計思路:
充分發揮儲存裝置自身的計算能力,去除所有的中心點
(1)基礎儲存系統rados(reliable,autonomic,distributed object store)可靠的自主的分布式物件儲存
這一層本身就是乙個完整的物件儲存系統,所有儲存在ceph系統中的使用者資料事實上最終都是由這一層來儲存的。rados由大量的儲存裝置節點組成,每個節點擁有自己的硬體資源(cpu、記憶體、硬碟、網路),並執行著作業系統和檔案系統。
(2)基礎庫librados
這一層的功能是對rados進行抽象和封裝,並向上層提供api,以便直接基於rados(而不是ceph)進行應用開發。物理上libradios和基於其上開發的應用位於同一臺機器,因此也被成為本地api。應用呼叫本機上的libradios api,再由後者通過socket與radios集群中的節點通訊完成各種操作。
(3)高層應用介面
這一層包括了三個部分:rados gw(rados gateway)、rbd(reliable block device)和ceph fs(ceph file system),起作用時在librados庫的基礎上提供抽象層次更高、更便於應用或客戶端使用的上層介面。
rados gw是乙個提供amazon s3 和swift 相容的restful api 的gateway,以供相應的物件儲存應用開發使用。raids gw 提供的api抽象層次更高,但功能不如librados強大。因此,開發者應針對自己的需求選擇使用。
rbd則提供了乙個標準的塊裝置介面,常用於在虛擬化的場景下建立volume。
ceph fs 是乙個posix相容的分布式檔案系統。目前還處於開發狀態。
(4)應用層
這一層就是不同場景下對於ceph各個應用介面的各種應用方式,例如基於librados直接開發的物件儲存應用,基於rados gw 開發的物件儲存應用,基於rbd實現的雲硬碟等等。
疑問:rados自身既然已經是乙個物件儲存系統,也可以提供librados api,為何還要再單獨開發乙個rados gw? 答:
粗看起來,librados和rados的區別在於,librados提供的是本地api,而rados gw 提供的則是restful api,二者的程式設計模型和實際效能不同。進一步說,二者抽象層次的目標應用場景差異有關。換言之,雖然rados和s3、swift同屬分布式物件儲存系統,但rados提供的功能更為基礎、豐富。
一種軟體架構風格,設計風格
而不是
標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和服
務器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。
librados api向開發者開放了大量的
rados
狀態資訊與配置引數,允許開發者對
rados
系統以及其中儲存物件的狀態進行觀察,並強有力地對系統儲存策略進行控制。換言之,通過呼叫
librados api,
應用帛能夠實現對資料物件的操作,還能夠實現對
rados
系統的管理和配置。
librados
更適用於對系統有著深刻理解,同時對於功能定製擴充套件和效能深度優化有著強烈需求的高階使用者。基於
librados
的開發更適合在私有
ceph
系統上開發專用應用,或者為基於
ceph
的公有儲存系統開發後台資料管理、處理應用。而
rados gw
則更適用於常見的基於
web的物件儲存應用開打,例如公有雲上的物件儲存服務。
rados的系統邏輯結構如下圖所示:
rados集群主要由兩種節點組成。一種是為數眾多的、負責完成資料儲存和維護功能的
osd(object storage device),
另一種則是若干個負責完成系統狀態監測和維護的
monitor
。osd
和monitor
之間互相傳輸節點狀態資訊,共同得出系統的總體工作狀態,並形成乙個全域性系統狀態記錄資料結構,即
cluster map
。這個資料結構與
rados
提供的特定演算法相配合,以便實現了
ceph
」無須查表,算算就好
」的核心機制以及若干優秀特性。
在使用rados系統時,大量的客戶端程式通過
osd或者
monitor
的互動獲取
cluster map,
然後直接在本地進行計算,得出物件的儲存位置後,便直接與對應的
osd通訊,完成資料的各種操作。
在rados的執行過程中,
cluster map
的更新完全取決於系統的狀態變化,而導致這一變化的常見時間只有兩種:
osd出現故障、
radios
規模擴大。
osd的邏輯結構
由數目可變的大規模osds組成的集群,負責儲存所有的
objects
資料osd可以被抽象成兩個組成部分,即系統部分和守護程序部分。
osd的系統本質就是一台安裝了作業系統和檔案系統的計算機,其硬體部分至少包括乙個單核的處理器,一定數量的記憶體、一塊硬碟以及一張網絡卡。在實際應用中通常將多個
osd集中部署在一台更大規模的伺服器上,
在上述平台上,每個osd擁有乙個自己的
osd deamon
。這個deamon
負責完成
osd的所有邏輯功能,包括與
monitor
和其他osd(
事實上是其他
osd的
deamon)
通訊以維護更新系統狀態,與其他
osd共同完成資料的儲存和維護,與
client
通訊完成各種資料物件操作等。
由少量monitors組成的強耦合、小規模級去哪負責管理
cluster map ,
其中cluster map
是真個rados
系統的關鍵資料結構,管理寄去那種的所有成員、關係、屬性等資訊以及資料的分發。
cluster map:
管理cluster的核心資料結構
指定osds的資料分布資訊
monitor上存有最新副本
依靠epoch增加來維護及時更新
增量資訊
資料存放
1.
object到
pg的對映。
pg(placement group)
是objects
的邏輯集合。相同
pg裡的
object
會被系統分發到相同的
osds
集合中。由
object
的名稱通過
hash
演算法得到的結果結合其他一些引數可以得到
object
所對應的pf。
2.rados系統根據
cluster map
將pgs
分配到相應的
osds
。這組osds
證實pg
中的objects
資料的儲存位置。
pools:
是乙個儲存物件的邏輯分割槽概念
所有權/訪問物件
物件副本的數目
pg數目
以上三項決定ceph最後如何儲存資料
Ceph 知識摘錄 設計思想,集群維護
動態特性 儲存系統規模變化 業務規模 儲存系統裝置變化 節點 磁碟故障替換必然是時常出現的問題,業務不能受到這種硬體 底層軟體影響 儲存系統資料變化 技術特性 高可靠性 盡可能保證儲存資料不會丟失,使用者將資料寫到ceph儲存系統過程中,不會出現意外導致資料丟失 使用者寫入 儲存資料不丟失 高度自動...
單例設計思想及
單例設計思想 保證類在記憶體中只有乙個物件 如何實現類在記憶體中只有乙個物件呢?構造私有 本身提供乙個物件 通過公共的方法讓外界訪問 實現方式 餓漢式 直接建立物件 執行緒安全的 懶漢式 當要用到物件的時候,再建立物件 延遲載入方式 乙個執行緒物件的時候,執行緒安全的 多個執行緒物件的時候,執行緒不...
結構化設計思想 VS 物件導向設計思想
結構化程式設計思想 只有三種基本結構 順序結構 選擇結構和迴圈結構 分而治之,各個擊破 自頂而下,逐步求精。但資料和操作是相互分離,若修改 牽一髮而動全身,沒有復用性!結構化程式設計思想有許多優點,但隨著發展缺點也逐漸暴露出來 在結構化程式設計中,資料和操作是相互分離的,這就導致如果資料的格式發生變...