自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

技術(shù)棧 | Ceph構(gòu)件及組件分析

存儲(chǔ) 存儲(chǔ)軟件
Ceph 存儲(chǔ)集群由幾個(gè)不同的daemon組成,每個(gè)daemon負(fù)責(zé)Ceph 的一個(gè)獨(dú)特功能并。每個(gè)守護(hù)進(jìn)程是彼此獨(dú)立的。

[[253729]]

Ceph存儲(chǔ)架構(gòu)

Ceph 存儲(chǔ)集群由幾個(gè)不同的daemon組成,每個(gè)daemon負(fù)責(zé)Ceph 的一個(gè)獨(dú)特功能并。每個(gè)守護(hù)進(jìn)程是彼此獨(dú)立的。

 

下面將簡(jiǎn)要介紹每個(gè)Ceph組件的功能:

RADOS(Reliable Autonomic Distributed Object Store, RADOS)

RADOS是Ceph 存儲(chǔ)集群的基礎(chǔ)。Ceph 中的一切都以對(duì)象的形式存儲(chǔ),而RADOS 就負(fù)責(zé)存儲(chǔ)這些對(duì)象,而不考慮它們的數(shù)據(jù)類型。RADOS 層確保數(shù)據(jù)一致性和可靠性。對(duì)于數(shù)據(jù)一致性,它執(zhí)行數(shù)據(jù)復(fù)制、故障檢測(cè)和恢復(fù)。還包括數(shù)據(jù)在集群節(jié)點(diǎn)間的recovery。

OSD

實(shí)際存儲(chǔ)數(shù)據(jù)的進(jìn)程。通常一個(gè)OSD daemon綁定一個(gè)物理磁盤。Client write/read 數(shù)據(jù)最終都會(huì)走到OSD去執(zhí)行write/read操作。

MON(monitor)

Monitor在Ceph集群中扮演者管理者的角色,維護(hù)了整個(gè)集群的狀態(tài),是Ceph集群中最重要的組件。

Mon保證集群的相關(guān)組件在同一時(shí)刻能夠達(dá)成一致,相當(dāng)于集群的領(lǐng)導(dǎo)層,負(fù)責(zé)收集、更新和發(fā)布集群信息。為了規(guī)避單點(diǎn)故障,在實(shí)際的Ceph部署環(huán)境中會(huì)部署多個(gè)Mon,同樣會(huì)引來多個(gè)Mon之前如何協(xié)同工作的問題。在一個(gè)標(biāo)準(zhǔn)的Ceph環(huán)境中,Monitor的功能可以分為以下兩點(diǎn)

  • 管好自己

多個(gè)monitor之間如何協(xié)同工作,怎么同步數(shù)據(jù);

  • 管理集群信息

數(shù)據(jù)的存儲(chǔ),保證數(shù)據(jù)存儲(chǔ)的正確性等等。

Librados

簡(jiǎn)化訪問RADOS的一種方法,目前支持PHP、Ruby、Java、Python、C和C++語言。它提供了Ceph 存儲(chǔ)集群的一個(gè)本地接口RADOS ,并且是其他服務(wù)(如RBD 、RGW) 的基礎(chǔ),以及為CephFS 提供POSIX 接口。librados API 支持直接訪問RADOS ,使得開發(fā)者能夠創(chuàng)建自己的接口來訪問Ceph 集群存儲(chǔ)。

RBD

Ceph塊設(shè)備。對(duì)外提供塊存儲(chǔ)??梢韵翊疟P一樣被映射、格式化已經(jīng)掛載到服務(wù)器上。支持snapshot。

RGW

Ceph對(duì)象網(wǎng)關(guān),提供了一個(gè)兼容S3和Swift的restful API接口。RGW還支持多租戶和Openstack的keyston身份驗(yàn)證服務(wù)。

MDS

Ceph元數(shù)據(jù)服務(wù)器,跟蹤文件層次結(jié)構(gòu)并存儲(chǔ)只供CephFS使用的元數(shù)據(jù)。Ceph塊設(shè)備和RADOS網(wǎng)關(guān)不需要元數(shù)據(jù)。MDS不直接給client提供數(shù)據(jù)服務(wù)。

CephFS

提供了一個(gè)任意大小且兼容POSlX的分布式文件系統(tǒng)。CephFS 依賴Ceph MDS 來跟蹤文件層次結(jié)構(gòu),即元數(shù)據(jù)。

Ceph RADOS

RADOS 是Ceph 存儲(chǔ)系統(tǒng)的核心,也稱為Ceph 存儲(chǔ)集群。Ceph 的所有優(yōu)秀特性都是由RADOS 提供的,包括分布式對(duì)象存儲(chǔ)、高可用性、高可靠性、沒有單點(diǎn)故障、向我修復(fù)以及自我管理等。RADOS 層在Ceph 存儲(chǔ)架構(gòu)中扮演著舉足輕重的角色。Ceph 的數(shù)據(jù)訪問方法(如RBD 、CephFS 、RADOS GW 和librados ) 的所有操作都是在RADOS 層之上構(gòu)建的。

當(dāng)Ceph 集群接收到來向客戶端的寫請(qǐng)求時(shí),CRUSH 算法首先計(jì)算出存儲(chǔ)位置,以此決定應(yīng)該將數(shù)據(jù)寫入什么地方。然后這些信息傳遞到隊(duì)DOS 層進(jìn)行進(jìn)一步處理?;贑RUSH 規(guī)則集,RADOS 以小對(duì)象的形式將數(shù)據(jù)分發(fā)到集群內(nèi)的所有節(jié)點(diǎn)。最后,將這些對(duì)象存儲(chǔ)在OSD 中。

當(dāng)配置的復(fù)制數(shù)大于1時(shí),隊(duì)DOS 負(fù)責(zé)數(shù)據(jù)的可靠性。同時(shí),它復(fù)制對(duì)象,創(chuàng)建副本,并將它們存儲(chǔ)在不同的故障區(qū)域中,換言之,同一個(gè)對(duì)象的副本不會(huì)存放在同一個(gè)故障區(qū)域中。然而,如果有更多個(gè)性化需求和更高的可靠性,就需要根據(jù)實(shí)際需求和基礎(chǔ)架構(gòu)來優(yōu)化CRUSH 規(guī)則集。RADOS 能夠保證在一個(gè)RADOS 集群中的對(duì)象副本總是不少于一個(gè),只要你有足夠的設(shè)備。

除了跨集群存儲(chǔ)和復(fù)制對(duì)象之外,RADOS 也確保對(duì)象狀態(tài)的一致性。在對(duì)象不一致的情況下,將會(huì)利用剩下的副本執(zhí)行恢復(fù)操作。這個(gè)操作自動(dòng)執(zhí)行,對(duì)于用戶而言是透明的,從而為Ceph 提供了自我管理和自我修復(fù)的能力。如果仔細(xì)分析Ceph 的架構(gòu)圖,你會(huì)發(fā)現(xiàn)它有兩部分: RADOS 在最下部,它完全處于Ceph集群的內(nèi)部,沒有提供給客戶端直接接口;另一部分就是在RADOS 之上的面向所有客戶端的接口。

Ceph 對(duì)象存儲(chǔ)設(shè)備

Ceph 的OSD 是Ceph 存儲(chǔ)集群中最重要的一個(gè)基礎(chǔ)組件,它負(fù)責(zé)將實(shí)際的數(shù)據(jù)以對(duì)象的形式存儲(chǔ)在每一個(gè)集群節(jié)點(diǎn)的物理磁盤驅(qū)動(dòng)器中。Ceph 集群中的大部分工作是由OSD 守護(hù)進(jìn)程完成的。存儲(chǔ)用戶數(shù)據(jù)是真正最耗時(shí)的部分。

Ceph OSD 以對(duì)象的形式存儲(chǔ)所有客戶端數(shù)據(jù),并在客戶端發(fā)起數(shù)據(jù)請(qǐng)求時(shí)提供相同的數(shù)據(jù)。Ceph 集群包含多個(gè)OSD 。對(duì)于任何讀或?qū)懖僮?,客戶端首先向monitor 請(qǐng)求集群的map ,然后,它們就可以無須monitor 的干預(yù)直接與OSD 進(jìn)行I/O操作也正是因?yàn)楫a(chǎn)生數(shù)據(jù)的客戶端能夠直接寫入存儲(chǔ)數(shù)據(jù)的OSD 而沒有任何額外的數(shù)據(jù)處理層,才使得數(shù)據(jù)事務(wù)處理速度如此之快。與其他存儲(chǔ)解決方案相比,這種類型的數(shù)據(jù)存儲(chǔ)和取回機(jī)制是Ceph 所獨(dú)有的。

Ceph 的核心特性(比如可靠性、自平衡、自恢復(fù)和一致性)都始于OSD 。根據(jù)配置的副本數(shù), Ceph通過跨集群節(jié)點(diǎn)復(fù)制每個(gè)對(duì)象多次來提供可靠性,同時(shí)使其具有高可用性容錯(cuò)性。OSD 上的每個(gè)對(duì)象都有一個(gè)主副本和幾個(gè)輔副本,輔副本分散在其他OSD 上。由于Ceph 是一個(gè)分布式系統(tǒng)且對(duì)象分布在多個(gè)OSD 上,因此每一個(gè)OSD 對(duì)于一些對(duì)象而言是主副本。但同時(shí)對(duì)于其他對(duì)象而言就是輔副本,存放輔副本的OSD 受主副本OSD 控制;然而,它們也可能又成為主副本OSD 。

Ceph的OSD由一個(gè)已經(jīng)存在Linux 文件系統(tǒng)的物理磁盤驅(qū)動(dòng)器和10SD 服務(wù)組成。

Linux文件系統(tǒng)對(duì)于OSD 守護(hù)進(jìn)程而言是相當(dāng)重要的,因?yàn)樗鼪Q定了支持哪些擴(kuò)展屬性( XATTR) 。這些文件系統(tǒng)擴(kuò)展屬性能夠?yàn)镺SD 守護(hù)進(jìn)程提供內(nèi)部對(duì)象的狀態(tài)、快照、元數(shù)據(jù)和ACL 等信息.這有助于數(shù)據(jù)管理。

 

OSD在擁有有效Linux 分區(qū)的物理磁盤驅(qū)動(dòng)器上進(jìn)行操作。Linux 分區(qū)可以是Btrfs (B樹文件系統(tǒng))、XFS 或ext4。Ceph 集群的性能基準(zhǔn)測(cè)試的主要標(biāo)準(zhǔn)之一就是文件系統(tǒng)的選擇。

Btrfs

與使用XFS 和ext4 文件系統(tǒng)的OSD 相比,使用Btrfs 文件系統(tǒng)的OSD 能夠提供更佳的性能。使用Btrfs 最主要的一個(gè)優(yōu)點(diǎn)是支持寫時(shí)復(fù)制和可寫的快照,這對(duì)于慮擬機(jī)的部署和克隆非常有用。在文件系統(tǒng)中它還支持透明的壓縮、普遍的校驗(yàn)和多設(shè)備的統(tǒng)一管理。還支持高效的XATTR 、對(duì)于小文件的合井,還有SSD上所熟知的集成卷管理,并支持在線fsck 的特性。然而,盡管有如此多的新特性,Btrfs 目前還不具備應(yīng)用于生產(chǎn)系統(tǒng)的條件,但對(duì)于測(cè)試而言它是一個(gè)很好的選擇。

XFS

這是一個(gè)可靠、成熟且非常穩(wěn)定的文件系統(tǒng),因此,我們推薦在生產(chǎn)環(huán)境的Ceph 集群中使用它。XFS 是Ceph存儲(chǔ)中最常用的文件系統(tǒng).也是推薦OSD 使用的文件系統(tǒng)。然而,從另一個(gè)方面來看,XFS 又不如Btrfs。XFS 在元數(shù)據(jù)擴(kuò)展性上存在性能問題,XFS 也是一種日志文件系統(tǒng), 也就是說.每次客戶端發(fā)送數(shù)據(jù)以寫入Ceph 集群時(shí),肯先需要寫人口志空間,然后再寫入XFS 文件系統(tǒng)這樣的兩次寫入操作增加了開銷從而使得XFS 的性能不如Btrfs,Btrfs 沒有使用日志。

Ext4

ext4 文件系統(tǒng)也是一種日志文件系統(tǒng),是一個(gè)遠(yuǎn)合生產(chǎn)環(huán)境下Ceph OSD 使用的文件系統(tǒng);然而,它的受歡迎程度不如XFS 。從性能的角度來看,ext4 文件系統(tǒng)也不如Btrfs。

Ceph OSD 使用諸如Btrfs 和XFS 的日志文件系統(tǒng)。在將數(shù)據(jù)提交到備用存儲(chǔ)之前,Ceph 首先將數(shù)據(jù)寫入一個(gè)稱為日志( journal) 的獨(dú)立存儲(chǔ)區(qū)域,日志是相同的機(jī)械磁盤(如OSD) 或不同的SSD 磁盤或分區(qū)上一小塊緩沖區(qū)大小的分區(qū),甚至也可以是文件系統(tǒng)上的一個(gè)文件。在這種機(jī)制中,Ceph 的所有寫都是先到日志,然后再到備用存儲(chǔ),如下圖所示。

 

Ceph Monitor

顧名思義,Ceph monitor 負(fù)責(zé)監(jiān)控整個(gè)集群的健康狀況。它們以守護(hù)進(jìn)程的形式存在,這些守護(hù)進(jìn)程通過存儲(chǔ)集群的關(guān)鍵信息來維護(hù)集群成員狀態(tài)、對(duì)等節(jié)點(diǎn)狀態(tài),以及集群配置信息。Ceph monitor 通過維護(hù)整個(gè)集群狀態(tài)的主副本來完成它的任務(wù)。集群map 包括monitor 、OSD 、PG 、CRUSH 和MDS map o 所有這些map 統(tǒng)稱為集群map 。讓我們簡(jiǎn)單地瀏覽一下每個(gè)map 的功能。

monitor map

它維護(hù)著monitor 節(jié)點(diǎn)間端到端的信息,其中包括Ceph 集群ID 、monitor 主機(jī)名、IP 地址及端口號(hào)。它還存儲(chǔ)著當(dāng)前map 的創(chuàng)建版本和最后一次修改的信息??梢酝ㄟ^下面的命令檢查集群的monitor map:

  1. # ceph mon dump 

OSD map :

它存儲(chǔ)著一些常見的信息,如集群ID、OSD map 創(chuàng)建版本和最后一次修改信息,以及與池相關(guān)的信息(如池名字、池ID 、類型、副本數(shù)和歸置組) 。它還存儲(chǔ)著OSD 的一些信息,如數(shù)目、狀態(tài)、權(quán)重、最近處于clean 狀態(tài)的間隔以及OSD 主機(jī)等信息??梢酝ㄟ^執(zhí)行以下命令獲取集群的OSD map:

  1. # ceph osd dump 

PG map :

它存儲(chǔ)著歸置組的版本、時(shí)間戳、最新的OSD map 版本、容量充滿的比例以及容量接近充滿的比例等信息。它同時(shí)也跟蹤每個(gè)歸置組的ID 、對(duì)象數(shù)、狀態(tài)狀態(tài)時(shí)間戳、OSD 的叩集合、OSD 的acting 集合,最后還有清洗等信息。要檢查集群的PG map ,執(zhí)行:

  1. # ceph pg dump 

CRUSH map:

它存儲(chǔ)著集群的存儲(chǔ)設(shè)備信息、故障域?qū)哟谓Y(jié)構(gòu)以及在故障域中定義如何存儲(chǔ)數(shù)據(jù)的規(guī)則。要查看集群的CRUSH map ,執(zhí)行:

  1. # ceph osd crush dump 

MDS map:

它存儲(chǔ)著當(dāng)前MDS map 的版本,map 的創(chuàng)建和修改時(shí)間,數(shù)據(jù)和元數(shù)據(jù)池的ID ,集群中MDS 的數(shù)目以及MDS 的狀態(tài)。要查看集群MDS map ,執(zhí)行:

  1. # ceph mds dump 

一個(gè)典型的Ceph 集群通常包含多個(gè)monitor 節(jié)點(diǎn)。多monitor 的Ceph 架構(gòu)使用了仲

裁( quorum ) ,使用Paxos 算法為集群提供了分布式?jīng)Q策機(jī)制。集群中monitor 數(shù)目應(yīng)該是奇數(shù),最低要求是一個(gè)monitor 節(jié)點(diǎn),推薦的數(shù)是3 。自monitor開始仲裁操作,至少需要保證一半以上的monitor 始終處于可用狀態(tài),這樣才可以防止其他系統(tǒng)可以看到的腦裂問題。

這就是為什么推薦使用奇數(shù)個(gè)monitor。在所有的集群monitor 巾,其中有一個(gè)是領(lǐng)導(dǎo)者( leader ) 。如果領(lǐng)導(dǎo)者monitor不可用其他monitor 節(jié)點(diǎn)也有權(quán)成為領(lǐng)導(dǎo)者。生產(chǎn)環(huán)境下的集群必須至少有三個(gè)monitor節(jié)點(diǎn)來提供高可用性。

對(duì)于企業(yè)級(jí)生產(chǎn)環(huán)境,建議使用專門的monitor 節(jié)點(diǎn)。這樣, 一旦你的OSD 節(jié)點(diǎn)發(fā)生

故障,只要你有足夠的monitor 運(yùn)行在獨(dú)立的機(jī)器上,你仍然可以連接到你的Ceph 集群。在存儲(chǔ)的規(guī)劃階段,也應(yīng)該考慮物理機(jī)架的布局。你應(yīng)該將monitor節(jié)點(diǎn)分散到所有的故障域中,例如,不同的開關(guān)、電源和物理機(jī)架。如果你有多個(gè)數(shù)據(jù)中心連接在同一個(gè)高速網(wǎng)絡(luò),monitor 節(jié)點(diǎn)應(yīng)該放到不同的數(shù)據(jù)中心。

Ceph塊存儲(chǔ)

塊存儲(chǔ)是企業(yè)環(huán)境中最常見的一種數(shù)據(jù)存儲(chǔ)格式。Ceph 塊設(shè)備也稱為RADOS 塊設(shè)備(RBD) ;它為物理層的虛擬機(jī)監(jiān)控程序以及虛擬機(jī)提供塊存儲(chǔ)解決方案。Ceph 的RBD 驅(qū)動(dòng)程序已經(jīng)被集成到Linux 內(nèi)核( 2.6.39 或更高版本)中,而且已經(jīng)被QEMU/KVM 支持,它們能無縫地訪問Ceph 塊設(shè)備。

 

Linux主機(jī)能全力支持內(nèi)核RBD (KRB D ) 并通過librados 映射Ceph 塊設(shè)備。然后RADOS將Ceph 塊設(shè)備的對(duì)象以分布式模式存儲(chǔ)在集群中。一旦Ceph 塊設(shè)備映射到Linux主機(jī),它也可以當(dāng)作裸分區(qū)或標(biāo)記為文件系統(tǒng),然后進(jìn)行掛載。

Ceph對(duì)象網(wǎng)關(guān)

Ceph 對(duì)象網(wǎng)關(guān),也稱做RADOS 網(wǎng)關(guān),它是一個(gè)代理,可以將HTTP 請(qǐng)求轉(zhuǎn)換為RADOS ,同時(shí)也可以把RADOS 請(qǐng)求轉(zhuǎn)換為HTTP 請(qǐng)求,從而提供RESTful 對(duì)象存儲(chǔ),這兼容S3 和Swift。Ceph 對(duì)象存儲(chǔ)使用Ceph 對(duì)象網(wǎng)關(guān)守護(hù)進(jìn)程( radosgw) 與librgw 、librados (Ceph 集群)交互。這是使用libfcgi 作為FastCGI的一個(gè)模塊來實(shí)現(xiàn)的,并且可以被任何支持FastCGl的Web 服務(wù)器使用。

 

Ceph文件系統(tǒng)

CephFS 在RADOS 層之上提供了一個(gè)兼容POSIX 的文件系統(tǒng)。它使用MDS 作為守護(hù)進(jìn)程,負(fù)責(zé)管理其元數(shù)據(jù)并將它和其他數(shù)據(jù)分開,這有助于降低復(fù)雜性并提高可靠性。CephFS 繼承了RADOS 的特性并為數(shù)據(jù)提供了動(dòng)態(tài)再平衡。

 

以上是對(duì)Ceph的架構(gòu)和組件做了一些介紹,后續(xù)我們將對(duì)里面的技術(shù)細(xì)節(jié)進(jìn)行詳細(xì)的討論。

責(zé)任編輯:武曉燕 來源: 啟迪云計(jì)算
相關(guān)推薦

2015-04-24 09:33:11

Cloud Found組件分析PaaS

2010-06-17 11:12:53

UML構(gòu)件

2023-04-26 07:57:29

軟件架構(gòu)設(shè)計(jì)

2010-06-17 11:27:11

UML構(gòu)件

2021-02-22 10:32:53

大數(shù)據(jù)大數(shù)據(jù)平臺(tái)大數(shù)據(jù)技術(shù)棧

2020-04-02 09:40:25

移動(dòng)端性能測(cè)試測(cè)試工具

2011-05-23 14:16:32

2009-08-02 17:30:34

光通信技術(shù)EPON

2025-01-20 00:35:00

vitestvite組件

2012-07-16 10:09:10

2016-01-22 10:53:09

前端APP融合

2017-11-09 10:17:17

2017-03-17 19:59:39

2022-11-11 08:55:29

RoCE技術(shù)應(yīng)用

2009-10-21 14:36:53

漏洞補(bǔ)丁

2021-09-13 15:40:37

區(qū)塊鏈教育技術(shù)

2011-03-21 13:10:14

Nagios

2023-04-28 08:23:51

軟件架構(gòu)設(shè)計(jì)

2017-04-19 15:57:21

Ceph RBD mi原理分析

2017-08-07 18:45:51

前端JavaScript技術(shù)棧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)