沈良好,吳慶波,楊沙洲
(國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院,長沙410073)
能耗管理是數(shù)據(jù)中心面臨的重要挑戰(zhàn)。一方面,隨著基礎(chǔ)架構(gòu)規(guī)模的擴(kuò)大,數(shù)據(jù)中心需要為日益劇增的能源消耗買單,在數(shù)據(jù)中心總體總擁有成本(Total Cost of Ownership,TCO)中,用于能源的費(fèi)用已經(jīng)成為重要的組成部分。另一方面,隨著數(shù)量的增加與規(guī)模的擴(kuò)大,數(shù)據(jù)中心所消耗的能源,在整個社會能源消耗中所占的比重也越來越大,據(jù)統(tǒng)計,全球數(shù)據(jù)中心在2010年對電能的消耗超過了2×1011千瓦時,約占全球總用電量的1.3%,且呈逐年上升的趨勢在數(shù)據(jù)中心的組件中,存儲系統(tǒng)是能源消耗主要來源之一,僅次于計算資源,約占30%。因此,降低存儲系統(tǒng)的能耗是達(dá)到數(shù)據(jù)中心節(jié)能目的的重要手段。近年來,存儲系統(tǒng)節(jié)能技術(shù)受到了廣泛關(guān)注,從單個磁盤到磁盤陣列,再到分布式存儲,均出現(xiàn)了大量的研究工作[2-5]。
分布式存儲是目前大部分?jǐn)?shù)據(jù)中心所采用的存儲形式。作為近年熱門的分布式存儲,Ceph[6]因具備了高擴(kuò)展性、高性能、高可靠性的特點(diǎn),而備受關(guān)注。因此,本文基于開源項(xiàng)目Ceph,進(jìn)行分布式存儲系統(tǒng)節(jié)能技術(shù)的研究。本文的工作主要有:以節(jié)能為目的的Ceph數(shù)據(jù)布局優(yōu)化;多級功耗管理策略;功耗管理框架的設(shè)計與實(shí)現(xiàn)。該框架結(jié)合了上述數(shù)據(jù)布局優(yōu)化方法、多級功耗管理策略以及硬件的節(jié)能功能,實(shí)現(xiàn)了Ceph分布式存儲的動態(tài)功耗管理。
分布式存儲系統(tǒng)的節(jié)能技術(shù)近年來受到了廣泛的關(guān)注,是存儲領(lǐng)域熱門的研究方向之一。
微軟劍橋研究院的Thereska E等人設(shè)計并開發(fā)了Sierra[7]分布式存儲系統(tǒng),該系統(tǒng)使用了能耗感知的數(shù)據(jù)布局和基于負(fù)載預(yù)測的節(jié)點(diǎn)狀態(tài)管理,在系統(tǒng)低負(fù)載時,關(guān)閉部分節(jié)點(diǎn),從而增加系統(tǒng)的能源利用率。為保證系統(tǒng)的容錯能力以及數(shù)據(jù)的一致性,Sierra使用了分布式虛擬日志(DVL)技術(shù)。經(jīng)過測試,該系統(tǒng)在作為Hotmail和Windows Messenger服務(wù)的后端存儲時能夠節(jié)省23%以上的能耗,且性能的損失相當(dāng)微小。
UIUC的Kaushik R等人基于標(biāo)準(zhǔn)的HDFS提出了其節(jié)能的衍生版GreenHDFS[8]。在GreenHDFS中,數(shù)據(jù)節(jié)點(diǎn)最初被劃分為熱區(qū)和冷區(qū),處于熱區(qū)的數(shù)據(jù)(約70%)有著更高的訪問頻率,所以為保證性能,熱區(qū)的節(jié)點(diǎn)是一直處于活躍狀態(tài)的;而冷區(qū)的數(shù)據(jù)(約30%)使用率非常低,所以冷區(qū)的節(jié)點(diǎn)將會進(jìn)入省電模式。一個自適應(yīng)的劃分策略用來動態(tài)地指定節(jié)點(diǎn)所屬的區(qū),并使得冷區(qū)節(jié)點(diǎn)能夠達(dá)到一定的數(shù)量,進(jìn)而增加整個集群節(jié)能的程度:在Yahoo的一個真實(shí)負(fù)載環(huán)境中,GreenHDFS在3個月的測試時間內(nèi),節(jié)省了26%的能耗。
此外,針對Ceph分布式存儲的節(jié)能技術(shù)也受到了關(guān)注,文獻(xiàn)[9]提出了一種Ceph OSD(對象存儲設(shè)備)的自適應(yīng)的磁盤降速算法。該算法針對單個OSD,在其低負(fù)載時降低所對應(yīng)的磁盤速度,進(jìn)入節(jié)能狀態(tài)。他們的工作針對的只是部分OSD上磁盤的節(jié)能,所以對整個系統(tǒng)能耗的影響十分有限。
分布式存儲中的數(shù)據(jù)放置算法及其產(chǎn)生的數(shù)據(jù)布局是影響系統(tǒng)可靠性、擴(kuò)展性的重要因素之一。Ceph存儲系統(tǒng)基于CRUSH算法的數(shù)據(jù)布局是其具備可靠性、高性能、高擴(kuò)展性的基礎(chǔ),但同時也限制了系統(tǒng)節(jié)能的能力。
作為Ceph存儲的關(guān)鍵技術(shù)之一,CRUSH算法由Weil S A于2006年提出[10]。CRUSH基于偽隨機(jī)的哈希算法產(chǎn)生確定的均勻的數(shù)據(jù)分布。CRUSH有多個輸入,包含了對象id,Crushmap和放置規(guī)則。其中,對象id一般用于區(qū)別需要存放的數(shù)據(jù)對象,實(shí)際運(yùn)行時對象會被映射到不同的放置組(PG),所以作為輸入id的實(shí)際是PG的id。Crushmap描述了數(shù)據(jù)節(jié)點(diǎn)的層級關(guān)系,用樹形結(jié)構(gòu)表示,包含bucket和device類型的節(jié)點(diǎn),其中bucket節(jié)點(diǎn)可以包含其他類型的bucket和device節(jié)點(diǎn),通常用于描述故障域(failure domain),如主機(jī)、機(jī)架、機(jī)柜等,把副本分布于不同故障域,是Ceph保證數(shù)據(jù)可靠性的重要措施;而device節(jié)點(diǎn)只能作為葉子節(jié)點(diǎn),表示對象存儲設(shè)備(OSD)。放置規(guī)則用于指定副本放置的策略,包含了take,select,emti等語句,其中select可以指定副本個數(shù)和副本放置的故障域。在一個包含4臺主機(jī)的集群中,副本分布策略為:select(2,host),即數(shù)據(jù)的2個副本放置于不同的主機(jī)上,則通過CRUSH算法產(chǎn)生的數(shù)據(jù)布局如圖1所示。
圖1 Crush算法數(shù)據(jù)布局
很多應(yīng)用場景中都存在低負(fù)載時期,此時,為了節(jié)省系統(tǒng)的能耗,可以關(guān)閉部分?jǐn)?shù)據(jù)節(jié)點(diǎn)。出于以下考慮,關(guān)閉節(jié)點(diǎn)時應(yīng)保證數(shù)據(jù)全集是可用的(即任意的數(shù)據(jù)對象至少有一個以上副本是未被關(guān)閉的):一方面,如果發(fā)生不可用數(shù)據(jù)的訪問,則會產(chǎn)生非常大的訪問延遲;另一方面,頻繁開啟相應(yīng)的節(jié)點(diǎn)會產(chǎn)生不可忽視的額外能耗。在Ceph存儲系統(tǒng)中,數(shù)據(jù)節(jié)點(diǎn)數(shù)為N,被劃分為n個故障域fd,副本分布策略為select(r,fd),則在系統(tǒng)低負(fù)載系統(tǒng)時期最多可以關(guān)閉的故障域的個數(shù)為n'<r,因?yàn)槿魏未笥诨蛘叩扔趓個故障域的組合中,必然包含了某些數(shù)據(jù)的所有副本。如圖1中,可以關(guān)閉的主機(jī)個數(shù)為1臺,當(dāng)關(guān)閉2臺以上主機(jī)時,A個~F個數(shù)據(jù)塊必然有一個無法訪問。隨著集群規(guī)模的增加,最多只能關(guān)閉r-1個故障域的節(jié)點(diǎn),可以達(dá)到最大節(jié)能比例為(r-1)/n,當(dāng)集群規(guī)模較大時,節(jié)能的效果微乎其微。
結(jié)合CRUSH的特性,在Crushmap中引入了功耗組(PowerGroup)的bucket,用于對故障域集合進(jìn)行再次劃分,即數(shù)據(jù)副本在放置于不同故障域前,將首先被分布于不同的功耗組。同一個功耗組的節(jié)點(diǎn)處于相同的能耗狀態(tài),功耗組的個數(shù)等于副本個數(shù)r。優(yōu)化算法的描述如下:
以圖1中場景為例,則經(jīng)過優(yōu)化的數(shù)據(jù)布局如圖2所示。
圖2 優(yōu)化后的數(shù)據(jù)布局
此時,可以關(guān)閉的節(jié)點(diǎn)為2個,且所有數(shù)據(jù)仍然可用。經(jīng)過優(yōu)化的數(shù)據(jù)布局中,數(shù)據(jù)的副本分別位于r個不同的功耗組中,在保證數(shù)據(jù)集可用的情況下,則最多可以關(guān)閉r-1個功耗組的節(jié)點(diǎn),系統(tǒng)能夠達(dá)到的節(jié)能比例為r-1/r,當(dāng)集群規(guī)模較大時,節(jié)省的能耗是非常可觀的。同時,由于很好地實(shí)現(xiàn)了副本的分布,可以關(guān)閉的功耗組個數(shù)可以是1~r-1的任何一個,從而為系統(tǒng)的多級功耗管理提供了基礎(chǔ)。
基于對數(shù)據(jù)副本分布的優(yōu)化,使得系統(tǒng)中活躍的功耗組個數(shù)可以根據(jù)系統(tǒng)I/O負(fù)載的情況按需調(diào)整,讓系統(tǒng)處于不同的功耗級別,從而實(shí)現(xiàn)系統(tǒng)的多級功耗管理,減少能耗。
在Ceph中,系統(tǒng)的主要能耗來自于OSD節(jié)點(diǎn)。在一個包含n個OSD節(jié)點(diǎn)的Ceph集群中,副本個數(shù)設(shè)置為r,經(jīng)過數(shù)據(jù)布局優(yōu)化后,節(jié)點(diǎn)被劃分至r個功耗組,若單個OSD節(jié)點(diǎn)的功耗為p,則單個功耗組的功耗為:
系統(tǒng)中活躍(未關(guān)閉或休眠)的功耗組個數(shù)為ractive,則系統(tǒng)功耗為:
其中,ractive的取值可以為1~r,即系統(tǒng)可以處于P1,P2,…,Pr不同的功耗級別。在一段時間T內(nèi),系統(tǒng)所消耗的能耗為:
其中,ti是系統(tǒng)處于相應(yīng)功耗級別的時間;Et是系統(tǒng)用于級別切換所消耗的能耗之和。
功耗級別管理的主要任務(wù)是根據(jù)I/O負(fù)載狀態(tài)動態(tài)調(diào)整功耗級別,在保證服務(wù)質(zhì)量的同時,盡量減少功耗。I/O負(fù)載狀態(tài)可以通過統(tǒng)計分析或者預(yù)測的方式確定,本文采用的是前者,即收集并統(tǒng)計系統(tǒng)在一定時間內(nèi)的I/O數(shù)據(jù)如I/O次數(shù)、I/O數(shù)據(jù)量等,并以此確定系統(tǒng)的I/O負(fù)載狀態(tài)。為描述不同場景下的I/O負(fù)載狀態(tài),需要對隨機(jī)I/O和順序I/O都進(jìn)行收集與統(tǒng)計,因此,在可配置的時間窗口W內(nèi),對系統(tǒng)的I/O狀態(tài)數(shù)據(jù)可統(tǒng)計為:
其中,IOrtotal為W時間內(nèi)發(fā)生的隨機(jī)I/O的次數(shù);IOstotal為W時間內(nèi)順序I/O請求的數(shù)據(jù)量。兩者分別與預(yù)先測得的系統(tǒng)峰值I/O能力對比,得出系統(tǒng)I/O狀態(tài)的量化描述,即I/O負(fù)載率L:
其中,L被用于與當(dāng)前功耗率Pl=ractive/r比較,確定系統(tǒng)下一階段所處的功耗級別:當(dāng)系統(tǒng)的I/O負(fù)載率高于能耗率時,活躍的功耗組已經(jīng)不能滿足I/O負(fù)載的要求,需要更多的功耗組提供服務(wù);當(dāng)系統(tǒng)的I/O負(fù)載率低于能耗率時,則系統(tǒng)中有部分功耗組可以被關(guān)閉,以達(dá)到節(jié)能的目的。功耗級別確定的偽代碼為:
輸出的ractive'將作為下一個W時間段內(nèi)的系統(tǒng)所處的功耗級別,此時需要關(guān)閉/開啟的功耗組的個數(shù)為|ractive'-ractive|。為保證系統(tǒng)的高可用性,可以設(shè)置允許的最少活躍的功耗組個數(shù)為2,即允許系統(tǒng)數(shù)據(jù)副本至少有2個是可用的。
基于第3節(jié)、第4節(jié)所述的優(yōu)化方法,結(jié)合Ceph自身技術(shù)特點(diǎn),本文設(shè)計并實(shí)現(xiàn)了一個能耗管理框架,并進(jìn)行了實(shí)驗(yàn)評估。
如圖3所示,該功耗管理框架由4個模塊組成,其中Layout Optimizer模塊實(shí)現(xiàn)針對CRUSH的數(shù)據(jù)布局的優(yōu)化算法,并生成新的Crushmap和放置規(guī)則;I/O Tracer模塊用于跟蹤與統(tǒng)計系統(tǒng)的I/O數(shù)據(jù),即以一定的頻率采集分析Ceph Log中的I/O相關(guān)信息記錄;Lever Shifter則是管理系統(tǒng)功耗級別的模塊,根據(jù)跟蹤統(tǒng)計到的I/O數(shù)據(jù),分析當(dāng)前系統(tǒng)的I/O負(fù)載狀態(tài),基于所選擇的的策略確定是否需要切換功耗級別;Status Manager模塊負(fù)責(zé)功耗級別切換的執(zhí)行,首先利用Ceph的OSD狀態(tài)管理工具設(shè)置OSD在Ceph集群中的狀態(tài)為noout,保證不會因主動停止OSD而發(fā)生數(shù)據(jù)遷移,接著通過遠(yuǎn)程休眠/網(wǎng)絡(luò)喚醒(WOL[11])等技術(shù)控制OSD所在的服務(wù)器電源管理狀態(tài),基于休眠/喚醒的方式比傳統(tǒng)的關(guān)閉/開啟服務(wù)器的方式更為節(jié)能,式(1)中用于級別切換的能耗對系統(tǒng)的總能耗的影響幾乎可以忽略不計,且響應(yīng)時間更短。
圖3 系統(tǒng)架構(gòu)
在一個有6個OSD節(jié)點(diǎn)的Ceph系統(tǒng)中進(jìn)行了該功耗管理框架的實(shí)驗(yàn)評估。Ceph版本為0.80.5,操作系統(tǒng)為Kylin3.2,每個節(jié)點(diǎn)上配置一個OSD,副本策略為select(3,host)。為模擬不同的負(fù)載場景,用fio[12]測試工具進(jìn)行測試。
如圖4所示內(nèi)容為連續(xù)8 h測試(級別切換的超時時間設(shè)置為10 min,通過thinktime參數(shù)使得系統(tǒng)約4 h處于低負(fù)載時期)中,系統(tǒng)分別處于各能耗級別的次數(shù)。
圖4 系統(tǒng)所處功耗級別的次數(shù)
在未使用節(jié)能框架時,系統(tǒng)運(yùn)行8 h的能耗約為48×6×10 min×400 W,在開啟了節(jié)能框架(Ceph-PM)后,系統(tǒng)運(yùn)行8 h的能耗約為(11×2+12×4+25×6)×10 min×400 W,系統(tǒng)達(dá)到的節(jié)能比例約為25%,如果系統(tǒng)規(guī)模增大,節(jié)省的能源開支將會非??捎^。但需要注意的是,在真實(shí)環(huán)境中,系統(tǒng)負(fù)載的變化可能更為頻繁、劇烈,所以需要更精確、復(fù)雜的負(fù)載級別切換策略,這也是本文未來的工作內(nèi)容之一。
圖5、圖6描述的是系統(tǒng)在低功耗狀態(tài)下對隨機(jī)I/O和順序I/O的響應(yīng)時間的影響,總體上,讀操作平均響應(yīng)時間有略微變化,但不會太大地影響服務(wù)質(zhì)量。
圖5 隨機(jī)I/O的平均響應(yīng)時間
圖6 順序I/O的平均響應(yīng)時間
而寫操作時,由于低功耗狀態(tài)下需要寫副本的次數(shù)變少,對于客戶端來說,響應(yīng)時間反而更小一些,且對于順序?qū)懹绊懜鼮槊黠@。
本文基于Ceph系統(tǒng),研究分布式存儲技術(shù),分析基于CRUSH算法的數(shù)據(jù)布局存在的不足,提出以節(jié)能為目的的優(yōu)化算法和系統(tǒng)多級功耗管理策略,并實(shí)現(xiàn)了Ceph的多級功耗管理框架。實(shí)驗(yàn)結(jié)果表明,該能耗管理框架能夠根據(jù)系統(tǒng)負(fù)載變化動態(tài)地調(diào)整系統(tǒng)功耗級別,有效地降低系統(tǒng)能耗。
[1]Koomey J.Growth in Data Center Electricity Use 2005 to 2010[EB/OL].(2011-10-11).http://www.analytic spress.com/datacenters.html.
[2]Gurumurthi S,Sivasubramaniam A,Kandemir M,et al.DRPM:Dynamic Speed Control for Power Management in Server Class Disks[C]//Proceedings of the 30th Annual International Symposium on Computer Architecture.San Diego,USA:IEEE Press,2003:211-219.
[3]李海東.磁盤陣列節(jié)能技術(shù)研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2009.
[4]Verma A,Koller R,Useche L,et al.SRCMap:Energy Proportional Storage Using Dynamic Consolida-tion[C]//Proceedings of FAST’10.San Jose,USA:USENIX Association,2010:148-155.
[5]廖 彬,于 炯,孫 華,等.基于存儲結(jié)構(gòu)重配置的分布式存儲系統(tǒng)節(jié)能算法[J].計算機(jī)研究與發(fā)展,2013,50(1):3-18.
[6]Weil S A,Brandt S A,Miller E L.Ceph:A Scalable,High-performance Distributed File System [C]//ProceedingsofOSDI’06.Seattle,USA:USENIX Association,2006:269-277.
[7]Thereska E,Donnelly A,Narayanan D.Sierra:Practical Power-proportionality for Data Center Storage[C]//Proceedings of EuroSys ’11.Salzburg,Austria:ACM Press,2012:153-161.
[8]Kaushik R T,BhandarkarM.Greenhdfs:Towardsan Energy-conserving, Storage-efficient, Hybrid Hadoop Compute Cluster[C]//Proceedings of USENIX Annual Technical Conference.Boston,USA:USENIX Association,2010:159-167.
[9]Bisson T,Wu J,Brandt S A.A Distributed Spin-down Algorithm for an Object-based Storage Device with Write Redirection[C]//Proceedings of the 7th Work-shop on Distributed Data and Structures.Santa Clara,USA:ACM Press,2006:459-468.
[10]Weil S A,Brandt S A,Miller E L,et al.CRUSH:Controlled, Scalable, Decentralized Placement of Replicated Data[C]//Proceedings of 2006 ACM/IEEE Conference on Supercomputing.Tampa,USA:ACM Press,2006:367-378.
[11]Wake-on-Lan[EB/OL].(2013-10-10).http://en.wiki pedia.org/wiki/Wake_on_lan.
[12]Fio[EB/OL].(2013-10-10).http://freecode.com/pro jects/fio.