<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Ceph分布式存儲(chǔ)系統(tǒng)架構(gòu)研究綜述

          共 4672字,需瀏覽 10分鐘

           ·

          2021-07-02 11:34


          Ceph項(xiàng)目是加州大學(xué)圣克魯茲分校的 Weil于2006年開發(fā)的。當(dāng)時(shí)他發(fā)現(xiàn)元數(shù)據(jù)的查詢和維護(hù)嚴(yán)重影響了 Lustre等分布式文件系統(tǒng)的性能和擴(kuò)展性,因此設(shè)計(jì)了一種利用算法來確定數(shù)據(jù)與存儲(chǔ)節(jié)點(diǎn)對(duì)應(yīng)關(guān)系的方法 CRUSH。2015年5月發(fā)布的 Linux內(nèi)核2.6.34已開始支持Ceph。Weil也成立了IntTank公司,專注于Ceph的開發(fā)。2014年5月,該公司被 RedHat收購。Ceph同時(shí)支持3種存儲(chǔ)訪問接口,因此被廣泛應(yīng)用于開源私有云計(jì)算平臺(tái)中,為云計(jì)算平臺(tái)提供虛擬機(jī)存儲(chǔ)和對(duì)象訪問能力。

          Ceph開源后,大量公司和開發(fā)者投入精力去開發(fā)其新特 性和功能。表1列出了自開源以來 Ceph 的重要版本更新,它以字母為順序?qū)χ匾陌l(fā)行版本排序。


          Ceph存儲(chǔ)系統(tǒng)的設(shè)計(jì)目標(biāo)是提供高性能、高可擴(kuò)展性、 高可用的分布式存儲(chǔ)服務(wù)。它采用 RADOS在動(dòng)態(tài)變化和異構(gòu)的存儲(chǔ)設(shè) 備集群上,提供了一種穩(wěn)定、可擴(kuò)展、高性能的單一邏輯對(duì)象 存儲(chǔ)接口和能夠?qū)崿F(xiàn)節(jié)點(diǎn)自適應(yīng)和自管理的存儲(chǔ)系統(tǒng)。數(shù)據(jù)的放置采取 CRUSH 算法,客戶端根據(jù)算法確定對(duì)象的位置并直接訪問存儲(chǔ)節(jié)點(diǎn),不需要訪 問元數(shù)據(jù)服務(wù)器。CRUSH算法具有更好的擴(kuò)展性和性能。本文介紹Ceph 的集群架構(gòu)、數(shù)據(jù)放置方法以及數(shù)據(jù)讀寫路徑,并在此基礎(chǔ)上分析其性能特點(diǎn)和瓶頸。


          集群架構(gòu) 

          RADOS可提供高可靠、高性能和全分布式的對(duì)象存儲(chǔ) 服務(wù)。對(duì)象的分布可以基于集群中各節(jié)點(diǎn)的實(shí)時(shí)狀態(tài),也可以自定義故障域來調(diào)整數(shù)據(jù)分布。塊設(shè)備和文件都被抽象包裝為對(duì)象,對(duì)象則是兼具安全和強(qiáng)一致性語義的抽象數(shù)據(jù)類型,因此 RADOS可在大規(guī)模異構(gòu)存儲(chǔ)集群中實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù) 與負(fù)載均衡。


          對(duì)象存儲(chǔ)設(shè)備(OSD)是 RADOS 集群的基本存儲(chǔ)單元,它的主要功能是存儲(chǔ)、備份、恢復(fù)數(shù)據(jù),并與其他 OSD之間進(jìn)行負(fù)載均衡和心跳檢查等。一塊硬盤 通常對(duì)應(yīng)一個(gè) OSD,由 OSD對(duì)硬盤存儲(chǔ)進(jìn)行管理,但有時(shí)一 個(gè)分區(qū)也可以成為一個(gè) OSD,每個(gè) OSD皆可提供完備和具有強(qiáng)一致性語義的本地對(duì)象存儲(chǔ)服務(wù)。MDS是元數(shù)據(jù)服務(wù)器,向外提供 CephFS在服務(wù)時(shí)發(fā)出的處理元 數(shù)據(jù)的請(qǐng)求,將客戶端對(duì)文件的請(qǐng)求轉(zhuǎn)換為對(duì)對(duì)象的請(qǐng)求。RADOS中可以有多個(gè) MDS分擔(dān)元數(shù)據(jù)查詢的工作。



          數(shù)據(jù)放置算法 

          RADOS取得高可擴(kuò)展性的關(guān)鍵在于徹底拋棄了傳統(tǒng)存 儲(chǔ)系統(tǒng)中的中心元數(shù)據(jù)節(jié)點(diǎn),另辟蹊徑地以基于可擴(kuò)展哈希 的受控副本分布算法——CRUSH 來代替.通過 CRUSH 算法,客戶端可以計(jì)算出所要訪問的對(duì)象所在的 OSD。


          與以往 的方法相比,CRUSH 的數(shù)據(jù)管理機(jī)制更好,它把工作分配給 集群內(nèi)的所有客戶端和 OSD 來處理,因此具有極大的伸縮性。CRUSH 用智能數(shù)據(jù)復(fù)制來確保彈性,更能適應(yīng)超大規(guī)模存儲(chǔ)。如圖所示,從文件到對(duì)象以及PG(Placement Group)都 是邏輯上的映射,從PG到OSD的映射采用CRUSH 算法,以保證在增刪集群節(jié)點(diǎn)時(shí)能找到對(duì)應(yīng)的數(shù)據(jù)位置。



          根據(jù)Weil的研究,CRUSH算法具有相當(dāng)好的可擴(kuò)展性,在數(shù)千個(gè) OSD的情況下仍然能保證良好的負(fù)載平衡。但這更多的是理論層面上,目前還沒有研究人員給出在數(shù) PB 規(guī)模的生產(chǎn)環(huán)境中的測試結(jié)果。


          CRUSH算法是Ceph最 初 的 兩 大 創(chuàng) 新 之 一,也是整個(gè)RADOS的基石。CRUSH在一致性哈希的基礎(chǔ)上很好地考慮了容災(zāi)域的隔離,能夠?qū)崿F(xiàn)各類負(fù)載的副本放置規(guī)則,例如 跨機(jī)房、機(jī)架感知等。同時(shí),CRUSH 算法支持多副本和糾刪碼這兩種數(shù)據(jù)冗余方式,還提供了4種不同類型的 Bucket (Uniform、List、Tree、Straw),充分考慮了實(shí)際生產(chǎn)過程中硬 件的迭代式部署方式。


          CRUSH 雖然提供了快速數(shù)據(jù)定位方法,但也有一定的缺陷。首先,在選擇OSD 時(shí)會(huì)出現(xiàn)權(quán)重失衡的情況,即低權(quán)重的OSD雖然在實(shí)際中可用,但是與其他復(fù)制節(jié)點(diǎn)相差較大且需二次哈希;其次,在增刪OSD時(shí)會(huì)有數(shù)據(jù)的額外遷移;最后,完全依賴哈希的隨機(jī)性可能會(huì)導(dǎo)致OSD的容量使用率不均衡,在實(shí)際環(huán)境中出現(xiàn)過超過40%的差異。因此,從2017年發(fā)布的Luminous版本起,Ceph提供了被稱為upmap的新機(jī)制,用于手動(dòng)指定PG的分布位置來達(dá)到均衡數(shù)據(jù)的效果。


          統(tǒng)一訪問接口 

          RADOS提供了分布式對(duì)象存儲(chǔ)能力,并在此基礎(chǔ)上擴(kuò)展了塊存儲(chǔ)和文件存儲(chǔ)功能。RADOS中單個(gè)對(duì)象的大小根據(jù)配置文件指定(一般為4M)。LIBRADOS提供的庫可以訪問任意對(duì)象的內(nèi)容。RGW提供了一個(gè)基于Bucket的對(duì)象存儲(chǔ)服務(wù)。RGW提供的服務(wù)兼 容AWS(Amazon WebServices)的S3 以及Openstack的Swift。RGW的對(duì)象可大于4M,當(dāng)其大小超過4M時(shí),RGW會(huì)將該對(duì)象分為首對(duì)象和多個(gè)數(shù)據(jù)對(duì)象。



          塊存儲(chǔ)接口提供類似磁盤的連續(xù)字節(jié)序列的存儲(chǔ)能力,這是存儲(chǔ)數(shù)據(jù)應(yīng)用最廣泛的形式。磁盤陣列、存儲(chǔ)區(qū)域網(wǎng)絡(luò)、iSCSI都可以提供塊存儲(chǔ)功能。Ceph的塊存儲(chǔ)利用 RADOS 功能,支持復(fù)制、快照、一致性和高可用等特性。塊設(shè)備是精 簡配置的,并且可調(diào)整大小。Ceph的RBD可使用內(nèi)核模塊或librbd與OSD進(jìn)行交互。RBD設(shè)備默認(rèn)在名為rbd的資源池中。每個(gè)rbd在創(chuàng)建后會(huì)生成一個(gè) 名為rbdName。


          文件系統(tǒng)接口是通過 CephFS實(shí)現(xiàn)的。CephFS文件系 統(tǒng)中的數(shù)據(jù)(文件內(nèi)容)和元數(shù)據(jù)(目錄、文件)都以對(duì)象的形 式被保存在 OSD上??蛻舳丝梢允褂胏eph fuse掛載為應(yīng)用 層模式或者使用內(nèi)核的mount ceph掛載為內(nèi)核模式。兩種模式都是與 MDS通信,以獲得文件系統(tǒng)的目錄結(jié)構(gòu)信息,并訪問對(duì)應(yīng)的OSD。CephFS的元數(shù)據(jù)也被保存在對(duì)象中,其對(duì)象的前綴為msd_,保存的內(nèi)容包括文件系統(tǒng)的索引節(jié)點(diǎn)、元數(shù)據(jù)日志和快照等。MDS在啟動(dòng)時(shí)會(huì)讀取文件系統(tǒng)元數(shù)據(jù)對(duì)象并將其緩存在內(nèi)存中,客戶端需要與之通信以查詢 或更新元數(shù)據(jù)信息。


          Ceph是一個(gè)通用的分布式文件系 統(tǒng),適 用 于 不 同 的 場 景.內(nèi)部機(jī)制的優(yōu)化對(duì)所有的場景都會(huì)產(chǎn)生性能的提升,但是優(yōu)化的難度和復(fù)雜度也最高。


          在分布式存儲(chǔ)系統(tǒng)中,數(shù)據(jù)被分散在大量的存儲(chǔ)服務(wù)器上,大部分分布式存儲(chǔ)系統(tǒng)都直接使用本地文件系統(tǒng)來存儲(chǔ) 數(shù)據(jù),如HDFS,Lustre等。 高性能、高可靠的分布式存儲(chǔ)系統(tǒng)離不開高效、一致、穩(wěn)定、可靠的本地文件系統(tǒng)。本地文件系統(tǒng)的代碼已經(jīng)過長時(shí)間的測試和性能優(yōu)化,對(duì)于數(shù)據(jù)持久化和空間管理也有相應(yīng)的方案。文件系統(tǒng)提供了 POSIX接口,通過這個(gè)接口,分布式文件系統(tǒng)可以切換不同的本地文件系統(tǒng)。


          Ceph早期的版本采用將對(duì)象存儲(chǔ)在本地文件系統(tǒng)的存儲(chǔ)后端的方式,該方式被稱為 FileStore。FileStore通過POSIX接口將對(duì)象和對(duì)象屬性放在本地文件系統(tǒng)上,如 XFS、ext4、btrfs等。最初,對(duì)象屬性被存儲(chǔ)在POSIX擴(kuò)展文件屬性(xattrs)中,但當(dāng)后來對(duì)象屬性超出xattrs的大小或計(jì)數(shù)限制時(shí),F(xiàn)ileStore就在LevelDB中存放對(duì)象屬性。本地文件系統(tǒng)不能很好地適配 Ceph的對(duì)象存儲(chǔ)需求的原因主要包括以下幾個(gè)方面。


          1)數(shù)據(jù)和元數(shù)據(jù)分離不徹底,導(dǎo)致對(duì)象尋址慢。FileStore根據(jù)對(duì)象前綴將其放置在不同目錄下,對(duì)象在進(jìn)行訪問時(shí)需要多次尋址,且同一目錄下的文件也沒有排序。

          2)本地文件系統(tǒng)不支持對(duì)象的事務(wù)操作。FileStore為了支持寫事務(wù)的特性,通過寫前日志功能來保證事務(wù)的原子性。這導(dǎo)致了數(shù)據(jù)“雙寫”的問題,造成了一半磁盤性能的浪費(fèi)。

          3)本地文件系統(tǒng)也有日志等保證一致性的操作,這進(jìn)一步導(dǎo)致了寫放大。


          使用本地文件系統(tǒng)作為后端存儲(chǔ)的弊端導(dǎo)致了FileStore的性能很差。我們測試的結(jié)果表明,在三副本條件下的塊存儲(chǔ)服務(wù)寫性能甚至達(dá)不到硬盤自身性能的1/3。


          針對(duì) FileStore的缺陷,Ceph社區(qū)于2015年重新開發(fā)了BlueStore。兩種存儲(chǔ)后端的邏 輯結(jié)構(gòu)如圖所示。BlueStore通過直接管理裸設(shè)備,縮短了IO 路徑。Ceph社區(qū)設(shè)計(jì)了一個(gè)簡化的文件系統(tǒng) BlueFS,該文件系統(tǒng)繞過了本地文件系統(tǒng)層,解決了文件系統(tǒng)層次結(jié)構(gòu)遍歷效率低的問題。它通過使用KV索引來存儲(chǔ)元數(shù)據(jù),嚴(yán)格分離元數(shù)據(jù)和數(shù)據(jù),提高了索引效率。這些改進(jìn)解決了日志“雙寫”的問題,帶來了較大的讀寫性能提升。



          BlueStore的性能比 FileStore的性能在三副 本情況下提升了1倍以上,在使用糾刪碼的情況下性能提升 最高,可達(dá)到原本的3倍。


          雖然BlueStore在設(shè)計(jì)時(shí)考慮了與SSD及 NVMeSSD閃 存的適配,但其對(duì)新硬件或混合存儲(chǔ)的支持不佳。除此之外,BlueStore的設(shè)計(jì)也存在一些問題,如數(shù)據(jù)和元數(shù)據(jù)被存儲(chǔ)在不同的位置,元數(shù)據(jù)結(jié)構(gòu)和IO邏輯都較復(fù)雜,在IO較小的情況下可能存在雙寫問題,同時(shí)元數(shù)據(jù)占用內(nèi)存較大。


          閃存盤在寫入前需要將原有數(shù)據(jù)擦除?,F(xiàn)有的NVMe設(shè)備并未記錄哪些地址在寫入前需要被擦除,因此導(dǎo)致設(shè)備內(nèi)部的垃圾回收效率低下。原則上,異步的垃圾回收可以提高寫入效率,若不修改磁盤布局則垃圾回收的粒度較小,但 是實(shí)際上該操作在設(shè)備和中間層實(shí)現(xiàn)的效果并不佳。針對(duì)閃存盤的特點(diǎn),Ceph社區(qū)提出了一種新的磁盤布局方式 SeaStore,該布局在較高層次的驅(qū)動(dòng)上進(jìn)行垃圾回收。其基本思想是將設(shè)備空間分為多個(gè)空閑段,每個(gè)段的大小為100MB 到10GB,所有數(shù)據(jù)順序地被流式傳輸?shù)皆O(shè)備的段上,在刪除數(shù)據(jù)時(shí)僅做標(biāo)記不進(jìn)行垃圾回收,當(dāng)段中的利用率降低至某個(gè)利用率閾值時(shí),會(huì)將其中的數(shù)據(jù)移到另一個(gè)段中。


          清理工作和寫入工作混合在一起,以避免寫延遲的波動(dòng)。當(dāng)數(shù)據(jù)全部清理完成后就丟棄整個(gè)段,設(shè)備可以擦除和回收這個(gè)段。SeaStore主要應(yīng)用于NVMe設(shè)備,使用 SeaStore框架進(jìn)行基于未來規(guī)劃模型的編程方式來實(shí)現(xiàn) run-to-completion模型,當(dāng)其與SPDK 和 DPDK結(jié)合使用時(shí),可以在網(wǎng)絡(luò)消息層實(shí)現(xiàn)讀寫路徑上的零(最小)拷貝。目前該 存儲(chǔ)引擎還在開發(fā)中,性能提升效果尚不明確。


          國內(nèi)的深信服公司設(shè)計(jì)了一個(gè)基于 SPDK的用戶態(tài)本地存儲(chǔ)引擎——PFStore來滿足高性能分布式存儲(chǔ)的需求,對(duì)數(shù)據(jù)使用追加寫的方式,將元數(shù)據(jù)修改增量寫入日志,在后 期定時(shí)刷盤時(shí)再把數(shù)據(jù)寫入RocksDB中。另外,該引擎啟動(dòng)多個(gè)實(shí)例來分別管理SSD的不同分區(qū),啟動(dòng)多個(gè) OSD來提升性能的方法。


          近幾年,隨著Openchannel SSD、3DXPoint、非易失內(nèi)存、 SMR等新型硬件的成熟和市場,出現(xiàn)了一些針對(duì)特定硬件的存儲(chǔ)后端優(yōu)化技術(shù),我們將在下一次內(nèi)容中詳細(xì)介紹面向新型硬件的優(yōu)化技術(shù)。


          作者:張 曉、張思蒙、石佳、董聰、李戰(zhàn)懷

          推薦閱讀:

          華為的數(shù)字化轉(zhuǎn)型與數(shù)據(jù)治理

          從0到1:華為政企數(shù)字化轉(zhuǎn)型項(xiàng)目實(shí)踐分享

          小米用戶畫像實(shí)戰(zhàn),48頁P(yáng)PT下載

          超詳細(xì)280頁Docker實(shí)戰(zhàn)文檔!開放下載

          【干貨】如何從0到1構(gòu)建用戶畫像系統(tǒng)(附pdf下載鏈接)

          【中臺(tái)實(shí)踐】華為大數(shù)據(jù)中臺(tái)架構(gòu)分享.pdf

          華為大數(shù)據(jù)解決方案(PPT)

          瀏覽 133
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色天天干 | 苍井空亚洲精品 | 波多野结衣网址 | 久久xxx | 蒙古一级黄片 |