沈良好,吳慶波,楊沙洲
(國防科學技術大學計算機學院,長沙410073)
能耗管理是數據中心面臨的重要挑戰。一方面,隨著基礎架構規模的擴大,數據中心需要為日益劇增的能源消耗買單,在數據中心總體總擁有成本(Total Cost of Ownership,TCO)中,用于能源的費用已經成為重要的組成部分。另一方面,隨著數量的增加與規模的擴大,數據中心所消耗的能源,在整個社會能源消耗中所占的比重也越來越大,據統計,全球數據中心在2010年對電能的消耗超過了2×1011千瓦時,約占全球總用電量的1.3%,且呈逐年上升的趨勢在數據中心的組件中,存儲系統是能源消耗主要來源之一,僅次于計算資源,約占30%。因此,降低存儲系統的能耗是達到數據中心節能目的的重要手段。近年來,存儲系統節能技術受到了廣泛關注,從單個磁盤到磁盤陣列,再到分布式存儲,均出現了大量的研究工作[2-5]。
分布式存儲是目前大部分數據中心所采用的存儲形式。作為近年熱門的分布式存儲,Ceph[6]因具備了高擴展性、高性能、高可靠性的特點,而備受關注。因此,本文基于開源項目Ceph,進行分布式存儲系統節能技術的研究。本文的工作主要有:以節能為目的的Ceph數據布局優化;多級功耗管理策略;功耗管理框架的設計與實現。該框架結合了上述數據布局優化方法、多級功耗管理策略以及硬件的節能功能,實現了Ceph分布式存儲的動態功耗管理。
分布式存儲系統的節能技術近年來受到了廣泛的關注,是存儲領域熱門的研究方向之一。
微軟劍橋研究院的Thereska E等人設計并開發了Sierra[7]分布式存儲系統,該系統使用了能耗感知的數據布局和基于負載預測的節點狀態管理,在系統低負載時,關閉部分節點,從而增加系統的能源利用率。為保證系統的容錯能力以及數據的一致性,Sierra使用了分布式虛擬日志(DVL)技術。經過測試,該系統在作為Hotmail和Windows Messenger服務的后端存儲時能夠節省23%以上的能耗,且性能的損失相當微小。
UIUC的Kaushik R等人基于標準的HDFS提出了其節能的衍生版GreenHDFS[8]。在GreenHDFS中,數據節點最初被劃分為熱區和冷區,處于熱區的數據(約70%)有著更高的訪問頻率,所以為保證性能,熱區的節點是一直處于活躍狀態的;而冷區的數據(約30%)使用率非常低,所以冷區的節點將會進入省電模式。一個自適應的劃分策略用來動態地指定節點所屬的區,并使得冷區節點能夠達到一定的數量,進而增加整個集群節能的程度:在Yahoo的一個真實負載環境中,GreenHDFS在3個月的測試時間內,節省了26%的能耗。
此外,針對Ceph分布式存儲的節能技術也受到了關注,文獻[9]提出了一種Ceph OSD(對象存儲設備)的自適應的磁盤降速算法。該算法針對單個OSD,在其低負載時降低所對應的磁盤速度,進入節能狀態。他們的工作針對的只是部分OSD上磁盤的節能,所以對整個系統能耗的影響十分有限。
分布式存儲中的數據放置算法及其產生的數據布局是影響系統可靠性、擴展性的重要因素之一。Ceph存儲系統基于CRUSH算法的數據布局是其具備可靠性、高性能、高擴展性的基礎,但同時也限制了系統節能的能力。
作為Ceph存儲的關鍵技術之一,CRUSH算法由Weil S A于2006年提出[10]。CRUSH基于偽隨機的哈希算法產生確定的均勻的數據分布。CRUSH有多個輸入,包含了對象id,Crushmap和放置規則。其中,對象id一般用于區別需要存放的數據對象,實際運行時對象會被映射到不同的放置組(PG),所以作為輸入id的實際是PG的id。Crushmap描述了數據節點的層級關系,用樹形結構表示,包含bucket和device類型的節點,其中bucket節點可以包含其他類型的bucket和device節點,通常用于描述故障域(failure domain),如主機、機架、機柜等,把副本分布于不同故障域,是Ceph保證數據可靠性的重要措施;而device節點只能作為葉子節點,表示對象存儲設備(OSD)。放置規則用于指定副本放置的策略,包含了take,select,emti等語句,其中select可以指定副本個數和副本放置的故障域。在一個包含4臺主機的集群中,副本分布策略為:select(2,host),即數據的2個副本放置于不同的主機上,則通過CRUSH算法產生的數據布局如圖1所示。

圖1 Crush算法數據布局
很多應用場景中都存在低負載時期,此時,為了節省系統的能耗,可以關閉部分數據節點。出于以下考慮,關閉節點時應保證數據全集是可用的(即任意的數據對象至少有一個以上副本是未被關閉的):一方面,如果發生不可用數據的訪問,則會產生非常大的訪問延遲;另一方面,頻繁開啟相應的節點會產生不可忽視的額外能耗。在Ceph存儲系統中,數據節點數為N,被劃分為n個故障域fd,副本分布策略為select(r,fd),則在系統低負載系統時期最多可以關閉的故障域的個數為n'<r,因為任何大于或者等于r個故障域的組合中,必然包含了某些數據的所有副本。如圖1中,可以關閉的主機個數為1臺,當關閉2臺以上主機時,A個~F個數據塊必然有一個無法訪問。隨著集群規模的增加,最多只能關閉r-1個故障域的節點,可以達到最大節能比例為(r-1)/n,當集群規模較大時,節能的效果微乎其微。
結合CRUSH的特性,在Crushmap中引入了功耗組(PowerGroup)的bucket,用于對故障域集合進行再次劃分,即數據副本在放置于不同故障域前,將首先被分布于不同的功耗組。同一個功耗組的節點處于相同的能耗狀態,功耗組的個數等于副本個數r。優化算法的描述如下:

以圖1中場景為例,則經過優化的數據布局如圖2所示。

圖2 優化后的數據布局
此時,可以關閉的節點為2個,且所有數據仍然可用。經過優化的數據布局中,數據的副本分別位于r個不同的功耗組中,在保證數據集可用的情況下,則最多可以關閉r-1個功耗組的節點,系統能夠達到的節能比例為r-1/r,當集群規模較大時,節省的能耗是非常可觀的。同時,由于很好地實現了副本的分布,可以關閉的功耗組個數可以是1~r-1的任何一個,從而為系統的多級功耗管理提供了基礎。
基于對數據副本分布的優化,使得系統中活躍的功耗組個數可以根據系統I/O負載的情況按需調整,讓系統處于不同的功耗級別,從而實現系統的多級功耗管理,減少能耗。
在Ceph中,系統的主要能耗來自于OSD節點。在一個包含n個OSD節點的Ceph集群中,副本個數設置為r,經過數據布局優化后,節點被劃分至r個功耗組,若單個OSD節點的功耗為p,則單個功耗組的功耗為:

系統中活躍(未關閉或休眠)的功耗組個數為ractive,則系統功耗為:

其中,ractive的取值可以為1~r,即系統可以處于P1,P2,…,Pr不同的功耗級別。在一段時間T內,系統所消耗的能耗為:

其中,ti是系統處于相應功耗級別的時間;Et是系統用于級別切換所消耗的能耗之和。
功耗級別管理的主要任務是根據I/O負載狀態動態調整功耗級別,在保證服務質量的同時,盡量減少功耗。I/O負載狀態可以通過統計分析或者預測的方式確定,本文采用的是前者,即收集并統計系統在一定時間內的I/O數據如I/O次數、I/O數據量等,并以此確定系統的I/O負載狀態。為描述不同場景下的I/O負載狀態,需要對隨機I/O和順序I/O都進行收集與統計,因此,在可配置的時間窗口W內,對系統的I/O狀態數據可統計為:

其中,IOrtotal為W時間內發生的隨機I/O的次數;IOstotal為W時間內順序I/O請求的數據量。兩者分別與預先測得的系統峰值I/O能力對比,得出系統I/O狀態的量化描述,即I/O負載率L:

其中,L被用于與當前功耗率Pl=ractive/r比較,確定系統下一階段所處的功耗級別:當系統的I/O負載率高于能耗率時,活躍的功耗組已經不能滿足I/O負載的要求,需要更多的功耗組提供服務;當系統的I/O負載率低于能耗率時,則系統中有部分功耗組可以被關閉,以達到節能的目的。功耗級別確定的偽代碼為:


輸出的ractive'將作為下一個W時間段內的系統所處的功耗級別,此時需要關閉/開啟的功耗組的個數為|ractive'-ractive|。為保證系統的高可用性,可以設置允許的最少活躍的功耗組個數為2,即允許系統數據副本至少有2個是可用的。
基于第3節、第4節所述的優化方法,結合Ceph自身技術特點,本文設計并實現了一個能耗管理框架,并進行了實驗評估。
如圖3所示,該功耗管理框架由4個模塊組成,其中Layout Optimizer模塊實現針對CRUSH的數據布局的優化算法,并生成新的Crushmap和放置規則;I/O Tracer模塊用于跟蹤與統計系統的I/O數據,即以一定的頻率采集分析Ceph Log中的I/O相關信息記錄;Lever Shifter則是管理系統功耗級別的模塊,根據跟蹤統計到的I/O數據,分析當前系統的I/O負載狀態,基于所選擇的的策略確定是否需要切換功耗級別;Status Manager模塊負責功耗級別切換的執行,首先利用Ceph的OSD狀態管理工具設置OSD在Ceph集群中的狀態為noout,保證不會因主動停止OSD而發生數據遷移,接著通過遠程休眠/網絡喚醒(WOL[11])等技術控制OSD所在的服務器電源管理狀態,基于休眠/喚醒的方式比傳統的關閉/開啟服務器的方式更為節能,式(1)中用于級別切換的能耗對系統的總能耗的影響幾乎可以忽略不計,且響應時間更短。

圖3 系統架構
在一個有6個OSD節點的Ceph系統中進行了該功耗管理框架的實驗評估。Ceph版本為0.80.5,操作系統為Kylin3.2,每個節點上配置一個OSD,副本策略為select(3,host)。為模擬不同的負載場景,用fio[12]測試工具進行測試。
如圖4所示內容為連續8 h測試(級別切換的超時時間設置為10 min,通過thinktime參數使得系統約4 h處于低負載時期)中,系統分別處于各能耗級別的次數。

圖4 系統所處功耗級別的次數
在未使用節能框架時,系統運行8 h的能耗約為48×6×10 min×400 W,在開啟了節能框架(Ceph-PM)后,系統運行8 h的能耗約為(11×2+12×4+25×6)×10 min×400 W,系統達到的節能比例約為25%,如果系統規模增大,節省的能源開支將會非常可觀。但需要注意的是,在真實環境中,系統負載的變化可能更為頻繁、劇烈,所以需要更精確、復雜的負載級別切換策略,這也是本文未來的工作內容之一。
圖5、圖6描述的是系統在低功耗狀態下對隨機I/O和順序I/O的響應時間的影響,總體上,讀操作平均響應時間有略微變化,但不會太大地影響服務質量。

圖5 隨機I/O的平均響應時間

圖6 順序I/O的平均響應時間
而寫操作時,由于低功耗狀態下需要寫副本的次數變少,對于客戶端來說,響應時間反而更小一些,且對于順序寫影響更為明顯。
本文基于Ceph系統,研究分布式存儲技術,分析基于CRUSH算法的數據布局存在的不足,提出以節能為目的的優化算法和系統多級功耗管理策略,并實現了Ceph的多級功耗管理框架。實驗結果表明,該能耗管理框架能夠根據系統負載變化動態地調整系統功耗級別,有效地降低系統能耗。
[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]李海東.磁盤陣列節能技術研究與實現[D].武漢:華中科技大學,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]廖 彬,于 炯,孫 華,等.基于存儲結構重配置的分布式存儲系統節能算法[J].計算機研究與發展,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.