◆俞 俊 錢 琳 龐恒茂 卜 敏
基于PCI-E SSD的分布式文件系統(tǒng)優(yōu)化技術(shù)研究
◆俞 俊 錢 琳 龐恒茂 卜 敏
(南京南瑞集團(tuán)公司信息系統(tǒng)集成分公司 江蘇 211100)
隨著大數(shù)據(jù)時代的到來,企業(yè)和用戶對存儲領(lǐng)域的需求呈現(xiàn)爆炸式增長,據(jù)總量指數(shù)級增長,業(yè)務(wù)呈現(xiàn)日益復(fù)雜的趨勢,當(dāng)前數(shù)據(jù)已經(jīng)成為企業(yè)的核心資源,因此對數(shù)據(jù)存儲的安全性和可靠性,性能也提出了更高要求。本文提出了基于PCI-E SSD在分布式文件系統(tǒng)的數(shù)據(jù)分層和熱點(diǎn)管理與替換技術(shù),不僅可以提升存取速度、降低耗電量、同時具有較高的數(shù)據(jù)安全性,并有效地降低了訪問延遲,使其能夠適用于結(jié)構(gòu)化數(shù)據(jù)(如數(shù)據(jù)庫)、非結(jié)構(gòu)化數(shù)據(jù)頻繁并發(fā)讀寫的環(huán)境中。
PCI-E SSD;分布式安全;分布式文件系統(tǒng)
基于電力系統(tǒng)業(yè)務(wù)建立高傳輸帶寬、低延遲的系統(tǒng)環(huán)境的需求,固態(tài)存儲盤(SSD)在分布式文件系統(tǒng)中的應(yīng)用實(shí)際上屬于自動分層存儲技術(shù)一部分,由于PCI-E SSD的物理特性,其更安全的存儲方式、更高效的存取性能使其成為了許多學(xué)者研究的熱點(diǎn)。文獻(xiàn)[1]提出了一個基于PCI-E與RAID5的存儲方式,改進(jìn)了中規(guī)模存儲的性能。文獻(xiàn)[2,3]對于PCIE-SSD的協(xié)議棧與多隊(duì)列多中斷技術(shù)進(jìn)行了研究,提出了一個原型系統(tǒng),提升了總體性能。文獻(xiàn)[4]提出了一個基于SSD+HDD的異構(gòu)元數(shù)據(jù)存儲系統(tǒng)Hybrid MDSL,針對SSD特性設(shè)計(jì)了提高空間利用率的方案。文獻(xiàn)[5]提出了基于SSD與HDD的分級存儲方案FMCFS,實(shí)現(xiàn)了對固態(tài)與磁盤空間的高效管理。文獻(xiàn)[6]對于存儲中的重復(fù)索引安全提出了一種解決方案LiveStor,降低了系統(tǒng)整體能耗,并提升了安全性,基于文獻(xiàn)[6],文獻(xiàn)[7,8]對于分布式存儲的安全提出了密鑰分發(fā)與管理、用戶與存儲節(jié)點(diǎn)身份認(rèn)證機(jī)制等方案,提升了分布式存儲的安全性。本文通過結(jié)合PCIE-SSD與分布式文件系統(tǒng)技術(shù),提出了緩存技術(shù)的熱點(diǎn)算法、數(shù)據(jù)塊優(yōu)化以及基于SSD的數(shù)據(jù)分層存儲技術(shù),提升了分布式系統(tǒng)的總體性能。
在 Memcached 內(nèi)存對象緩存系統(tǒng)基礎(chǔ)上進(jìn)行實(shí)現(xiàn),通過修改 Memcached 系統(tǒng)中原有的 LRU 算法,將其改為提出的基于存取代價的緩存替換算法。Memcached是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),用于在動態(tài) Web 系統(tǒng)中減輕數(shù)據(jù)庫負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)來減少讀取數(shù)據(jù)庫的次數(shù),從而提升Web 系統(tǒng)的速度。
Memcached 基于一個存儲鍵值對的 Hashmap,其守護(hù)進(jìn)程(daemon)是用 C 寫的,但是客戶端可以用任何語言來編寫,并通過 Memcached 協(xié)議與守護(hù)進(jìn)程通信?,F(xiàn)在很多的大型 Web應(yīng)用系統(tǒng)包括 Facebook、Youtube、Twitter、Wikipedia、Yahoo、WordPress、Digg 等都在使用 Memcached 來支持他們每天數(shù)億級的頁面訪問。通過把 cache 層與他們的 Web 架構(gòu)集成,他們的應(yīng)用程序在提高了性能的同時,還大大降低了數(shù)據(jù)庫的負(fù)載。
分布式文件系統(tǒng)等文件系統(tǒng)的數(shù)據(jù)是分塊進(jìn)行存儲的。分塊存儲有以下優(yōu)點(diǎn)。首先,如果一個文件超過了本地文件系統(tǒng)支持的單個文件的大小上限,也能夠在本系統(tǒng)中存儲;如果一個文件的大小接近或了一個Master節(jié)點(diǎn)的磁盤空間,我們可以把他們分布至不同的Master節(jié)點(diǎn)上。這樣會使整個系統(tǒng)的負(fù)載更加均衡,而不會出現(xiàn)某個Master的磁盤用盡,而其他Master節(jié)點(diǎn)還沒使用的情況。其次,分塊存儲可以簡化系統(tǒng)的復(fù)雜性,由于塊的大小是固定的,因此系統(tǒng)可以很容易的計(jì)算出每個Master可以存儲的數(shù)據(jù)塊數(shù)a。最后,分塊存儲有利于冗余機(jī)制的實(shí)現(xiàn)。
3.1 數(shù)據(jù)自動分層
自動分層的基本原理是,數(shù)據(jù)在創(chuàng)建后隨著時間推移價值會逐步降低。數(shù)據(jù)主要在其創(chuàng)建后的72小時內(nèi)被訪問。在此之后訪問量會驟然減少,訪問頻率越來越低,30天以后數(shù)據(jù)只會被偶爾訪問。在這時,數(shù)據(jù)就成了“被動數(shù)據(jù)”或“冷數(shù)據(jù)”。
隨著數(shù)據(jù)價值的降低,數(shù)據(jù)應(yīng)當(dāng)遷移到低速、低成本的存儲層上。如果要手動這樣做的話,這種重復(fù)操作顯然非常乏味,難以滿足所需工作量。換句話說,沒有人會這么做。自動分層技術(shù)會基于諸如數(shù)據(jù)創(chuàng)建時間、訪問頻率、最后訪問時間或響應(yīng)時間之類的策略進(jìn)行數(shù)據(jù)遷移。
圖1 數(shù)據(jù)分層存儲
3.2 熱區(qū)管理與替換
根據(jù)熱區(qū)的定義,一段時間內(nèi),熱區(qū)的訪問次數(shù)要高于冷區(qū)的訪問次數(shù)。我們可以簡單地把熱度值定義為某個區(qū)塊內(nèi)的數(shù)據(jù)塊被外部訪問的頻度。但這種算法會出現(xiàn)兩個問題:一是時間維度的熱區(qū)無法識別;二是對熱區(qū)的查詢速度慢。于是,我們對熱點(diǎn)管理替換算法進(jìn)行了優(yōu)化。
當(dāng)某個item首次插入或者再次命中時,首先獲得該item所在slab 的 LRU 鏈頭尾指針,通過這兩個指針可以快速對 LRU鏈進(jìn)行操作。
如果原來LRU鏈已經(jīng)存在至少一個元素,則將原來頭節(jié)點(diǎn)的prev 指針指向現(xiàn)在的新頭節(jié)點(diǎn)。然后將 LRU 的頭指針指向現(xiàn)在新的item。如果尾指針為空的話將尾指針指向該item,最后將該slab的item個數(shù)加1。
根據(jù)基于存取代價的緩存替換算法內(nèi)容的研究,將其實(shí)現(xiàn)在Memcached緩存系統(tǒng)中,替換Memcached 原有的 LRU 緩存替換算法。如果該節(jié)點(diǎn)已經(jīng)在緩存中,當(dāng)前被命中的話,就根據(jù) P值計(jì)算公式計(jì)算出其P值。然后就從鏈表頭開始對逐個節(jié)點(diǎn)計(jì)算P 值,直到找到該 item 的P 值比該節(jié)點(diǎn)P 值大的節(jié)點(diǎn),然后將item插入到該節(jié)點(diǎn)前面即可。如果搜索完整個鏈表仍然找不到這樣的節(jié)點(diǎn)的話,就把該item 作為鏈表尾節(jié)點(diǎn)。
如果沒有得到該文件的熱度信息,或者它不是hot文件,我們只存儲三個備份,此時不用分塊。而當(dāng)上傳的文件大小大于最大的分塊因子sn時,我們必須做分塊處理,至于具體的分塊大小,我們需要調(diào)用配置中的分塊函數(shù)。
而當(dāng)上傳的文件大小在分塊因子s0和sn之間時,情況就較為復(fù)雜,我們首先需要判斷分塊是不是必要,對系統(tǒng)性能有增強(qiáng)還是減弱,如果有必要分塊,則調(diào)用模塊2進(jìn)行分塊,否則直接分配其一個block-id,然后進(jìn)行副本的存儲。
隨著訪問量增加,熱度值可能溢出(尤其是上層節(jié)點(diǎn)),節(jié)點(diǎn)內(nèi)所有熱度值右移1 位不會改變本節(jié)點(diǎn)內(nèi)的熱度排序,所以不需要修改同層不同節(jié)點(diǎn)和不同層節(jié)點(diǎn)。當(dāng)節(jié)點(diǎn)訪問計(jì)數(shù)大于一定閾值時節(jié)點(diǎn)內(nèi)所有區(qū)的熱值右移1 位可以隔離歷史訪問信息熱值右移1 位相當(dāng)于使這一個時刻之前的熱度值的權(quán)重降為1 /2,使近期的訪問量在熱度值中占有更高的權(quán)重。當(dāng)一個區(qū)內(nèi)的數(shù)據(jù)塊長時間沒有訪問時,其熱度值將不斷變小直至變?yōu)?,成為冷區(qū)。
3.3 MTE替換方法
當(dāng)需要調(diào)入數(shù)據(jù)塊且SSD 的讀寫緩存已滿時,就使用最小熱度選取(Minimum Thermal Eclectic,MTE)方案從已有數(shù)據(jù)塊中選擇替換塊。被替換數(shù)據(jù)塊的選取原則是從SSD 中熱度值最低的冷區(qū)中選取,當(dāng)被選中的冷區(qū)包含多個數(shù)據(jù)塊時,則依據(jù)LRU 算法選取。冷區(qū)的查找是從根節(jié)點(diǎn)開始的,首先找到本層熱度值最低且在SSD 中有數(shù)據(jù)塊的區(qū)節(jié)點(diǎn),然后依次向下一層查找,最后檢索到的葉子節(jié)點(diǎn)所指向的區(qū)就是要查找的冷區(qū)。SSD 緩存的數(shù)據(jù)塊的調(diào)入由后臺模塊定期或空閑時完成。
圖2 MTE替換方法
此外,根據(jù)多任務(wù)的I /O 工作流具有順序訪問和區(qū)域集中的特性,可以采取預(yù)取策略增加命中率??梢圆捎脙煞N預(yù)取策略:一是定期掃描熱區(qū)的信息,選擇熱度值高的區(qū),調(diào)入這些區(qū)的未調(diào)入的數(shù)據(jù)塊;二是在數(shù)據(jù)塊調(diào)入時,查看該區(qū)的熱度值是否達(dá)到一定門限,如果是,則試圖調(diào)入該數(shù)據(jù)塊之后的幾個數(shù)據(jù)塊;如果不是,則采用MTE預(yù)取策略。
4.1 實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)使用6臺服務(wù)器組成分布式集群,每個服務(wù)器操作系統(tǒng)為Red Hat Linux Enterprise 6.5,內(nèi)存12GB,硬盤為3TBHDD與1.6TB PCI-E SSD,實(shí)驗(yàn)室采用普通千兆網(wǎng)絡(luò)與交換機(jī)。
4.2 實(shí)驗(yàn)方案
實(shí)驗(yàn)在5臺服務(wù)器上部署分布式集群,同時客戶機(jī)上部署測試工具,使用iozone與fio進(jìn)行性能測試與壓力測試,根據(jù)社交網(wǎng)絡(luò)與公司業(yè)務(wù)數(shù)據(jù),模擬熱數(shù)據(jù)訪問情景。測試方案包括批量小文件順序與隨機(jī)讀寫性能,單個大文件順序與隨機(jī)讀寫性能,測試文件總量為5*3TB=15TB,實(shí)驗(yàn)使用配置文件控制系統(tǒng)是否使用數(shù)據(jù)分層與熱點(diǎn)管理技術(shù),并作出對比測試。
4.3 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)于5臺服務(wù)器與一臺客戶機(jī)組成的分布式集群上進(jìn)行,測試結(jié)果如表1所示。
表1 PCI-E SSD分布式系統(tǒng)測試
可以看出,使用PCI-E SSD的改進(jìn)算法對于分布式系統(tǒng)性能具有飛躍性的提升。盡管原系統(tǒng)也配置了同樣大小的PCI-E SSD,但使用了改進(jìn)算法后,系統(tǒng)總體性能無論是在單客戶端,還是在整個文件系統(tǒng)的吞吐量上,都有了近30%的性能提升。故實(shí)驗(yàn)表明MTE替換算法與數(shù)據(jù)自動分層對于單機(jī)吞吐量與總體性能都有巨大提升。
本研究基于PCI-E SSD在分布式文件的應(yīng)用,實(shí)現(xiàn)了合理的利用熱點(diǎn)算法找出系統(tǒng)中的熱點(diǎn)數(shù)據(jù)可以大幅的提高緩存數(shù)據(jù)的命中率,使得分布式文件系統(tǒng)的讀寫性能產(chǎn)生巨大的提升。同時,降低存儲系統(tǒng)節(jié)點(diǎn)的磁盤負(fù)載,提高緩存空間的利用率,對于優(yōu)化整個分布式文件系統(tǒng)的性能也具有重要意義。研究通過使用數(shù)據(jù)分層存儲技術(shù),用讀寫速度極快的PCI-E SSD的緩存系統(tǒng)存儲常用的熱點(diǎn)數(shù)據(jù),使用普通SSD存儲較為常用的數(shù)據(jù),使用傳統(tǒng)的硬盤存儲很少使用的歷史數(shù)據(jù),建立讀寫性能高效的層次化分布式文件系統(tǒng)。系統(tǒng)將為電網(wǎng)業(yè)務(wù)提供更可靠的存儲和維護(hù)能力,并且具備良好的可伸縮性和靈活性,為應(yīng)對企業(yè)的數(shù)據(jù)快速增長帶來的業(yè)務(wù)壓力給出了更好的解決方案。
[1]張?jiān)獎P,蔡惠智,劉垚,王維.基于PCIe和RAID5的高速存儲系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2010.
[2]潤冬,劉芳,肖儂等.PCIe SSD I/O棧設(shè)計(jì)與原型系統(tǒng)研究[J].計(jì)算機(jī)研究與發(fā)展,2015.
[3]李云.面向高性能應(yīng)用的PCIE SSD的驅(qū)動研究與實(shí)現(xiàn)[D].國防科學(xué)技術(shù)大學(xué),2012.
[4]陳卓,熊勁,馬燦.基于SSD的機(jī)群文件系統(tǒng)元數(shù)據(jù)存儲系統(tǒng)[J].計(jì)算機(jī)研究與發(fā)展,2012.
[5]梁學(xué)森.基于SSD和HDD的分級文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2014.
[6]杜敏,鄭釗,關(guān)少華等.面向分布式存儲的安全云存儲系統(tǒng)研究[J].北京電子科技學(xué)院學(xué)報(bào),2013.
[7]張硯波,劉正偉,文中領(lǐng)等.一種高效存儲解決方案的分析與研究[C]// 全國信息存儲技術(shù)大會,2011.
[8]楊祥清.存儲系統(tǒng)數(shù)據(jù)去重策略研究[J].信息通信,2014.
本研究由2015年國家電網(wǎng)科技項(xiàng)目資助,WBS號:524606150008。