美國(guó)德克薩斯大學(xué)阿靈頓分校教授,IEEE Fellow, 同時(shí)也是阿里巴巴達(dá)摩院的項(xiàng)目專家,江泓(Hong Jiang)受邀出席了智能存儲(chǔ)與存儲(chǔ)新架構(gòu)學(xué)術(shù)論壇,并發(fā)表《支撐大數(shù)據(jù)的閃存系統(tǒng)》的主題演講。

以下內(nèi)容根據(jù)現(xiàn)場(chǎng)速記整理。

今天和大家分享一下我們?cè)谔剿髦未髷?shù)據(jù)的閃存存儲(chǔ)系統(tǒng)研究方面的一些經(jīng)驗(yàn)和結(jié)果。

談到大數(shù)據(jù),這張圖片比較能說明問題,這是經(jīng)濟(jì)學(xué)人刊物兩年以前的一個(gè)封面。主要意思是如果上世紀(jì)全球最有價(jià)值的資源是原油,本世紀(jì)最有價(jià)值的資源就應(yīng)該是數(shù)據(jù)。

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

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

大數(shù)據(jù)的整個(gè)生態(tài)環(huán)境,生命周期,是從數(shù)據(jù)產(chǎn)生,收集,清洗,到存儲(chǔ),管理,最后是分析以及應(yīng)用。在此過程當(dāng)中,存儲(chǔ)起到一個(gè)從原始數(shù)據(jù)到數(shù)據(jù)真正發(fā)揮作用兩個(gè)環(huán)節(jié)里一個(gè)承上啟下的作用,一個(gè)至關(guān)重要的環(huán)節(jié)。

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

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

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

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

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

為什么會(huì)讀寫干擾?SLC是一個(gè)存儲(chǔ)單元一位,MLC就是兩位,那么有四種不同的方式,依此類推,TLC是三位,有八種不同的狀態(tài),導(dǎo)致讀寫過程中需要判斷讀寫時(shí)間與量級(jí)等各種因素。

這個(gè)問題會(huì)越來越嚴(yán)重。我們對(duì)一些公開的問題進(jìn)行了分析,然后發(fā)現(xiàn)的確在這幾個(gè)大家經(jīng)常用到的開源工具里面,平均33%的讀請(qǐng)求被寫請(qǐng)求給堵住了,最高達(dá)到56%。這樣一來對(duì)讀性能的降低是非??捎^的,平均是42.8%,最高可以到75%。目前這個(gè)問題現(xiàn)在有一些解決方案,同時(shí)也有它們的問題。

比如P/E分析,這項(xiàng)工作實(shí)際上是華中科技大學(xué)何老師團(tuán)隊(duì)做的。在寫過程中如果遇到讀取,就把寫工作暫停,不過雖然可以改善讀的性能,但會(huì)影響寫性能。

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

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

關(guān)鍵是從開銷和延時(shí)的層級(jí)來評(píng)估其性價(jià)比。因?yàn)椴煌鉀Q方案要么對(duì)空間有要求,要么對(duì)硬件有額外要求,這樣以后得出的結(jié)論應(yīng)該比較公平,平均響應(yīng)時(shí)間縮短54.0%,是最具性價(jià)比的。

接下來是重刪問題,上午大家聽了主題報(bào)告,戴爾的畢總已經(jīng)提到,重刪已經(jīng)標(biāo)準(zhǔn)化,在很多場(chǎng)景里落地了。現(xiàn)在做是因?yàn)闆]有辦法了,未來全球產(chǎn)生的必須存儲(chǔ)的數(shù)據(jù)對(duì)比全球所有的存儲(chǔ)空間加起來還是有大概一倍甚至兩倍差。

唯一的辦法就是數(shù)據(jù)壓縮?,F(xiàn)在大家證明有效的就是已經(jīng)標(biāo)準(zhǔn)化的重刪。

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

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

以這種方法,我們可以把CPU計(jì)算的CR1,CR2很大的開銷完全去掉,取而代之就是讀,因?yàn)镋CC本身不要這個(gè)?,F(xiàn)在遇到一個(gè)問題在很多閃存里,為了避免同一個(gè)數(shù)據(jù)寫在同一個(gè)物理位置上,導(dǎo)致里面的存儲(chǔ)單元報(bào)廢時(shí)間不均勻,很多芯片里面有固件,把這個(gè)寫進(jìn)去的數(shù)據(jù)在寫到物理介質(zhì)之前,先把它打亂,然后再寫進(jìn)去,保證固定位置均勻分布,讀的時(shí)候重新分布。

這給重刪帶來一個(gè)問題,ECC代表數(shù)據(jù)的指紋。現(xiàn)在讀了以后,ECC所針對(duì)的值就不一樣了,本來兩個(gè)值是相同的,是可重刪的,通過讀取,兩個(gè)ECC不一樣,針對(duì)這樣一個(gè)問題怎么解決?

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

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

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

我們對(duì)現(xiàn)有的進(jìn)行分析,發(fā)現(xiàn)隨著你塊的大小不斷增加,重刪率下降很快,另一個(gè)命中率也在顯著下降,這樣實(shí)際利用空間減少了,命中率也降低了。

最后我們發(fā)現(xiàn)主要原因是大家沒有對(duì)重刪本身特性進(jìn)行進(jìn)一步的挖掘,傳統(tǒng)方法在獨(dú)立的情況下是有效的,但在重刪的情況下,一個(gè)物理塊可能對(duì)多個(gè)邏輯地址,這種情況下,所對(duì)應(yīng)的邏輯地址數(shù)量不一樣,這個(gè)我們稱作內(nèi)容共享的程度。基于內(nèi)容的局部性或者內(nèi)容共享的強(qiáng)度來對(duì)這個(gè)進(jìn)行挖掘,得出新的替換算法,最后的結(jié)果還是比較滿意的,我們性能大概提高一倍。

同時(shí)讀和寫性能都有所提高,這個(gè)是三項(xiàng)工作相應(yīng)的三篇文章都是今年最新發(fā)表的,我今天就介紹這么多,謝謝大家。

Q&A

Q:存儲(chǔ)系統(tǒng)里,讀性能的優(yōu)化,垃圾回收和重刪方面展示了最新研究工作,對(duì)于垃圾回收你分享的主題里面方法是很奇妙的。在頁(yè)的檢測(cè)時(shí)候,它的準(zhǔn)確率大概會(huì)是什么情況?準(zhǔn)確度會(huì)直接影響到算法的效能嗎?

A:目前我們是通過對(duì)現(xiàn)有的開源數(shù)據(jù)進(jìn)行分析,我剛才講比較兩極分化,所以這個(gè)分配目前來看,我們做的這幾個(gè)數(shù)據(jù)級(jí)還比較準(zhǔn)確。接下來如果要有更多數(shù)據(jù)級(jí),可能就不是很準(zhǔn)確。我們接下來希望把一些AI和機(jī)器學(xué)習(xí)技術(shù)放在這里面來做更準(zhǔn)確的預(yù)測(cè)。

文章內(nèi)容未經(jīng)演講人審核

分享到

崔歡歡

相關(guān)推薦