◆俞 俊 錢 琳 龐恒茂 卜 敏
基于PCI-E SSD的分布式文件系統優化技術研究
◆俞 俊 錢 琳 龐恒茂 卜 敏
(南京南瑞集團公司信息系統集成分公司 江蘇 211100)
隨著大數據時代的到來,企業和用戶對存儲領域的需求呈現爆炸式增長,據總量指數級增長,業務呈現日益復雜的趨勢,當前數據已經成為企業的核心資源,因此對數據存儲的安全性和可靠性,性能也提出了更高要求。本文提出了基于PCI-E SSD在分布式文件系統的數據分層和熱點管理與替換技術,不僅可以提升存取速度、降低耗電量、同時具有較高的數據安全性,并有效地降低了訪問延遲,使其能夠適用于結構化數據(如數據庫)、非結構化數據頻繁并發讀寫的環境中。
PCI-E SSD;分布式安全;分布式文件系統
基于電力系統業務建立高傳輸帶寬、低延遲的系統環境的需求,固態存儲盤(SSD)在分布式文件系統中的應用實際上屬于自動分層存儲技術一部分,由于PCI-E SSD的物理特性,其更安全的存儲方式、更高效的存取性能使其成為了許多學者研究的熱點。文獻[1]提出了一個基于PCI-E與RAID5的存儲方式,改進了中規模存儲的性能。文獻[2,3]對于PCIE-SSD的協議棧與多隊列多中斷技術進行了研究,提出了一個原型系統,提升了總體性能。文獻[4]提出了一個基于SSD+HDD的異構元數據存儲系統Hybrid MDSL,針對SSD特性設計了提高空間利用率的方案。文獻[5]提出了基于SSD與HDD的分級存儲方案FMCFS,實現了對固態與磁盤空間的高效管理。文獻[6]對于存儲中的重復索引安全提出了一種解決方案LiveStor,降低了系統整體能耗,并提升了安全性,基于文獻[6],文獻[7,8]對于分布式存儲的安全提出了密鑰分發與管理、用戶與存儲節點身份認證機制等方案,提升了分布式存儲的安全性。本文通過結合PCIE-SSD與分布式文件系統技術,提出了緩存技術的熱點算法、數據塊優化以及基于SSD的數據分層存儲技術,提升了分布式系統的總體性能。
在 Memcached 內存對象緩存系統基礎上進行實現,通過修改 Memcached 系統中原有的 LRU 算法,將其改為提出的基于存取代價的緩存替換算法。Memcached是一個高性能的分布式內存對象緩存系統,用于在動態 Web 系統中減輕數據庫負載。它通過在內存中緩存數據來減少讀取數據庫的次數,從而提升Web 系統的速度。
Memcached 基于一個存儲鍵值對的 Hashmap,其守護進程(daemon)是用 C 寫的,但是客戶端可以用任何語言來編寫,并通過 Memcached 協議與守護進程通信。現在很多的大型 Web應用系統包括 Facebook、Youtube、Twitter、Wikipedia、Yahoo、WordPress、Digg 等都在使用 Memcached 來支持他們每天數億級的頁面訪問。通過把 cache 層與他們的 Web 架構集成,他們的應用程序在提高了性能的同時,還大大降低了數據庫的負載。
分布式文件系統等文件系統的數據是分塊進行存儲的。分塊存儲有以下優點。首先,如果一個文件超過了本地文件系統支持的單個文件的大小上限,也能夠在本系統中存儲;如果一個文件的大小接近或了一個Master節點的磁盤空間,我們可以把他們分布至不同的Master節點上。這樣會使整個系統的負載更加均衡,而不會出現某個Master的磁盤用盡,而其他Master節點還沒使用的情況。其次,分塊存儲可以簡化系統的復雜性,由于塊的大小是固定的,因此系統可以很容易的計算出每個Master可以存儲的數據塊數a。最后,分塊存儲有利于冗余機制的實現。
3.1 數據自動分層
自動分層的基本原理是,數據在創建后隨著時間推移價值會逐步降低。數據主要在其創建后的72小時內被訪問。在此之后訪問量會驟然減少,訪問頻率越來越低,30天以后數據只會被偶爾訪問。在這時,數據就成了“被動數據”或“冷數據”。
隨著數據價值的降低,數據應當遷移到低速、低成本的存儲層上。如果要手動這樣做的話,這種重復操作顯然非常乏味,難以滿足所需工作量。換句話說,沒有人會這么做。自動分層技術會基于諸如數據創建時間、訪問頻率、最后訪問時間或響應時間之類的策略進行數據遷移。

圖1 數據分層存儲
3.2 熱區管理與替換
根據熱區的定義,一段時間內,熱區的訪問次數要高于冷區的訪問次數。我們可以簡單地把熱度值定義為某個區塊內的數據塊被外部訪問的頻度。但這種算法會出現兩個問題:一是時間維度的熱區無法識別;二是對熱區的查詢速度慢。于是,我們對熱點管理替換算法進行了優化。
當某個item首次插入或者再次命中時,首先獲得該item所在slab 的 LRU 鏈頭尾指針,通過這兩個指針可以快速對 LRU鏈進行操作。
如果原來LRU鏈已經存在至少一個元素,則將原來頭節點的prev 指針指向現在的新頭節點。然后將 LRU 的頭指針指向現在新的item。如果尾指針為空的話將尾指針指向該item,最后將該slab的item個數加1。
根據基于存取代價的緩存替換算法內容的研究,將其實現在Memcached緩存系統中,替換Memcached 原有的 LRU 緩存替換算法。如果該節點已經在緩存中,當前被命中的話,就根據 P值計算公式計算出其P值。然后就從鏈表頭開始對逐個節點計算P 值,直到找到該 item 的P 值比該節點P 值大的節點,然后將item插入到該節點前面即可。如果搜索完整個鏈表仍然找不到這樣的節點的話,就把該item 作為鏈表尾節點。
如果沒有得到該文件的熱度信息,或者它不是hot文件,我們只存儲三個備份,此時不用分塊。而當上傳的文件大小大于最大的分塊因子sn時,我們必須做分塊處理,至于具體的分塊大小,我們需要調用配置中的分塊函數。
而當上傳的文件大小在分塊因子s0和sn之間時,情況就較為復雜,我們首先需要判斷分塊是不是必要,對系統性能有增強還是減弱,如果有必要分塊,則調用模塊2進行分塊,否則直接分配其一個block-id,然后進行副本的存儲。
隨著訪問量增加,熱度值可能溢出(尤其是上層節點),節點內所有熱度值右移1 位不會改變本節點內的熱度排序,所以不需要修改同層不同節點和不同層節點。當節點訪問計數大于一定閾值時節點內所有區的熱值右移1 位可以隔離歷史訪問信息熱值右移1 位相當于使這一個時刻之前的熱度值的權重降為1 /2,使近期的訪問量在熱度值中占有更高的權重。當一個區內的數據塊長時間沒有訪問時,其熱度值將不斷變小直至變為0,成為冷區。
3.3 MTE替換方法
當需要調入數據塊且SSD 的讀寫緩存已滿時,就使用最小熱度選取(Minimum Thermal Eclectic,MTE)方案從已有數據塊中選擇替換塊。被替換數據塊的選取原則是從SSD 中熱度值最低的冷區中選取,當被選中的冷區包含多個數據塊時,則依據LRU 算法選取。冷區的查找是從根節點開始的,首先找到本層熱度值最低且在SSD 中有數據塊的區節點,然后依次向下一層查找,最后檢索到的葉子節點所指向的區就是要查找的冷區。SSD 緩存的數據塊的調入由后臺模塊定期或空閑時完成。

圖2 MTE替換方法
此外,根據多任務的I /O 工作流具有順序訪問和區域集中的特性,可以采取預取策略增加命中率。可以采用兩種預取策略:一是定期掃描熱區的信息,選擇熱度值高的區,調入這些區的未調入的數據塊;二是在數據塊調入時,查看該區的熱度值是否達到一定門限,如果是,則試圖調入該數據塊之后的幾個數據塊;如果不是,則采用MTE預取策略。
4.1 實驗環境
實驗使用6臺服務器組成分布式集群,每個服務器操作系統為Red Hat Linux Enterprise 6.5,內存12GB,硬盤為3TBHDD與1.6TB PCI-E SSD,實驗室采用普通千兆網絡與交換機。
4.2 實驗方案
實驗在5臺服務器上部署分布式集群,同時客戶機上部署測試工具,使用iozone與fio進行性能測試與壓力測試,根據社交網絡與公司業務數據,模擬熱數據訪問情景。測試方案包括批量小文件順序與隨機讀寫性能,單個大文件順序與隨機讀寫性能,測試文件總量為5*3TB=15TB,實驗使用配置文件控制系統是否使用數據分層與熱點管理技術,并作出對比測試。
4.3 實驗結果與分析
實驗于5臺服務器與一臺客戶機組成的分布式集群上進行,測試結果如表1所示。

表1 PCI-E SSD分布式系統測試
可以看出,使用PCI-E SSD的改進算法對于分布式系統性能具有飛躍性的提升。盡管原系統也配置了同樣大小的PCI-E SSD,但使用了改進算法后,系統總體性能無論是在單客戶端,還是在整個文件系統的吞吐量上,都有了近30%的性能提升。故實驗表明MTE替換算法與數據自動分層對于單機吞吐量與總體性能都有巨大提升。
本研究基于PCI-E SSD在分布式文件的應用,實現了合理的利用熱點算法找出系統中的熱點數據可以大幅的提高緩存數據的命中率,使得分布式文件系統的讀寫性能產生巨大的提升。同時,降低存儲系統節點的磁盤負載,提高緩存空間的利用率,對于優化整個分布式文件系統的性能也具有重要意義。研究通過使用數據分層存儲技術,用讀寫速度極快的PCI-E SSD的緩存系統存儲常用的熱點數據,使用普通SSD存儲較為常用的數據,使用傳統的硬盤存儲很少使用的歷史數據,建立讀寫性能高效的層次化分布式文件系統。系統將為電網業務提供更可靠的存儲和維護能力,并且具備良好的可伸縮性和靈活性,為應對企業的數據快速增長帶來的業務壓力給出了更好的解決方案。
[1]張元凱,蔡惠智,劉垚,王維.基于PCIe和RAID5的高速存儲系統設計[J].微計算機信息,2010.
[2]潤冬,劉芳,肖儂等.PCIe SSD I/O棧設計與原型系統研究[J].計算機研究與發展,2015.
[3]李云.面向高性能應用的PCIE SSD的驅動研究與實現[D].國防科學技術大學,2012.
[4]陳卓,熊勁,馬燦.基于SSD的機群文件系統元數據存儲系統[J].計算機研究與發展,2012.
[5]梁學森.基于SSD和HDD的分級文件系統的設計與實現[D].北京郵電大學,2014.
[6]杜敏,鄭釗,關少華等.面向分布式存儲的安全云存儲系統研究[J].北京電子科技學院學報,2013.
[7]張硯波,劉正偉,文中領等.一種高效存儲解決方案的分析與研究[C]// 全國信息存儲技術大會,2011.
[8]楊祥清.存儲系統數據去重策略研究[J].信息通信,2014.
本研究由2015年國家電網科技項目資助,WBS號:524606150008。