摘要:層確保數(shù)據(jù)一致性和可靠性。元數(shù)據(jù)服務(wù)器,跟蹤文件層次結(jié)構(gòu)并存儲(chǔ)只供使用的元數(shù)據(jù)。這些文件系統(tǒng)擴(kuò)展屬性能夠?yàn)槭刈o(hù)進(jìn)程提供內(nèi)部對(duì)象的狀態(tài)快照元數(shù)據(jù)和等信息這有助于數(shù)據(jù)管理。
啟迪云-高級(jí)開發(fā)工程師 ?侯玉彬
前言
前文回顧:《開源社區(qū)的明星項(xiàng)目—Ceph談》
上一次簡(jiǎn)單的介紹Ceph的過去和未來的發(fā)展。這一節(jié)將詳細(xì)介紹Ceph的構(gòu)件以及組件。
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ǔ),如下圖所示。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/5322.html
摘要:層確保數(shù)據(jù)一致性和可靠性。保證集群的相關(guān)組件在同一時(shí)刻能夠達(dá)成一致,相當(dāng)于集群的領(lǐng)導(dǎo)層,負(fù)責(zé)收集更新和發(fā)布集群信息。元數(shù)據(jù)服務(wù)器,跟蹤文件層次結(jié)構(gòu)并存儲(chǔ)只供使用的元數(shù)據(jù)。啟迪云-高級(jí)開發(fā)工程師 ?侯玉彬前言上一次簡(jiǎn)單的介紹Ceph的過去和未來的發(fā)展。這一節(jié)將詳細(xì)介紹Ceph的構(gòu)件以及組件。Ceph存儲(chǔ)架構(gòu)Ceph 存儲(chǔ)集群由幾個(gè)不同的daemon組成,每個(gè)daemon負(fù)責(zé)Ceph 的一個(gè)獨(dú)特...
摘要:下圖是的代碼段,我喜歡叫它攪拌攪拌再攪拌得出一個(gè)隨機(jī)數(shù)如果看到這里你已經(jīng)被攪暈了,那讓我再簡(jiǎn)單梳理下選擇一個(gè)時(shí)做的事情給出一個(gè),作為的輸入。,,得出一個(gè)隨機(jī)數(shù)重點(diǎn)是隨機(jī)數(shù),不是。對(duì)于所有的用他們的權(quán)重乘以每個(gè)對(duì)應(yīng)的隨機(jī)數(shù),得到乘積。前言前文回顧:《開源社區(qū)的明星項(xiàng)目—Ceph談》、《史上最全的Ceph構(gòu)件及組件分析》、關(guān)于Ceph主題,這一節(jié)將詳細(xì)介紹Ceph ?CRUSH。Ceph CRU...
摘要:找工作之前看了很多面試題,復(fù)習(xí)資料,但是發(fā)現(xiàn)純看面試題是不行的,因?yàn)榭勘车臇|西是記不牢的,需要知識(shí)成體系才可以,所以筆者整理了一份復(fù)習(xí)大綱,基本涵蓋了中高級(jí)工程師面試所必須知識(shí)點(diǎn),希望可以通過此文幫助一些想換工作的朋友更好的復(fù)習(xí),準(zhǔn)備面試。 概述 都說金三銀四青銅五,這幾個(gè)月份是程序員最好的跳槽時(shí)間,筆者四月初也換了工作。找工作之前看了很多面試題,復(fù)習(xí)資料,但是發(fā)現(xiàn)純看面試題是不行的,因?yàn)榭?..
摘要:正在暑假中的課多周刊第期我們的微信公眾號(hào),更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。若有幫助,請(qǐng)把課多周刊推薦給你的朋友,你的支持是我們最大的動(dòng)力。原理微信熱更新方案漲知識(shí)了,熱更新是以后的標(biāo)配。 正在暑假中的《課多周刊》(第1期) 我們的微信公眾號(hào):fed-talk,更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。 若有幫助,請(qǐng)把 課多周刊 推薦給你的朋友,你的支持是我們最大的動(dòng)力。 遠(yuǎn)上寒山石徑...
閱讀 3484·2021-09-22 15:02
閱讀 3536·2021-09-02 15:21
閱讀 2145·2019-08-30 15:55
閱讀 2796·2019-08-30 15:44
閱讀 794·2019-08-29 16:56
閱讀 2426·2019-08-23 18:22
閱讀 3354·2019-08-23 12:20
閱讀 3102·2019-08-23 11:28