分布式存儲系統之Ceph基礎( 二 )


Ceph塊設備

分布式存儲系統之Ceph基礎

文章插圖
存儲領域中,“塊(block)”是進行數據存取的主要形式,塊設備也于是成為了主流的設備形式,因此,RBD虛擬塊設備也就成了Ceph之上廣為人知及非常受歡迎的訪問接口;RBD的服務接口無須依賴于特定的守護進程,只要客戶端主機有對應內核模塊librbd , 就可以通過ceph RBD 接口使用;
Ceph對象網關
分布式存儲系統之Ceph基礎

文章插圖
Ceph對象網關是一個建立在librados之上的對象存儲接口為應用程序提供的Ceph存儲集群的RESTful網關 。Ceph對象存儲支持兩個接口s3和Swift;Ceph對象存儲使用Ceph對象網關守護進程(radosgw) , 它是一個HTTP服務器,用于與Ceph存儲集群交互;RGW依賴于在RADOS集群基礎上獨立運行的守護進程(ceph-radosgw)基于http或https協議提供相關的API服務,不過,通常僅在需要以REST對象形式存取數據時才部署RGW;
管理節點(admin host)
分布式存儲系統之Ceph基礎

文章插圖
Ceph的常用管理接口是一組命令行工具程序,例如rados、ceph、rbd等命令,管理員可以從某個特定的MON節點執行管理操作,但也有人更傾向于使用專用的管理節點;事實上 , 專用的管理節點有助于在Ceph相關的程序升級或硬件維護期間為管理員提供一個完整的、獨立的并隔離于存儲集群之外的操作環境 , 從而避免因重啟或意外中斷而導致維護操作異常中斷;
存儲池、PG(Placement Group)和OSD(Object Store Device)之間的關系
分布式存儲系統之Ceph基礎

文章插圖
提示:存儲在Ceph存儲系統之上的數據 , 都會先由Ceph將對應數據切分等額大小的對象數據,然后將這些數據存儲到對應的存儲池中;存儲池主要作用是向外界展示集群的邏輯分區;對于每個存儲池 , 我們可以定義一組規則,比如每個對象數據需要有多少個副本存在;PG是Placement Group的縮寫,歸置組;它是一個虛擬的概念 , 主要作用是用于將對象數據映射到osd上而存在的,對象數據具體通過那個pg存放在那個osd上,這個是根據ceph的crush算法動態映射的;我們可以理解為根據存儲池中PG的數量 , 結合一致性hash將對象數據動態映射至PG上,然后PG根據osd數量結合一致性hash動態映射到不同的磁盤上;我們在創建存儲池的時候就必須指定一定數量的PG;如上圖所示,我們將數據存儲到存儲池B中 , 那么對應數據就會根據存儲池B中的規則進行存儲,即3個副本;在存儲池B中只有2個歸置組,兩個歸置組分別對應了不同的OSD;如果將數據存儲到PG3上,那么對應數據就會在osd2\6\7分別存儲一份以做備份;如果將數據存儲到PG4上,這對應數據就會被分發到osd3\4\9上進行存儲;
File Store  和 Blue Store
分布式存儲系統之Ceph基礎

文章插圖
什么是file store呢?file store是傳統ceph存儲對象的方法 , 它依賴于xfs文件系統(ext4有bug和缺陷,會導致數據丟失,所以ceph只支持xfs上使用file store);通過上述的描述,我們知道ceph不管是什么客戶端提交的對象數據,最終都會存儲到osd所在主機的硬盤上;那么問題來了,osd所在主機的磁盤是怎么被osd管理的呢?傳統ceph是將對應磁盤格式化分區掛載在osd所在主機的文件系統 , 被osd所在主機以一個目錄的形式表示;即用戶存儲的對象數據 , 最后會被存放為一個文件的形式存放在osd所在主機的磁盤上;這也意味著我們需要存放文件本身的元數據和數據;除此之外對象本身也有數據和元數據,那么對象本身的數據和元數據是怎么存放的呢?file store是是將對象的元數據存放在leveldb(早期ceph版本)中,數據存放在文件系統的數據區;簡單講file store就是將對象的元數據存放在leveldb中 , 數據存放在osd所在主機的文件系統的數據區中,中間有文件系統做轉換的過程;而blue store將osd所在主機的磁盤不格式化分區,而是直接用裸設備硬盤被osd識別和管理;在osd所在主機對應osd進程會將自己管理的磁盤中一小部分格式化為bluefs文件系統,用于安裝使用rocksdb;即客戶端提交的對象數據,對象本身的元數據會被存放在rocksdb中 , 數據會被直接存放在磁盤上(由osd進程直接管理數據格式等,不會存放為文件);rocksdb為了管理它自己本身的數據持久化,它也會維護一個日志文件,類似redis的aof;這樣一來blue store的方式存儲對象數據,在磁盤上就會存在三種數據 , 第一種是對象本身的數據,第二種是對象的元數據 , 第三種就是rocksdb的日志文件;ceph為了使存儲的數據更高效,它支持將blue store方式的三種數據分別存放不同的磁盤,如下圖

推薦閱讀