中國數據存儲服務平臺

UT Arlington教授江泓:支撐大數據的閃存系統面臨的挑戰和技術創新

8月22日-23日,2019全球閃存峰會(Flash Memory World)在杭州國際博覽中心正式召開,盛邀眾多存儲行業技術專家與知名企業代表等發表主題演講,以便更快更好地推動閃存及芯片市場發展,增進產業上下游交流與互動。

美國德克薩斯大學阿靈頓分校教授,IEEE Fellow, 同時也是阿里巴巴達摩院的項目專家,江泓(Hong Jiang)受邀出席了智能存儲與存儲新架構學術論壇,并發表《支撐大數據的閃存系統》的主題演講。

以下內容根據現場速記整理。

今天和大家分享一下我們在探索支撐大數據的閃存存儲系統研究方面的一些經驗和結果。

談到大數據,這張圖片比較能說明問題,這是經濟學人刊物兩年以前的一個封面。主要意思是如果上世紀全球最有價值的資源是原油,本世紀最有價值的資源就應該是數據。

對比看一下,20年以前,前10名企業絕大部分都是與石油相關的一些企業。2019年,Top5,Top10絕大部分都是和數據相關,如谷歌等等。但數據和原油不同。數據有一些是過去產生,更多是正在產生或者尚未產生。在這方面其對我們提出了很多挑戰。

我們先回顧一下大數據的主要挑戰和特征。它的Volume(容量)很大,數據分析速度(Velocity)要高,還有一個特點是多樣性(Variety)。當對這三個V進行了很好處理以后,真正價值的才能充分體現,這就是第四個V(Value)。前三個V為存儲界提出了重大挑戰。因此我們現在需要更新,更快,更有效,而且更智能的存儲系統。

大數據的整個生態環境,生命周期,是從數據產生,收集,清洗,到存儲,管理,最后是分析以及應用。在此過程當中,存儲起到一個從原始數據到數據真正發揮作用兩個環節里一個承上啟下的作用,一個至關重要的環節。

要真正對大數據有效率的支持需要什么呢?我們的存儲容量,性能還有性價比。它對傳統基于硬盤容量的存儲系統提出了前所未有的挑戰,比如說現在在整個市場氛圍,基于容量的存儲系統里,以閃存為支撐的,現在基本上和硬盤已經是平分秋色。預計在過去幾年可能會逐步取代硬盤,至少按照這個預測,到2026年可能96%的Capacity將以閃存為主。閃存之所以給硬盤提出這么大的挑戰,主要是存儲密度在提高。

隨著密度提高,存儲空間增加非常迅猛。與此同時,這是一個雙刃劍,讀寫的性能不斷降低,讀寫之間的非對稱性更大。如何能夠真正將閃存用在支撐大數據,必須要解決相關一些問題。

今天我想講的主要關注這兩個問題還有其他的一些挑戰。一個就是,閃存性能較難預測,今天我講的是讀寫的干擾,由于讀寫問題,讀取的延遲是寫入的十分之一不到,如果讀寫混在一起,那么寫入速度如果是正在進行,我后面讀取速度就會堵住。而我們知道對大數據分析來講,讀取性能非常重要,因此這是一個很重要的問題。

還有一個問題就是閃存速度,單位GB價格還是比硬盤高出很多,如何能充分把性價比進一步提升?這就需要空間利用率的進一步提高,還有就是壽命的提升。

這個我們想借用重刪技術提高寫入性能和容量,同時也減少擦除次數。接下來我們主要是圍繞最近做的幾項工作——解決讀寫干擾以及如何在閃存里有效進行重刪問題。

為什么會讀寫干擾?SLC是一個存儲單元一位,MLC就是兩位,那么有四種不同的方式,依此類推,TLC是三位,有八種不同的狀態,導致讀寫過程中需要判斷讀寫時間與量級等各種因素。

這個問題會越來越嚴重。我們對一些公開的問題進行了分析,然后發現的確在這幾個大家經常用到的開源工具里面,平均33%的讀請求被寫請求給堵住了,最高達到56%。這樣一來對讀性能的降低是非常可觀的,平均是42.8%,最高可以到75%。目前這個問題現在有一些解決方案,同時也有它們的問題。

比如P/E分析,這項工作實際上是華中科技大學何老師團隊做的。在寫過程中如果遇到讀取,就把寫工作暫停,不過雖然可以改善讀的性能,但會影響寫性能。

另一個方法(Rails)是把讀和寫分開,寫的數據復制以后,將它分開處理,這個方法顯然對空間容量開銷很大。還有一種辦法(TTFlash)是采取計算的方式避開寫入,把讀的幾個順序合起來,通過計算來恢復讀的內容,實際上就是增加內部讀取請求,一個讀變成多個讀,但會加劇讀寫互相的干擾。

我們的方法是什么呢?HotR,我們發現讀寫在閃存頁(page)上是兩級分化的。絕大部分讀和寫請求都分別有讀取和寫入密集型頁面,我們把這些頁分類。因為讀取至關重要,我們就臨時代用一個空間,這個空間可以在現有的閃存盤里。我就把熱度高的讀頁面,暫時移動到這個System Overview上,這就避開了讀寫沖突。結果簡單有效,我們進行了比較,平均提高非常明顯。

關鍵是從開銷和延時的層級來評估其性價比。因為不同解決方案要么對空間有要求,要么對硬件有額外要求,這樣以后得出的結論應該比較公平,平均響應時間縮短54.0%,是最具性價比的。

接下來是重刪問題,上午大家聽了主題報告,戴爾的畢總已經提到,重刪已經標準化,在很多場景里落地了。現在做是因為沒有辦法了,未來全球產生的必須存儲的數據對比全球所有的存儲空間加起來還是有大概一倍甚至兩倍差。

唯一的辦法就是數據壓縮。現在大家證明有效的就是已經標準化的重刪。

產品里面的重刪是這樣的,寫入以后,我首先進行inline dedup(內聯重刪)。剩下就是我在寫的時候,不能及時dedup,還是寫進去,但在空閑的時候再進行offline dedup(外聯重刪),offline dedup可以最終減少占用的空間,但不能減少寫的量。為什么要這樣做呢?因為計算機的CPU能力很有限,還要做很多FTL(閃存轉換層)等很多工作。

現在用的重刪方法還是用傳統的哈希,計算開銷非常大。我們想能不能用更簡單的指紋方式,數據本身每一次寫入的時候,為了提高數據可靠性都自動產生一個ECC(糾刪碼)。實際上可以用來做一個弱哈希,弱的指紋。ECC產生是免費的,硬件里面已經產生,已經有的。如果這樣我們可以通過ECC來首先判斷你這個數據是不是有匹配,沒有可以排除,如果有匹配,由于ECC很弱,在這種情況下因為寫是讀延時的10倍,所以很快就能把整個頁讀取出來,然后逐字節得比較。

以這種方法,我們可以把CPU計算的CR1,CR2很大的開銷完全去掉,取而代之就是讀,因為ECC本身不要這個。現在遇到一個問題在很多閃存里,為了避免同一個數據寫在同一個物理位置上,導致里面的存儲單元報廢時間不均勻,很多芯片里面有固件,把這個寫進去的數據在寫到物理介質之前,先把它打亂,然后再寫進去,保證固定位置均勻分布,讀的時候重新分布。

這給重刪帶來一個問題,ECC代表數據的指紋。現在讀了以后,ECC所針對的值就不一樣了,本來兩個值是相同的,是可重刪的,通過讀取,兩個ECC不一樣,針對這樣一個問題怎么解決?

每一個邏輯,用隨機產生數據,產生一個隨機的scrambler(擾碼器),這有一個對應,只要你有一個固定LBA,我的scrambler就是固定的,我們利用這個特征然后引用一些數學上的基本特性設計了一個是在Host端重建軟件擾碼器,一個是在Device端有選擇地繞過硬件加擾器,通過查找的方式把數據恢復過來。

最后測試,Inline and offline deduplication效果比較明顯,我們基于ECC的dedup方式進行比較,我們的方式所得到的重刪率要高出大概20-40%之間。這個就證明這種方法還是非常有效的。

還有另外一個問題,現在閃存在數據中心,通常被用于高速緩存,這就出現一個問題。怎么能夠把緩存的實際空間增大,同時提高它的緩存命中率?目前方法是2016年的CacheDedup方式,把元數據和數據緩存進行分開管理和訪問,然后采取傳統方式對Source Addresses進行替換算法。

我們對現有的進行分析,發現隨著你塊的大小不斷增加,重刪率下降很快,另一個命中率也在顯著下降,這樣實際利用空間減少了,命中率也降低了。

最后我們發現主要原因是大家沒有對重刪本身特性進行進一步的挖掘,傳統方法在獨立的情況下是有效的,但在重刪的情況下,一個物理塊可能對多個邏輯地址,這種情況下,所對應的邏輯地址數量不一樣,這個我們稱作內容共享的程度。基于內容的局部性或者內容共享的強度來對這個進行挖掘,得出新的替換算法,最后的結果還是比較滿意的,我們性能大概提高一倍。

同時讀和寫性能都有所提高,這個是三項工作相應的三篇文章都是今年最新發表的,我今天就介紹這么多,謝謝大家。

Q&A

Q:存儲系統里,讀性能的優化,垃圾回收和重刪方面展示了最新研究工作,對于垃圾回收你分享的主題里面方法是很奇妙的。在頁的檢測時候,它的準確率大概會是什么情況?準確度會直接影響到算法的效能嗎?

A:目前我們是通過對現有的開源數據進行分析,我剛才講比較兩極分化,所以這個分配目前來看,我們做的這幾個數據級還比較準確。接下來如果要有更多數據級,可能就不是很準確。我們接下來希望把一些AI和機器學習技術放在這里面來做更準確的預測。

文章內容未經演講人審核

未經允許不得轉載:存儲在線 » UT Arlington教授江泓:支撐大數據的閃存系統面臨的挑戰和技術創新
分享到: 更多 (0)
澳客500