Ceph 基礎(chǔ)內(nèi)容

Ceph簡介

Ceph使用C++語言開發(fā),遵循LGPL協(xié)議開源。Sage Weil(Ceph論文發(fā)表者)于2011年創(chuàng)立了以Inktank公司主導(dǎo)Ceph的開發(fā)和社區(qū)維護(hù)。2014年Redhat收購inktank公司,并發(fā)布Inktank Ceph企業(yè)版(ICE)軟件,業(yè)務(wù)場景聚焦云、備份和歸檔,支持對象存儲和塊存儲以及文件系統(tǒng)存儲應(yīng)用。出現(xiàn)Ceph開源社區(qū)版本和Redhat企業(yè)版。

Cphe主要設(shè)計(jì)的初衷是變成一個可避免單節(jié)點(diǎn)故障的分布式文件系統(tǒng),PB級別的擴(kuò)展能力,而且是一種開源自由軟件,許多超融合的分布式文件系統(tǒng)都是基于Ceph開發(fā)的。

Ceph是一個統(tǒng)一的分布式存儲系統(tǒng),設(shè)計(jì)初衷是提供較好的性能、可靠性和可擴(kuò)展性。

ceph的優(yōu)勢

高擴(kuò)展性:使用普通x86服務(wù)器,支持10~1000臺服務(wù)器,支持TB到EB級的擴(kuò)展。
高可靠性:沒有單點(diǎn)故障,多數(shù)據(jù)副本,自動管理,自動修復(fù)。
高性能:數(shù)據(jù)分布均衡。
可用于對象存儲,塊設(shè)備存儲和文件系統(tǒng)存儲

ceph架構(gòu)

基礎(chǔ)存儲系統(tǒng)

rados:基礎(chǔ)存儲系統(tǒng)RADOS(Reliable, Autonomic, Distributed Object Store,即可靠的、自動化的、分布式的對象存儲)。所有存儲在Ceph系統(tǒng)中的用戶數(shù)據(jù)事實(shí)上最終都是由這一層來存儲的。Ceph的高可靠、高可擴(kuò)展、高性能、高自動化等等特性本質(zhì)上也是由這一層所提供的。

基礎(chǔ)庫librados:

librados:這一層的功能是對RADOS進(jìn)行抽象和封裝,并向上層提供API,以便直接基于RADOS(而不是整個Ceph)進(jìn)行應(yīng)用開發(fā)。特別要注意的是,RADOS是一個對象存儲系統(tǒng),因此,librados實(shí)現(xiàn)的API也只是針對對象存儲功能的。

高層應(yīng)用接口

radosgw:對象網(wǎng)關(guān)接口(對象存儲)
rbd:塊存儲
cephfs:文件系統(tǒng)存儲
其作用是在librados庫的基礎(chǔ)上提供抽象層次更高、更便于應(yīng)用或客戶端使用的上層接口。

Ceph的基本組件

Ceph主要有三個基本進(jìn)程

Osd
用于集群中所有數(shù)據(jù)與對象的存儲。處理集群數(shù)據(jù)的復(fù)制、恢復(fù)、回填、再均衡。并向其他osd守護(hù)進(jìn)程發(fā)送心跳,然后向Mon提供一些監(jiān)控信息。
當(dāng)Ceph存儲集群設(shè)定數(shù)據(jù)有兩個副本時(一共存兩份),則至少需要兩個OSD守護(hù)進(jìn)程即兩個OSD節(jié)點(diǎn),集群才能達(dá)到active+clean狀態(tài)。

MDS(可選)
為Ceph文件系統(tǒng)提供元數(shù)據(jù)計(jì)算、緩存與同步(也就是說,Ceph 塊設(shè)備和 Ceph 對象存儲不使用MDS )。在ceph中,元數(shù)據(jù)也是存儲在osd節(jié)點(diǎn)中的,mds類似于元數(shù)據(jù)的代理緩存服務(wù)器。MDS進(jìn)程并不是必須的進(jìn)程,只有需要使用CEPHFS時,才需要配置MDS節(jié)點(diǎn)。

Monitor
監(jiān)控整個集群的狀態(tài),維護(hù)集群的cluster MAP二進(jìn)制表,保證集群數(shù)據(jù)的一致性。ClusterMAP描述了對象塊存儲的物理位置,以及一個將設(shè)備聚合到物理位置的桶列表。

Manager(ceph-mgr)
用于收集ceph集群狀態(tài)、運(yùn)行指標(biāo),比如存儲利用率、當(dāng)前性能指標(biāo)和系統(tǒng)負(fù)載。對外提供 ceph dashboard(ceph ui)和 resetful api。Manager組件開啟高可用時,至少2個
ceph 結(jié)構(gòu)包含兩個部分

ceph client:訪問 ceph 底層服務(wù)或組件,對外提供各種接口。比如:對象存儲接口、塊存儲接口、文件級存儲接口。
ceph node:ceph 底層服務(wù)提供端,也就是 ceph 存儲集群。
Ceph存儲種類及其應(yīng)用場景

塊存儲

典型設(shè)備: 磁盤陣列,硬盤

主要是將裸磁盤空間映射給主機(jī)使用的。

優(yōu)點(diǎn):

通過Raid與LVM等手段,對數(shù)據(jù)提供了保護(hù)。
多塊廉價的硬盤組合起來,提高容量。
多塊磁盤組合出來的邏輯盤,提升讀寫效率。

缺點(diǎn):
采用SAN架構(gòu)組網(wǎng)時,光纖交換機(jī),造價成本高。
主機(jī)之間無法共享數(shù)據(jù)。

使用場景:

Docker容器、虛擬機(jī)磁盤存儲分配。
日志存儲。
文件存儲。

文件存儲

典型設(shè)備:FTP、NFS服務(wù)器
為了克服塊存儲文件無法共享的問題,所以有了文件存儲。
在服務(wù)器上架設(shè)FTP與NFS服務(wù),就是文件存儲。

優(yōu)點(diǎn):

造價低,隨便一臺機(jī)器就可以了。
方便文件共享。

缺點(diǎn):

讀寫速率低。
傳輸速率慢。

使用場景:

日志存儲。
有目錄結(jié)構(gòu)的文件存儲。

對象存儲

為什么需要對象存儲?

首先,一個文件包含了屬性(術(shù)語叫metadata,元數(shù)據(jù),例如該文件的大小、修改時間、存儲路徑等)以及內(nèi)容(以下簡稱數(shù)據(jù))。

例如FAT32這種文件系統(tǒng),存儲過程是鏈表的形式。

而對象存儲則將元數(shù)據(jù)獨(dú)立了出來,控制節(jié)點(diǎn)叫元數(shù)據(jù)服務(wù)器(服務(wù)器+對象存儲管理軟件),里面主要負(fù)責(zé)存儲對象的屬性(主要是對象的數(shù)據(jù)被打散存放到了那幾臺分布式服務(wù)器中的信息),而其他負(fù)責(zé)存儲數(shù)據(jù)的分布式服務(wù)器叫做OSD,主要負(fù)責(zé)存儲文件的數(shù)據(jù)部分。當(dāng)用戶訪問對象,會先訪問元數(shù)據(jù)服務(wù)器,元數(shù)據(jù)服務(wù)器只負(fù)責(zé)反饋對象存儲在哪些OSD,假設(shè)反饋文件A存儲在B、C、D三臺OSD,那么用戶就會再次直接訪問3臺OSD服務(wù)器去讀取數(shù)據(jù)。

這時候由于是3臺OSD同時對外傳輸數(shù)據(jù),所以傳輸?shù)乃俣染图涌炝?。?dāng)OSD服務(wù)器數(shù)量越多,這種讀寫速度的提升就越大,通過此種方式,實(shí)現(xiàn)了讀寫快的目的。

另一方面,對象存儲軟件是有專門的文件系統(tǒng)的,所以O(shè)SD對外又相當(dāng)于文件服務(wù)器,那么就不存在文件共享方面的困難了,也解決了文件共享方面的問題。

所以對象存儲的出現(xiàn),很好地結(jié)合了塊存儲與文件存儲的優(yōu)點(diǎn)。

優(yōu)點(diǎn):

具備塊存儲的讀寫高速。
具備文件存儲的共享等特性。

使用場景: (適合更新變動較少的數(shù)據(jù))
圖片存儲。
視頻存儲。

Ceph同時提供對象存儲、塊存儲和文件系統(tǒng)存儲三種功能,滿足不同應(yīng)用需求。

擴(kuò)展什么是OSD

對象存儲(Object-based Storage)是一種新的網(wǎng)絡(luò)存儲架構(gòu),基于對象存儲技術(shù)的設(shè)備就是對象存儲設(shè)備(Object-based Storage Device)簡稱OSD??傮w上來講,對象存儲綜合了NAS和SAN的優(yōu)點(diǎn),同時具有SAN的高速直接訪問和NAS的分布式數(shù)據(jù)共享等優(yōu)勢,提供了具有高性能、高可靠性、跨平臺以及安全的數(shù)據(jù)共享的存儲體系結(jié)構(gòu)。

Ceph 工作原理

ceph數(shù)據(jù)的存儲過程

無論使用哪種存儲方式(對象、塊、掛載),存儲的數(shù)據(jù)都會被切分成對象(Objects)。Objects size大小可以由管理員調(diào)整,通常為2M或4M。每個對象都會有一個唯一的OID,由ino與ono生成,雖然這些名詞看上去很復(fù)雜,其實(shí)相當(dāng)簡單。ino即是文件的File ID,用于在全局唯一標(biāo)示每一個文件,而ono則是分片的編號。比如:一個文件FileID為A,它被切成了兩個對象,一個對象編號0,另一個編號1,那么這兩個文件的oid則為A0與A1。Oid的好處是可以唯一標(biāo)示每個不同的對象,并且存儲了對象與文件的從屬關(guān)系。由于ceph的所有數(shù)據(jù)都虛擬成了整齊劃一的對象,所以在讀寫時效率都會比較高。

  但是對象并不會直接存儲進(jìn)OSD中,因?yàn)閷ο蟮膕ize很小,在一個大規(guī)模的集群中可能有幾百到幾千萬個對象。這么多對象光是遍歷尋址,速度都是很緩慢的;并且如果將對象直接通過某種固定映射的哈希算法映射到osd上,當(dāng)這個osd損壞時,對象無法自動遷移至其他osd上面(因?yàn)橛成浜瘮?shù)不允許)。為了解決這些問題,ceph引入了歸置組的概念,即PG。

  PG是一個邏輯概念,我們linux系統(tǒng)中可以直接看到對象,但是無法直接看到PG。它在數(shù)據(jù)尋址時類似于數(shù)據(jù)庫中的索引:每個對象都會固定映射進(jìn)一個PG中,所以當(dāng)我們要尋找一個對象時,只需要先找到對象所屬的PG,然后遍歷這個PG就可以了,無需遍歷所有對象。而且在數(shù)據(jù)遷移時,也是以PG作為基本單位進(jìn)行遷移,ceph不會直接操作對象。

  對象時如何映射進(jìn)PG的?還記得OID么?首先使用靜態(tài)hash函數(shù)對OID做hash取出特征碼,用特征碼與PG的數(shù)量去模,得到的序號則是PGID。由于這種設(shè)計(jì)方式,PG的數(shù)量多寡直接決定了數(shù)據(jù)分布的均勻性,所以合理設(shè)置的PG數(shù)量可以很好的提升CEPH集群的性能并使數(shù)據(jù)均勻分布。

  最后PG會根據(jù)管理員設(shè)置的副本數(shù)量進(jìn)行復(fù)制,然后通過crush算法存儲到不同的OSD節(jié)點(diǎn)上(其實(shí)是把PG中的所有對象存儲到節(jié)點(diǎn)上),第一個osd節(jié)點(diǎn)即為主節(jié)點(diǎn),其余均為從節(jié)點(diǎn)。
Ceph名詞介紹

Ceph核心組件及概念介紹

Monitor

監(jiān)控整個集群的狀態(tài),維護(hù)集群的cluster MAP二進(jìn)制表,保證集群數(shù)據(jù)的一致性

OSD --

OSD全稱Object Storage Device,也就是負(fù)責(zé)響應(yīng)客戶端請求返回具體數(shù)據(jù)的進(jìn)程。一個Ceph集群一般都有很多個OSD。

MDS

MDS全稱Ceph Metadata Server,是CephFS服務(wù)依賴的元數(shù)據(jù)服務(wù)。

Object --

Ceph最底層的存儲單元是Object對象,每個Object包含元數(shù)據(jù)和原始數(shù)據(jù)。

PG --

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

RADOS

RADOS全稱Reliable Autonomic Distributed Object Store,是Ceph集群的精華,用戶實(shí)現(xiàn)數(shù)據(jù)分配、Failover等集群操作。

Libradio

Librados是Rados提供庫,因?yàn)镽ADOS是協(xié)議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支持。

CRUSH --

CRUSH是Ceph使用的數(shù)據(jù)分布算法,類似一致性哈希,讓數(shù)據(jù)分配到預(yù)期的地方。

RBD --

RBD全稱RADOS block device,是Ceph對外提供的塊設(shè)備服務(wù)。

RGW

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

CephFS --

CephFS全稱Ceph File System,是Ceph對外提供的文件系統(tǒng)服務(wù)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概述 Ceph是一個分布式存儲系統(tǒng),誕生于2004年,最早致力于開發(fā)下一代高性能分布式文件系統(tǒng)的項(xiàng)目。隨著云計(jì)...
    魏鎮(zhèn)坪閱讀 49,880評論 3 54
  • 一、Ceph簡介: Ceph是一種為優(yōu)秀的性能、可靠性和可擴(kuò)展性而設(shè)計(jì)的統(tǒng)一的、分布式文件系統(tǒng)。ceph 的統(tǒng)一體...
    WickJohn閱讀 2,149評論 0 9
  • 作者:luohaixian 來源:博客園 原文:https://www.cnblogs.com/luohaixia...
    蒼山雪麓閱讀 1,162評論 0 3
  • ceph簡介 Ceph是一個分布式存儲系統(tǒng),誕生于2004年,是最早致力于開發(fā)下一代高性能分布式文件系統(tǒng)的項(xiàng)目。隨...
    愛吃土豆的程序猿閱讀 6,171評論 0 21
  • 概述 Ceph是一個分布式存儲系統(tǒng),誕生于2004年,最早致力于開發(fā)下一代高性能分布式文件系統(tǒng)的項(xiàng)目。隨著云計(jì)算的...
    梅_梅閱讀 3,708評論 0 6

友情鏈接更多精彩內(nèi)容