美國(guó)德克薩斯大學(xué)阿靈頓分校教授,IEEE Fellow, 同時(shí)也是阿里巴巴達(dá)摩院的項(xiàng)目專(zhuān)家,江泓(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ù),這張圖片比較能說(shuō)明問(wèn)題,這是經(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ù)有一些是過(guò)去產(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)用。在此過(guò)程當(dāng)中,存儲(chǔ)起到一個(gè)從原始數(shù)據(jù)到數(shù)據(jù)真正發(fā)揮作用兩個(gè)環(huán)節(jié)里一個(gè)承上啟下的作用,一個(gè)至關(guān)重要的環(huán)節(jié)。
要真正對(duì)大數(shù)據(jù)有效率的支持需要什么呢?我們的存儲(chǔ)容量,性能還有性?xún)r(jià)比。它對(duì)傳統(tǒng)基于硬盤(pán)容量的存儲(chǔ)系統(tǒng)提出了前所未有的挑戰(zhàn),比如說(shuō)現(xiàn)在在整個(gè)市場(chǎng)氛圍,基于容量的存儲(chǔ)系統(tǒng)里,以閃存為支撐的,現(xiàn)在基本上和硬盤(pán)已經(jīng)是平分秋色。預(yù)計(jì)在過(guò)去幾年可能會(huì)逐步取代硬盤(pán),至少按照這個(gè)預(yù)測(cè),到2026年可能96%的Capacity將以閃存為主。閃存之所以給硬盤(pán)提出這么大的挑戰(zhàn),主要是存儲(chǔ)密度在提高。
隨著密度提高,存儲(chǔ)空間增加非常迅猛。與此同時(shí),這是一個(gè)雙刃劍,讀寫(xiě)的性能不斷降低,讀寫(xiě)之間的非對(duì)稱(chēng)性更大。如何能夠真正將閃存用在支撐大數(shù)據(jù),必須要解決相關(guān)一些問(wèn)題。
今天我想講的主要關(guān)注這兩個(gè)問(wèn)題還有其他的一些挑戰(zhàn)。一個(gè)就是,閃存性能較難預(yù)測(cè),今天我講的是讀寫(xiě)的干擾,由于讀寫(xiě)問(wèn)題,讀取的延遲是寫(xiě)入的十分之一不到,如果讀寫(xiě)混在一起,那么寫(xiě)入速度如果是正在進(jìn)行,我后面讀取速度就會(huì)堵住。而我們知道對(duì)大數(shù)據(jù)分析來(lái)講,讀取性能非常重要,因此這是一個(gè)很重要的問(wèn)題。
還有一個(gè)問(wèn)題就是閃存速度,單位GB價(jià)格還是比硬盤(pán)高出很多,如何能充分把性?xún)r(jià)比進(jìn)一步提升?這就需要空間利用率的進(jìn)一步提高,還有就是壽命的提升。
這個(gè)我們想借用重刪技術(shù)提高寫(xiě)入性能和容量,同時(shí)也減少擦除次數(shù)。接下來(lái)我們主要是圍繞最近做的幾項(xiàng)工作——解決讀寫(xiě)干擾以及如何在閃存里有效進(jìn)行重刪問(wèn)題。
為什么會(huì)讀寫(xiě)干擾?SLC是一個(gè)存儲(chǔ)單元一位,MLC就是兩位,那么有四種不同的方式,依此類(lèi)推,TLC是三位,有八種不同的狀態(tài),導(dǎo)致讀寫(xiě)過(guò)程中需要判斷讀寫(xiě)時(shí)間與量級(jí)等各種因素。
這個(gè)問(wèn)題會(huì)越來(lái)越嚴(yán)重。我們對(duì)一些公開(kāi)的問(wèn)題進(jìn)行了分析,然后發(fā)現(xiàn)的確在這幾個(gè)大家經(jīng)常用到的開(kāi)源工具里面,平均33%的讀請(qǐng)求被寫(xiě)請(qǐng)求給堵住了,最高達(dá)到56%。這樣一來(lái)對(duì)讀性能的降低是非??捎^的,平均是42.8%,最高可以到75%。目前這個(gè)問(wèn)題現(xiàn)在有一些解決方案,同時(shí)也有它們的問(wèn)題。
比如P/E分析,這項(xiàng)工作實(shí)際上是華中科技大學(xué)何老師團(tuán)隊(duì)做的。在寫(xiě)過(guò)程中如果遇到讀取,就把寫(xiě)工作暫停,不過(guò)雖然可以改善讀的性能,但會(huì)影響寫(xiě)性能。
另一個(gè)方法(Rails)是把讀和寫(xiě)分開(kāi),寫(xiě)的數(shù)據(jù)復(fù)制以后,將它分開(kāi)處理,這個(gè)方法顯然對(duì)空間容量開(kāi)銷(xiāo)很大。還有一種辦法(TTFlash)是采取計(jì)算的方式避開(kāi)寫(xiě)入,把讀的幾個(gè)順序合起來(lái),通過(guò)計(jì)算來(lái)恢復(fù)讀的內(nèi)容,實(shí)際上就是增加內(nèi)部讀取請(qǐng)求,一個(gè)讀變成多個(gè)讀,但會(huì)加劇讀寫(xiě)互相的干擾。
我們的方法是什么呢?HotR,我們發(fā)現(xiàn)讀寫(xiě)在閃存頁(yè)(page)上是兩級(jí)分化的。絕大部分讀和寫(xiě)請(qǐng)求都分別有讀取和寫(xiě)入密集型頁(yè)面,我們把這些頁(yè)分類(lèi)。因?yàn)樽x取至關(guān)重要,我們就臨時(shí)代用一個(gè)空間,這個(gè)空間可以在現(xiàn)有的閃存盤(pán)里。我就把熱度高的讀頁(yè)面,暫時(shí)移動(dòng)到這個(gè)System Overview上,這就避開(kāi)了讀寫(xiě)沖突。結(jié)果簡(jiǎn)單有效,我們進(jìn)行了比較,平均提高非常明顯。
關(guān)鍵是從開(kāi)銷(xiāo)和延時(shí)的層級(jí)來(lái)評(píng)估其性?xún)r(jià)比。因?yàn)椴煌鉀Q方案要么對(duì)空間有要求,要么對(duì)硬件有額外要求,這樣以后得出的結(jié)論應(yīng)該比較公平,平均響應(yīng)時(shí)間縮短54.0%,是最具性?xún)r(jià)比的。
接下來(lái)是重刪問(wèn)題,上午大家聽(tīng)了主題報(bào)告,戴爾的畢總已經(jīng)提到,重刪已經(jīng)標(biāo)準(zhǔn)化,在很多場(chǎng)景里落地了。現(xiàn)在做是因?yàn)闆](méi)有辦法了,未來(lái)全球產(chǎn)生的必須存儲(chǔ)的數(shù)據(jù)對(duì)比全球所有的存儲(chǔ)空間加起來(lái)還是有大概一倍甚至兩倍差。
唯一的辦法就是數(shù)據(jù)壓縮?,F(xiàn)在大家證明有效的就是已經(jīng)標(biāo)準(zhǔn)化的重刪。
產(chǎn)品里面的重刪是這樣的,寫(xiě)入以后,我首先進(jìn)行inline dedup(內(nèi)聯(lián)重刪)。剩下就是我在寫(xiě)的時(shí)候,不能及時(shí)dedup,還是寫(xiě)進(jìn)去,但在空閑的時(shí)候再進(jìn)行offline dedup(外聯(lián)重刪),offline dedup可以最終減少占用的空間,但不能減少寫(xiě)的量。為什么要這樣做呢?因?yàn)橛?jì)算機(jī)的CPU能力很有限,還要做很多FTL(閃存轉(zhuǎn)換層)等很多工作。
現(xiàn)在用的重刪方法還是用傳統(tǒng)的哈希,計(jì)算開(kāi)銷(xiāo)非常大。我們想能不能用更簡(jiǎn)單的指紋方式,數(shù)據(jù)本身每一次寫(xiě)入的時(shí)候,為了提高數(shù)據(jù)可靠性都自動(dòng)產(chǎn)生一個(gè)ECC(糾刪碼)。實(shí)際上可以用來(lái)做一個(gè)弱哈希,弱的指紋。ECC產(chǎn)生是免費(fèi)的,硬件里面已經(jīng)產(chǎn)生,已經(jīng)有的。如果這樣我們可以通過(guò)ECC來(lái)首先判斷你這個(gè)數(shù)據(jù)是不是有匹配,沒(méi)有可以排除,如果有匹配,由于ECC很弱,在這種情況下因?yàn)閷?xiě)是讀延時(shí)的10倍,所以很快就能把整個(gè)頁(yè)讀取出來(lái),然后逐字節(jié)得比較。
以這種方法,我們可以把CPU計(jì)算的CR1,CR2很大的開(kāi)銷(xiāo)完全去掉,取而代之就是讀,因?yàn)镋CC本身不要這個(gè)?,F(xiàn)在遇到一個(gè)問(wèn)題在很多閃存里,為了避免同一個(gè)數(shù)據(jù)寫(xiě)在同一個(gè)物理位置上,導(dǎo)致里面的存儲(chǔ)單元報(bào)廢時(shí)間不均勻,很多芯片里面有固件,把這個(gè)寫(xiě)進(jìn)去的數(shù)據(jù)在寫(xiě)到物理介質(zhì)之前,先把它打亂,然后再寫(xiě)進(jìn)去,保證固定位置均勻分布,讀的時(shí)候重新分布。
這給重刪帶來(lái)一個(gè)問(wèn)題,ECC代表數(shù)據(jù)的指紋?,F(xiàn)在讀了以后,ECC所針對(duì)的值就不一樣了,本來(lái)兩個(gè)值是相同的,是可重刪的,通過(guò)讀取,兩個(gè)ECC不一樣,針對(duì)這樣一個(gè)問(wèn)題怎么解決?
每一個(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端有選擇地繞過(guò)硬件加擾器,通過(guò)查找的方式把數(shù)據(jù)恢復(fù)過(guò)來(lái)。
最后測(cè)試,Inline and offline deduplication效果比較明顯,我們基于ECC的dedup方式進(jìn)行比較,我們的方式所得到的重刪率要高出大概20-40%之間。這個(gè)就證明這種方法還是非常有效的。
還有另外一個(gè)問(wèn)題,現(xiàn)在閃存在數(shù)據(jù)中心,通常被用于高速緩存,這就出現(xiàn)一個(gè)問(wèn)題。怎么能夠把緩存的實(shí)際空間增大,同時(shí)提高它的緩存命中率?目前方法是2016年的CacheDedup方式,把元數(shù)據(jù)和數(shù)據(jù)緩存進(jìn)行分開(kāi)管理和訪問(wèn),然后采取傳統(tǒng)方式對(duì)Source Addresses進(jìn)行替換算法。
我們對(duì)現(xiàn)有的進(jìn)行分析,發(fā)現(xiàn)隨著你塊的大小不斷增加,重刪率下降很快,另一個(gè)命中率也在顯著下降,這樣實(shí)際利用空間減少了,命中率也降低了。
最后我們發(fā)現(xiàn)主要原因是大家沒(méi)有對(duì)重刪本身特性進(jìn)行進(jìn)一步的挖掘,傳統(tǒng)方法在獨(dú)立的情況下是有效的,但在重刪的情況下,一個(gè)物理塊可能對(duì)多個(gè)邏輯地址,這種情況下,所對(duì)應(yīng)的邏輯地址數(shù)量不一樣,這個(gè)我們稱(chēng)作內(nèi)容共享的程度?;趦?nèi)容的局部性或者內(nèi)容共享的強(qiáng)度來(lái)對(duì)這個(gè)進(jìn)行挖掘,得出新的替換算法,最后的結(jié)果還是比較滿意的,我們性能大概提高一倍。
同時(shí)讀和寫(xiě)性能都有所提高,這個(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:目前我們是通過(guò)對(duì)現(xiàn)有的開(kāi)源數(shù)據(jù)進(jìn)行分析,我剛才講比較兩極分化,所以這個(gè)分配目前來(lái)看,我們做的這幾個(gè)數(shù)據(jù)級(jí)還比較準(zhǔn)確。接下來(lái)如果要有更多數(shù)據(jù)級(jí),可能就不是很準(zhǔn)確。我們接下來(lái)希望把一些AI和機(jī)器學(xué)習(xí)技術(shù)放在這里面來(lái)做更準(zhǔn)確的預(yù)測(cè)。
文章內(nèi)容未經(jīng)演講人審核