Ceph分布式存儲(chǔ)系統(tǒng)優(yōu)化分析
前篇文章“Ceph分布式存儲(chǔ)系統(tǒng)架構(gòu)研究綜述”重點(diǎn)分析了Ceph分布式存儲(chǔ)系統(tǒng)架構(gòu),今天接著Ceph話(huà)題,繼續(xù)分享Ceph常見(jiàn)的系統(tǒng)和性能優(yōu)化技術(shù)。
Ceph支持多種存儲(chǔ)訪(fǎng)問(wèn)接口,現(xiàn)有的多種性能測(cè)試工具都可用于Ceph的性能測(cè)試,如測(cè)試塊接口性能的fio,iometer等;測(cè)試CephFS接口的filebench,fio等;測(cè)試對(duì)象接口的cosbench等。Ceph有專(zhuān)用的基準(zhǔn)測(cè)試集CBT,其包含radosbench,librbdfio,kvmrbdfio和rbdfio。radosbench基準(zhǔn)測(cè)試使用ceph common軟件包附帶的rados二進(jìn)制文件,通過(guò)對(duì)象接口來(lái)訪(fǎng)問(wèn)Ceph集群。剩下的3個(gè)工具都是測(cè)試塊存儲(chǔ)性能的。
- librbdfio基準(zhǔn)模塊通過(guò)用戶(hù)態(tài)librbd庫(kù)來(lái)測(cè)試RBD的塊存儲(chǔ)性能。
- kvmrbdfio基準(zhǔn)測(cè)試要求在使用CBT之前創(chuàng)建虛擬機(jī)實(shí)例,并掛載RBD塊設(shè)備。
- rbdfio基準(zhǔn)測(cè)試使用內(nèi)核進(jìn)行驅(qū)動(dòng)并將其映射到塊設(shè)備的RBD塊設(shè)備上。Teuthology是一個(gè)Ceph自動(dòng)化測(cè)試的框架,可以在指定節(jié)點(diǎn)運(yùn)行測(cè)試用例,也可以用于性能的測(cè)試。
對(duì)Ceph系統(tǒng)進(jìn)行持續(xù)的性能監(jiān)控可以了解集群運(yùn)行狀況,及早發(fā)現(xiàn)性能瓶頸。Ceph提供了命令行接口輸出性能相關(guān)的統(tǒng)計(jì)數(shù)據(jù)。OSD以PG為單位收集性能數(shù)據(jù)并定期發(fā)給Monitor節(jié)點(diǎn)。Monitor節(jié)點(diǎn)匯總性能數(shù)據(jù)并同步至其他Monitor節(jié)點(diǎn)。我們也提出了一種針對(duì)Ceph存儲(chǔ)系統(tǒng)層進(jìn)行分層性能監(jiān)測(cè)和采集的框架,以及一種通過(guò)Ceph電文來(lái)分析系統(tǒng)性能和瓶頸的方法。
Ceph存儲(chǔ)系統(tǒng)的特點(diǎn)和挑戰(zhàn)
本節(jié)總結(jié)了Ceph分布式存儲(chǔ)系統(tǒng)的特點(diǎn)和面臨的挑戰(zhàn)。
(1)Ceph存儲(chǔ)系統(tǒng)的優(yōu)點(diǎn)
- 1)高性能。針對(duì)并發(fā)量大的異步IO場(chǎng)景,隨著集群規(guī)模的擴(kuò)大,Ceph可提供近線(xiàn)性的性能增長(zhǎng)。
- 2)高可擴(kuò)展性。Ceph通過(guò)CRUSH算法來(lái)實(shí)現(xiàn)數(shù)據(jù)尋址。這種方法避免了元數(shù)據(jù)訪(fǎng)問(wèn)的瓶頸,使集群的存儲(chǔ)容量可以輕易擴(kuò)展至PB級(jí),甚至EB級(jí)。
- 3)統(tǒng)一存儲(chǔ),適用范圍廣。Ceph支持塊、文件和對(duì)象存儲(chǔ),可滿(mǎn)足多種不同的需求。底層的RADOS可擴(kuò)展并支持不同類(lèi)型的存儲(chǔ)服務(wù)。
- 4)支持范圍廣。自2012年起,Linux內(nèi)核開(kāi)始支持Ceph,目前Ceph可以在幾乎所有主流的Linux發(fā)行版和其他類(lèi)UNIX系統(tǒng)上運(yùn)行。自2016年起,Ceph開(kāi)始支持ARM架構(gòu),同時(shí)也可適用于移動(dòng)、低功耗等領(lǐng)域,其應(yīng)用場(chǎng)景覆蓋了當(dāng)前主流的軟硬件平臺(tái)。
(2)Ceph面臨的挑戰(zhàn)
- 1)Ceph底層采用定長(zhǎng)的對(duì)象存儲(chǔ),為了保證對(duì)象級(jí)別的原子性,底層存儲(chǔ)引擎的寫(xiě)放大問(wèn)題嚴(yán)重影響了性能。
- 2)Ceph的數(shù)據(jù)分布算法CRUSH在實(shí)際環(huán)境中存在一些問(wèn)題,包括擴(kuò)容時(shí)數(shù)據(jù)遷移不可控、數(shù)據(jù)分布不均衡等。這些問(wèn)題影響了Ceph性能的穩(wěn)定性。
- 3)Ceph對(duì)新型存儲(chǔ)介質(zhì)的支持較差。在使用高速存儲(chǔ)介質(zhì)時(shí),軟件造成的時(shí)延比硬件導(dǎo)致的時(shí)延高出數(shù)十倍。社區(qū)也在開(kāi)發(fā)面向新型存儲(chǔ)介質(zhì)的存儲(chǔ)引擎。
- 4)Ceph的架構(gòu)復(fù)雜,抽象層次多,時(shí)延較大。雖然Ceph采用面向?qū)ο蟮脑O(shè)計(jì)思想,但其代碼內(nèi)對(duì)象間的耦合嚴(yán)重,導(dǎo)致不同版本間的接口不兼容。針對(duì)不同版本的性能優(yōu)化技術(shù)和方法也互相不兼容。
- 5)Ceph是一個(gè)通用的分布式存儲(chǔ)系統(tǒng),可應(yīng)用于云計(jì)算、大數(shù)據(jù)和高性能計(jì)算等領(lǐng)域。針對(duì)不同的訪(fǎng)問(wèn)負(fù)載特征,Ceph還有較大的性能提升和優(yōu)化空間。
Ceph是一個(gè)通用的分布式文件系統(tǒng),適用于不同的場(chǎng)景。內(nèi)部機(jī)制的優(yōu)化對(duì)所有的場(chǎng)景都會(huì)產(chǎn)生性能的提升,但是優(yōu)化的難度和復(fù)雜度也最高。
存儲(chǔ)引擎的優(yōu)化
在分布式存儲(chǔ)系統(tǒng)中,數(shù)據(jù)被分散在大量的存儲(chǔ)服務(wù)器上,大部分分布式存儲(chǔ)系統(tǒng)都直接使用本地文件系統(tǒng)來(lái)存儲(chǔ)數(shù)據(jù),如HDFS、,Lustre等。高性能、高可靠的分布式存儲(chǔ)系統(tǒng)離不開(kāi)高效、一致、穩(wěn)定、可靠的本地文件系統(tǒng)。Ceph存儲(chǔ)引擎的優(yōu)化,參考“Ceph分布式存儲(chǔ)系統(tǒng)架構(gòu)研究綜述”。
網(wǎng)絡(luò)通信的優(yōu)化
在分布式存儲(chǔ)系統(tǒng)中,節(jié)點(diǎn)間需要通過(guò)網(wǎng)絡(luò)通信來(lái)交換狀態(tài)和數(shù)據(jù)。Ceph有3種類(lèi)型的通信模式,分別是Simple,Async和XIO。Simple線(xiàn)程模式對(duì)每個(gè)網(wǎng)絡(luò)連接都創(chuàng)建了兩個(gè)線(xiàn)程,分別用于接收和發(fā)送。Ceph集群中OSD、Monitor節(jié)點(diǎn)及客戶(hù)端之間都需要建立連接。隨著集群規(guī)模的增長(zhǎng),創(chuàng)建的連接數(shù)和線(xiàn)程數(shù)會(huì)呈指數(shù)級(jí)增長(zhǎng),需要消耗更多的CPU和內(nèi)存資源。在內(nèi)存有限的情況下,Simple模式將導(dǎo)致大量線(xiàn)程的頻繁切換以致內(nèi)存耗盡。Async模式將連接和線(xiàn)程分開(kāi),通過(guò)線(xiàn)程池管理來(lái)維護(hù)線(xiàn)程的使用,用戶(hù)可設(shè)置線(xiàn)程池中線(xiàn)程的數(shù)量。這是目前被廣泛采用的方式,自2017年發(fā)布Kraken版本后,這已經(jīng)成為默認(rèn)的通信模式。XIO模式使用了開(kāi)源的網(wǎng)絡(luò)通信庫(kù)accelio來(lái)實(shí)現(xiàn),現(xiàn)今仍處于實(shí)驗(yàn)階段。目前針對(duì)網(wǎng)絡(luò)通信優(yōu)化的研究都是基于Async通信模式實(shí)現(xiàn)的。
Async模式使用線(xiàn)程池,可兼顧資源和性能的平衡,但早期其設(shè)計(jì)是基于循環(huán)的簡(jiǎn)單調(diào)度方案,未考慮傳輸數(shù)據(jù)大小和線(xiàn)程負(fù)載。這種早期設(shè)計(jì)會(huì)導(dǎo)致工作線(xiàn)程負(fù)載不平衡,在高負(fù)荷情況下產(chǎn)生一些性能問(wèn)題。Han等提出了一種用于Ceph文件系統(tǒng)的動(dòng)態(tài)消息感知通信的調(diào)度程序,以解決工作線(xiàn)程調(diào)度不平衡的問(wèn)題,從而提高性能。他提出的調(diào)度算法根據(jù)傳入消息的類(lèi)型來(lái)平衡工作線(xiàn)程的工作量,同時(shí)避免了工作線(xiàn)程之間不必要的連接轉(zhuǎn)換。
一方面,該算法將低優(yōu)先級(jí)消息(例如來(lái)自心跳連接的消息)分配給特定線(xiàn)程,以免干擾其他高優(yōu)先級(jí)消息。另一方面,高優(yōu)先級(jí)消息被平均分配給每個(gè)工作線(xiàn)程,以平衡線(xiàn)程之間的工作負(fù)載。同時(shí)其使用遺傳算法(GA)來(lái)使不必要的連接轉(zhuǎn)換最小化。測(cè)試結(jié)果表明,在相同的客戶(hù)端工作負(fù)載下,該方法比原始Asyncmessenger的性能高出12.5%,在客戶(hù)端的隨機(jī)工作負(fù)載下,其性能比原始Asyncmessenger高出24%。
優(yōu)化Asyncmessenger還可以通過(guò)將多個(gè)工作線(xiàn)程分配給單個(gè)連接來(lái)處理來(lái)自該連接的流量。但是,由于多個(gè)線(xiàn)程爭(zhēng)用訪(fǎng)問(wèn)連接中的共享資源,這種映射結(jié)構(gòu)會(huì)引起與鎖定維護(hù)有關(guān)的另一種開(kāi)銷(xiāo)。
Ceph的Luminous版本將Async網(wǎng)絡(luò)通信模型作為默認(rèn)的通信方式。雖然Async實(shí)現(xiàn)了IO的多路復(fù)用,使用共享的線(xiàn)程池來(lái)實(shí)現(xiàn)異步發(fā)送和接收任務(wù),但是如何平衡Async工作線(xiàn)程的負(fù)載也是一個(gè)值得關(guān)注的問(wèn)題。下表總結(jié)了幾種常見(jiàn)的算法的優(yōu)化方案。
RDMA是一種低延遲、高性能的網(wǎng)絡(luò)傳輸協(xié)議,已被廣泛應(yīng)用于高性能計(jì)算環(huán)境中。為了在Ceph中利用RDMA以實(shí)現(xiàn)高速的數(shù)據(jù)傳輸,開(kāi)發(fā)社區(qū)提出了兩種方案。
第一種方案是降低Ceph對(duì)網(wǎng)絡(luò)層狀態(tài)的要求,減少M(fèi)essenger需要實(shí)現(xiàn)的邏輯?,F(xiàn)在的XioMessenger規(guī)定的語(yǔ)義和策略過(guò)于復(fù)雜,使用新的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)的難度大;減少M(fèi)essenger的邏輯則需要增加上層的邏輯。
第二種方案是基于目前的AsyncMessenger的框架,擴(kuò)展出支持RDMA的網(wǎng)絡(luò)后端而無(wú)需關(guān)心上層的會(huì)話(huà)邏輯。國(guó)內(nèi)的XSKY公司和Mellanox公司合作提出了基于AsyncMessenger的網(wǎng)絡(luò)通信引擎。這種修改使用RDMA的雙邊通信機(jī)制,性能提升有限。并且在當(dāng)前版本的代碼實(shí)現(xiàn)中,RDMA只可用于客戶(hù)端與服務(wù)器之間、服務(wù)器與服務(wù)器之間的通信,不能在兩個(gè)網(wǎng)絡(luò)中同時(shí)被應(yīng)用,這也限制了該方案的應(yīng)用。
數(shù)據(jù)放置方法的優(yōu)化
經(jīng)典Ceph存儲(chǔ)系統(tǒng)在副本模式下選擇存儲(chǔ)節(jié)點(diǎn)時(shí),僅以節(jié)點(diǎn)存儲(chǔ)容量為唯一選擇條件,并沒(méi)有考慮到網(wǎng)絡(luò)和節(jié)點(diǎn)的負(fù)載狀況,這影響了系統(tǒng)在網(wǎng)絡(luò)性能差和節(jié)點(diǎn)高負(fù)載的情況下的讀寫(xiě)性能。為解決這些問(wèn)題,文獻(xiàn)設(shè)計(jì)了基于軟件定義網(wǎng)絡(luò)技術(shù)的Ceph存儲(chǔ)系統(tǒng)模型和存儲(chǔ)節(jié)點(diǎn)選擇策略,首先利用軟件定義網(wǎng)絡(luò)技術(shù)實(shí)時(shí)獲取網(wǎng)絡(luò)和負(fù)載狀況,以簡(jiǎn)化網(wǎng)絡(luò)配置和減小測(cè)量開(kāi)銷(xiāo),然后通過(guò)建立并求解出綜合考慮了多種因素的多屬性決策數(shù)學(xué)模型來(lái)確定存儲(chǔ)節(jié)點(diǎn)的位置。
在實(shí)際環(huán)境中對(duì)設(shè)計(jì)的存儲(chǔ)節(jié)點(diǎn)選擇方法進(jìn)行讀寫(xiě)操作的測(cè)試,結(jié)果表明,與現(xiàn)有的CRUSH算法相比,提出的存儲(chǔ)節(jié)點(diǎn)選擇方法可以在保持與原有Ceph系統(tǒng)相同的寫(xiě)操作性能的同時(shí),針對(duì)4KB對(duì)象的100%讀操作的響應(yīng)時(shí)間比原有的Ceph集群的縮短了10ms左右,針對(duì)4096KB對(duì)象的100%讀操作響應(yīng)時(shí)間相對(duì)縮短了120ms左右。這種方法需要獲取網(wǎng)絡(luò)的實(shí)時(shí)性能以用于數(shù)據(jù)放置策略的調(diào)整,引入了網(wǎng)絡(luò)負(fù)載采集的開(kāi)銷(xiāo),在大規(guī)模集群場(chǎng)景下應(yīng)用受限。并且由于該方法會(huì)頻繁更新CRUSH算法的參數(shù),其讀取性能會(huì)有所下降。
配置參數(shù)性能調(diào)優(yōu)
Ceph存儲(chǔ)系統(tǒng)的可配置參數(shù)有1500多個(gè),參數(shù)的調(diào)整對(duì)系統(tǒng)性能有較大的影響。默認(rèn)配置針對(duì)不同的硬件和應(yīng)用通常不是最優(yōu)配置。通過(guò)鎖優(yōu)化和系統(tǒng)參數(shù)調(diào)優(yōu)技術(shù)使系統(tǒng)的吞吐率提升了1.6倍,但其并未討論修改了哪些配置參數(shù)。雖有文獻(xiàn)詳細(xì)介紹了在全閃存環(huán)境下需要調(diào)整哪些參數(shù)(包括內(nèi)核、文件系統(tǒng)、磁盤(pán)緩存、RADOS和RBD等),但是沒(méi)有給出調(diào)整前后的性能對(duì)比。
Intel開(kāi)發(fā)并開(kāi)源了一個(gè)性能優(yōu)化工具CeTune,該工具可用于Ceph集群的部署、測(cè)試、分析和調(diào)優(yōu)。該工具是一個(gè)交互性的調(diào)優(yōu)工具,尚不能自動(dòng)尋找最優(yōu)配置。分布式存儲(chǔ)系統(tǒng)的性能調(diào)優(yōu)仍是一個(gè)具有挑戰(zhàn)性的問(wèn)題。參數(shù)組合導(dǎo)致問(wèn)題解空間大,且參數(shù)之間會(huì)互相影響。在數(shù)據(jù)庫(kù)領(lǐng)域已有一些利用機(jī)器學(xué)習(xí)和決策樹(shù)的方法進(jìn)行自動(dòng)調(diào)優(yōu)的成功案例,而在分布式存儲(chǔ)系統(tǒng)領(lǐng)域,相關(guān)研究仍處于起步階段。
面向特定硬件環(huán)境的優(yōu)化
隨著3DXpoint和非易失內(nèi)存等技術(shù)的發(fā)展與成熟,最快的存儲(chǔ)介質(zhì)性能已接近內(nèi)存性能。使用新型存儲(chǔ)器件的系統(tǒng)中軟件已成為瓶頸。如圖所示,HDD,SATASSD,NVMe NANDSSD,3 DXPointStorage,3DXPoint Memory系統(tǒng)中的軟件造成的延遲分別是0,10%,20%,40%和90%。通過(guò)重構(gòu)軟件的體系結(jié)構(gòu)來(lái)充分發(fā)揮高速存儲(chǔ)介質(zhì)的性能是目前的一個(gè)研究熱點(diǎn)。
1、固態(tài)存儲(chǔ)
固態(tài)存儲(chǔ)設(shè)備相比磁盤(pán)設(shè)備,在性能、功耗和機(jī)架密度上具有顯著的優(yōu)勢(shì)。SATA接口限制了固態(tài)存儲(chǔ)設(shè)備的最大吞吐率。Intel提出的利用PCIE總線(xiàn)來(lái)訪(fǎng)問(wèn)固態(tài)存儲(chǔ)的NVMe接口方法提供了通用的高速存取方案。使用NVMe的固態(tài)存儲(chǔ)設(shè)備在吞吐量和延遲性能上比傳統(tǒng)的磁盤(pán)高出1-2個(gè)數(shù)量級(jí),因此在總的IO處理時(shí)間中,軟件造成的延遲占據(jù)更大的比例?,F(xiàn)有的存儲(chǔ)系統(tǒng)為低速硬件設(shè)計(jì)了合并寫(xiě)、異步寫(xiě)等機(jī)制,但是這些機(jī)制并不適用于高速存儲(chǔ)設(shè)備。隨著存儲(chǔ)設(shè)備性能的進(jìn)一步提升,存儲(chǔ)系統(tǒng)軟件棧的性能和效率對(duì)存儲(chǔ)系統(tǒng)的影響越來(lái)越大。存儲(chǔ)系統(tǒng)因受制于低效冗余的軟件棧而不能充分發(fā)揮硬件性能。
SPDK是Intel提出的使用NVMeSSD作為后端存儲(chǔ)的應(yīng)用軟件加速庫(kù)。該軟件庫(kù)的核心是實(shí)現(xiàn)用戶(hù)態(tài)、異步、無(wú)鎖、輪詢(xún)方式的NVMe驅(qū)動(dòng)。雖然SPDK等新型驅(qū)動(dòng)可以將NVMeSSD的性能最高提高6倍,但是在Ceph中直接使用SPDK卻沒(méi)有明顯的性能提升。其主要原因在于在BlueStore的處理中有很多線(xiàn)程協(xié)作,線(xiàn)程間的互斥和切換開(kāi)銷(xiāo)較大。
在Ceph中,OSD使用異步IO等待IO完成,多線(xiàn)程可以充分利用NVMeSSD多通道的特點(diǎn)來(lái)提升性能。由于一個(gè)OSD無(wú)法充分利用NVMeSSD的帶寬,研究人員發(fā)現(xiàn)將NVMeSSD進(jìn)行分區(qū),然后在其上運(yùn)行多個(gè)OSD可顯著提高性能。圖給出了一個(gè)NVMeSSD分別使用1個(gè)OSD、2個(gè)OSD和4個(gè)OSD時(shí)的性能,可以看到在1個(gè)SSD上運(yùn)行4個(gè)OSD時(shí)的隨機(jī)讀,其IOPS增長(zhǎng)很快但延遲增長(zhǎng)緩慢。
但是將SSD分區(qū)并同時(shí)支持多個(gè)OSD也有一些缺點(diǎn),如降低了可靠性、小塊隨機(jī)寫(xiě)延遲增大、需要更多內(nèi)存和CPU資源等。另一項(xiàng)對(duì)于隨機(jī)寫(xiě)的測(cè)試結(jié)果如圖所示,在1個(gè)SSD上運(yùn)行2個(gè)OSD時(shí)的IOPS與運(yùn)行4個(gè)OSD時(shí)的IOPS相近,且需要的CPU資源更少。使用多個(gè)OSD的提升效果與SSD的性能和CPU的性能相關(guān),且需要占用較多的CPU和內(nèi)存資源,對(duì)可用性也有影響,因此不適用于大規(guī)模生產(chǎn)環(huán)境。
除了NVMe以外,現(xiàn)在還有一些使用SATASSD來(lái)代替HDD的策略,但直接替換存儲(chǔ)介質(zhì)的性能提升有限。Ceph針對(duì)HDD設(shè)計(jì)了很多異步和調(diào)整寫(xiě)順序的機(jī)制,但這些機(jī)制反而降低了SSD的性能。當(dāng)使用Ceph集群和全閃存SSD進(jìn)行4K隨機(jī)寫(xiě)入/讀取的性能測(cè)試時(shí),隨機(jī)寫(xiě)入性能也只能達(dá)到16KIOPS。當(dāng)線(xiàn)程數(shù)增加到32個(gè)及以上時(shí),IOPS幾乎保持不變,且延遲急劇增加。隨機(jī)讀取時(shí),當(dāng)線(xiàn)程數(shù)少于32時(shí),IOPS較低,且延遲較高。
2、非易失內(nèi)存
存儲(chǔ)是數(shù)據(jù)密集型系統(tǒng)中最慢的組件。盡管基于NVMe的固態(tài)驅(qū)動(dòng)器提供了更快、更持久的存儲(chǔ),IO性能已大大提高,但其仍然比系統(tǒng)中的其他組件慢。隨著NVDIMM產(chǎn)品的出現(xiàn),可字節(jié)尋址的非易失性存儲(chǔ)器將提供與內(nèi)存相近的IO性能。
Intel將Client端的NVM作為緩存,提出了3個(gè)優(yōu)化方案,大大提升了塊存儲(chǔ)接口的訪(fǎng)問(wèn)性能。
方案一提出由于Ceph快照中的父對(duì)象是只讀的,Client端將其緩存在本地SSD中以提高讀取性能。但該方案僅緩存特定的不變對(duì)象,不具有通用性。
方案二利用Client端的NVM實(shí)現(xiàn)了一個(gè)寫(xiě)回緩存,寫(xiě)入NVM的數(shù)據(jù)并將其不定期刷新至OSD中。該方案性能提升的效果明顯,能將99.99%的寫(xiě)入延遲縮短到1/10以下。但是因?yàn)樵诳蛻?hù)端發(fā)生故障時(shí),保存在NVM中的數(shù)據(jù)沒(méi)有寫(xiě)入Ceph后端的OSD,所以會(huì)造成數(shù)據(jù)不一致。
為了解決這個(gè)問(wèn)題,方案三通過(guò)RDMA技術(shù)為Client節(jié)點(diǎn)和OSD節(jié)點(diǎn)的NVM空間建立鏡像,以避免因Client故障導(dǎo)致的數(shù)據(jù)丟失。復(fù)制寫(xiě)日志機(jī)制將數(shù)據(jù)同時(shí)持久化至Client和OSD的NVM中,當(dāng)Client不發(fā)生故障時(shí),OSD僅提供鏡像空間,無(wú)需額外的CPU等資源?;诳蛻?hù)端的緩存性能提升明顯,但為每個(gè)客戶(hù)端配置NVM和RDMA的成本較高,且該方案并未充分利用OSD端的NVM特性。
3、混合存儲(chǔ)
在Ceph集群中可以使用SSD作為保存日志或緩存來(lái)提高訪(fǎng)問(wèn)性能。Ceph支持使用高速存儲(chǔ)設(shè)備作為緩存來(lái)加速I(mǎi)O性能。目前有兩種不同的緩存實(shí)現(xiàn)方式:1)在OSD內(nèi)部使用緩存;2)將高性能節(jié)點(diǎn)組成緩存層。
根據(jù)第一種方案,在使用FileStore時(shí),文件系統(tǒng)可以識(shí)別并使用異構(gòu)來(lái)存儲(chǔ)介質(zhì),并將其中的SSD作為緩存,其架構(gòu)如圖7(a)所示。這種方案可以依賴(lài)已有的緩存工具(如dm-cache,bcache,F(xiàn)alshCache)來(lái)實(shí)現(xiàn)該功能,也可以使用現(xiàn)有的多種緩存控制方法。其中,dm-cache作為linux內(nèi)核的一部分,采用devicemapper機(jī)制以允許用戶(hù)建立混合卷;bcache是linux內(nèi)核塊層緩存,使用SSD作為HDD硬盤(pán)的緩存,從而起到加速作用;FlashCache可智能緩存最近讀取過(guò)的用戶(hù)數(shù)據(jù)或元數(shù)據(jù),從而加快數(shù)據(jù)訪(fǎng)問(wèn)。
第二種方案的實(shí)現(xiàn)方式是將獨(dú)立的設(shè)備或節(jié)點(diǎn)組成緩存池,在慢速節(jié)點(diǎn)保存冷數(shù)據(jù),在高性能節(jié)點(diǎn)保存熱數(shù)據(jù)。在這種方案中,高速節(jié)點(diǎn)被組織成為緩存層,該緩存層也是一個(gè)RADOS池,不僅具有持久化的能力,還具有獨(dú)立的CRUSH策略。該層以下是基于HDD的RADOS池,其可以采用三副本的ReplicatePG作為后端,也可以采用Erasurecoded作為后端。
未來(lái)展望
針對(duì)前面提到的不同的性能優(yōu)化方法,本節(jié)從Ceph內(nèi)部機(jī)制優(yōu)化、基于新型硬件和面向不同負(fù)載優(yōu)化這3個(gè)方面對(duì)性能優(yōu)化問(wèn)題的未來(lái)研究方向進(jìn)行了展望。
1、Ceph內(nèi)部機(jī)制的優(yōu)化
Ceph發(fā)展至今,其規(guī)模和復(fù)雜性不斷增大。數(shù)據(jù)分發(fā)、元數(shù)據(jù)管理和對(duì)象一致性保證等方面的邏輯復(fù)雜,目前的多線(xiàn)程和加鎖機(jī)制效率較低。采用新的內(nèi)存分配機(jī)制和高效KV數(shù)據(jù)來(lái)管理子系統(tǒng)可能對(duì)性能有所提升。目前內(nèi)置的性能采集機(jī)制不完善,采集內(nèi)容和方法、性能數(shù)據(jù)分析這兩方面都有改進(jìn)的空間。
2、基于新型特定硬件的優(yōu)化
隨著新型存儲(chǔ)介質(zhì)的發(fā)展,NVM和3D XpointSSD等介質(zhì)的訪(fǎng)問(wèn)性能比傳統(tǒng)HDD提升了2-4個(gè)數(shù)量級(jí)。存儲(chǔ)系統(tǒng)優(yōu)化需通過(guò)結(jié)合硬件特征來(lái)重構(gòu)存儲(chǔ)系統(tǒng)的體系結(jié)構(gòu),刪除冗余抽象和功能,并重新分配軟硬件的功能。存儲(chǔ)軟件中針對(duì)傳統(tǒng)硬件的優(yōu)化方法可能會(huì)降低性能,如異步寫(xiě)、隨機(jī)寫(xiě)合并等。SSD的文件轉(zhuǎn)換層的垃圾回收、空間映射與管理功能也可移至軟件實(shí)現(xiàn)。多種不同性能的介質(zhì)也將長(zhǎng)期共存于存儲(chǔ)系統(tǒng)中,根據(jù)數(shù)據(jù)冷熱和介質(zhì)特性自適應(yīng)實(shí)現(xiàn)高性?xún)r(jià)比的數(shù)據(jù)分布也是一個(gè)研究方向。Ceph雖然已支持RDMA協(xié)議,但是雙邊操作方式性能的提升有限,設(shè)計(jì)新的通信機(jī)制、采用單邊操作可進(jìn)一步提高性能。
3、面向應(yīng)用場(chǎng)景的自適應(yīng)優(yōu)化
Ceph應(yīng)用場(chǎng)景眾多,不同應(yīng)用的訪(fǎng)問(wèn)特征和數(shù)據(jù)分布差異較大。在不同的負(fù)載情況下,基于人工制定的存儲(chǔ)優(yōu)化方案不能滿(mǎn)足要求。根據(jù)不同應(yīng)用負(fù)載的自適應(yīng)優(yōu)化技術(shù)也是一個(gè)挑戰(zhàn),其研究?jī)?nèi)容包括利用訪(fǎng)問(wèn)標(biāo)簽來(lái)實(shí)現(xiàn)不同應(yīng)用的性能服務(wù)質(zhì)量保證以及性能隔離、利用機(jī)器學(xué)習(xí)技術(shù)自動(dòng)尋找最優(yōu)配置,以及動(dòng)態(tài)的數(shù)據(jù)預(yù)取和遷移。
結(jié)束語(yǔ)
本文介紹了Ceph分布式存儲(chǔ)系統(tǒng)的發(fā)展歷史和特點(diǎn),并從內(nèi)部?jī)?yōu)化機(jī)制、面向硬件設(shè)備和應(yīng)用場(chǎng)景這3個(gè)方面梳理了現(xiàn)有的性能優(yōu)化方法。作為一個(gè)開(kāi)源的統(tǒng)一存儲(chǔ)系統(tǒng),Ceph提供了高性能、高可擴(kuò)展性和高可用的塊、文件和對(duì)象存取功能。Ceph的特點(diǎn)使之被廣泛應(yīng)用于云計(jì)算、高性能計(jì)算和大數(shù)據(jù)處理領(lǐng)域。目前,Ceph的性能優(yōu)化研究工作雖然有一定的進(jìn)展,但仍有很多問(wèn)題尚未完全解決。