【理論研究】Ceph分佈式存儲系列03-Ceph架構與組件介紹

前面兩篇Ceph系列介紹了Ceph集羣的搭建以及通過3種不同的接口(快存儲、文件存儲、對象存儲)去調用Ceph的存儲空間。


本篇介紹一下Ceph的原理,各部分的組件與架構,不能知其然不知其所以然。


1、Ceph簡介

傳統的集中式存儲(磁盤陣列),每套存儲,需要有一個大腦(控制櫃),通常大腦的組件都是冗餘配置的(雙電源、雙控制器、硬盤等),而大腦後面可以接入很多硬盤(硬盤擴展櫃,沒有控制器,整個機框都插滿硬盤)。由於磁盤陣列會有一定的冗餘保護機制(如會預留熱備盤,磁盤做raid5、raid6、raid10,劃邏輯卷等),並且可以通過擴容硬盤擴展櫃,來做到容量的增加,並且由於存儲數據集中存放,有效給多臺服務器進行數據共享。

因此,很長一段時間以來,集中式存儲都是存儲最優的解決方案。

但是,隨着互聯網與移動互聯網的爆發式增長,傳統集中式存儲的弊端開始展露。因爲每套存儲雖然可以擴容硬盤擴展櫃,但是控制器無法擴容。而控制器則限制了整套存儲能夠使用的IO性能,因此可以說,從一開始選定了控制器的型號,基本上這套存儲的性能上限就已經決定了。

當然,控制器理論上也是可以擴容的,但是需要再買一套,將2套打通,而打通的要求,則要求同品牌,甚至同型號甚至有的需要同版本號的才能夠進行打通。因此使用人就會被一家廠商綁死,而如果買了不同品牌的存儲,又面臨無法打通的問題。所以可以說存儲擴容上面(主要是擴性能,不是容量)是非常麻煩的。

而隨着x86服務器越來越便宜,性能與穩定性越來越高,所有的東西都有趨向依靠大量x86服務器集羣+軟件去實現。分佈式存儲就是爲了解決上述可擴展性的問題而推出的。

Ceph正是其中的一種可以是用x86服務器搭建分佈式存儲的開源軟件。


2、Ceph架構

001.jpeg

Ceph本身有叫RADOS的對象存儲系統,負責最終的數據存儲。

而其上又提供塊存儲、文件存儲與對象存儲接口,供client進行調用,因此使用Ceph,最終可以提供分佈式的塊存儲、文件存儲、對象存儲服務。


3、Ceph核心組件

Monitor

一個Ceph集羣需要多個Monitor組成的小集羣,它們通過Paxos同步數據,用來保存OSD的元數據。

OSD

OSD全稱Object Storage Device,也就是負責響應客戶端請求返回具體數據的進程。一個Ceph集羣一般都有很多個OSD。

上述兩者,是實際需要節點進行承載服務的。

Monitor類似大腦(也可以集羣部署,才能高可用),用戶訪問,需要先向Monitor去詢問數據在哪裏,需要找哪個OSD去找數據。然後Monitor會根據元數據找到哪些OSD節點上面有用戶需要的數據,並且根據OSD的負載情況,指導用戶現在應該去找哪個OSD去讀寫數據。

基本上你會發現所有分佈式系統,都會有以上兩層的分法,只是叫法可能不一樣。

例如超融合服務器,存儲層面就會出現什麼NameNode與DataNode,其實就是類似一個負責存儲數據到底擺放在哪裏的目錄索引,一個負責實際擺放數據進磁盤。

Object

Ceph最底層的存儲單元是Object對象,每個Object包含元數據和原始數據,其實是個邏輯概念,就是需要存的對象就叫object。data內容本身是數據,關於這個對象本身的描述叫做元數據。

MDS

MDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務,只有文件服務才用MDS。

CephFS

CephFS全稱Ceph File System,是Ceph對外提供的文件系統服務。


RBD

RBD全稱RADOS block device,是Ceph對外提供的塊設備服務。

RGW

RGW全稱RADOS gateway,是Ceph對外提供的對象存儲服務,接口與S3和Swift兼容。


PG

PG全稱Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層其實是爲了更好的分配數據和定位數據。

RADOS

RADOS全稱Reliable Autonomic Distributed Object Store,是Ceph集羣的精華,用戶實現數據分配、Failover等集羣操作。

Libradio

Librados是Rados提供庫,因爲RADOS是協議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支持。

CRUSH

CRUSH是Ceph使用的數據分佈算法,類似一致性哈希,讓數據分配到預期的地方。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章