12月9日,以“新存儲(chǔ),新常態(tài),新應(yīng)用”為主題的中國(guó)存儲(chǔ)峰會(huì)于北京悠唐皇冠假日酒店召開。下午超融合技術(shù)論壇上,中國(guó)計(jì)算機(jī)學(xué)會(huì)存儲(chǔ)專委會(huì)主任委員,華中科技大學(xué)計(jì)算機(jī)學(xué)院院長(zhǎng)馮丹女士在發(fā)表的《面向服務(wù)的異構(gòu)融合存儲(chǔ)系統(tǒng)與技術(shù)》主題演講中指出,異構(gòu)融合是將新的存儲(chǔ)技術(shù)和傳統(tǒng)硬盤融合,構(gòu)成一個(gè)智能存儲(chǔ)節(jié)點(diǎn),再通過多個(gè)智能存儲(chǔ)節(jié)點(diǎn)互聯(lián)來構(gòu)成系統(tǒng)。區(qū)域之間相互協(xié)作,滿足不同應(yīng)用的需求。
馮丹表示:“量變導(dǎo)致質(zhì)變,存儲(chǔ)模式需要變更,不能用一堆硬盤或者SSD摞起來。而存儲(chǔ)逐漸從服務(wù)于單個(gè)機(jī)器,單機(jī)外設(shè)慢慢變?yōu)榉?wù)眾多的應(yīng)用。無論是超級(jí)計(jì)算,還是網(wǎng)絡(luò)應(yīng)用都在呈現(xiàn)服務(wù)化趨勢(shì)?!?/p>
因此,在大會(huì)上,她主要從存儲(chǔ)器件融合,系統(tǒng)融合還有面向服務(wù)的保障技術(shù)三部分詳細(xì)介紹了面向服務(wù)的異構(gòu)融合存儲(chǔ)系統(tǒng)與技術(shù)。主要包括三點(diǎn):
1.形成異構(gòu)融合非易失性存儲(chǔ)控制器及設(shè)備,針對(duì)PCM、Flash等器件特性進(jìn)行優(yōu)化,提高性能及壽命;
2.形成面向服務(wù)的異構(gòu)融合對(duì)象存儲(chǔ)體系;
3.形成服務(wù)等級(jí)目標(biāo)保障技術(shù),精確保障用戶I/O帶寬、訪問延遲等。
以下為馮丹女士的演講實(shí)錄:
今天我給大家?guī)淼难葜v報(bào)告是面向服務(wù)的異構(gòu)融合存儲(chǔ)系統(tǒng)與技術(shù)。
主要是從這存儲(chǔ)器件融合以及系統(tǒng)融合還有面向服務(wù)的保障技術(shù)三部分來介紹。
大數(shù)據(jù)時(shí)代,我們面臨數(shù)據(jù)存儲(chǔ)能力不足的巨大挑戰(zhàn)
應(yīng)該說當(dāng)前大數(shù)據(jù)時(shí)代使得數(shù)據(jù)爆炸式的增長(zhǎng)的趨勢(shì),導(dǎo)致數(shù)據(jù)的摩爾定律每年60%的增長(zhǎng)率。也就是導(dǎo)致我們的數(shù)據(jù)量越來越大。據(jù)IDC統(tǒng)計(jì),2013年,全球數(shù)據(jù)量是4.4ZB,2020年將達(dá)到40ZB。這么多數(shù)據(jù)怎么樣存下來,首先就是一個(gè)挑戰(zhàn)。量變導(dǎo)致質(zhì)變,存儲(chǔ)模式也需要變更,不能用一堆的硬盤或者SSD摞起來。
它的發(fā)展趨勢(shì),存儲(chǔ)慢慢從服務(wù)于單個(gè)機(jī)器,單機(jī)外設(shè)慢慢變成服務(wù)眾多的應(yīng)用。無論是超級(jí)計(jì)算,還是網(wǎng)絡(luò)應(yīng)用都是呈現(xiàn)服務(wù)化的趨勢(shì),比如說中國(guó)的神威太湖之光還有美國(guó)Cray超級(jí)計(jì)算機(jī)系統(tǒng)Titan。包括氣象分析、天氣預(yù)報(bào)、生物醫(yī)藥、新材料、工程設(shè)計(jì)等等眾多的應(yīng)用,每種應(yīng)用對(duì)存儲(chǔ)的需求是不一樣的。如何滿足不同應(yīng)用這種需求,就是一個(gè)問題。
除了高性能計(jì)算之外還有我們接觸最多的,比如網(wǎng)絡(luò)的存儲(chǔ)服務(wù),國(guó)外的亞馬遜,谷歌,國(guó)內(nèi)的阿里、騰訊云都面對(duì)這樣的問題,每個(gè)月數(shù)據(jù)的增量,無論是微信朋友圈,還是QQ空間,2到3PB,怎么樣靠低能耗方式存起來,都是問題。我可能最近一段時(shí)間朋友圈里的照片大家都來點(diǎn)贊,過一段時(shí)間可能你還保存著,多少年之后還希望能看一看。怎樣在存儲(chǔ)這一級(jí)實(shí)現(xiàn)我隨時(shí)能夠訪問,系統(tǒng)這一級(jí)又能夠以最低成本,最低功耗,最省容量的方式存儲(chǔ),這些都是難題。也就是說各種各樣的應(yīng)用對(duì)于存儲(chǔ)的需求多種多樣,需要按需服務(wù)。
具體來說就是存儲(chǔ)資源種類非常多,如何構(gòu)建海量存儲(chǔ)系統(tǒng)?用戶數(shù)據(jù)的種類也是多種多樣,結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù),如何以最合適的方式放在存儲(chǔ)上面?還有我上面的應(yīng)用也是種類非常多,無論高性能計(jì)算類型還是網(wǎng)絡(luò)應(yīng)用對(duì)這個(gè)需求都不一樣。高性能計(jì)算大部分是我要高的聚合帶寬,對(duì)網(wǎng)絡(luò)應(yīng)用來說需要的是IOPS要高等等這些需求導(dǎo)致了我們?cè)趺礃觼順?gòu)建一個(gè)能夠滿足不同需求的存儲(chǔ)系統(tǒng)的方式成為一個(gè)難題。
我們總結(jié)兩個(gè)問題,一個(gè)就是我怎么樣來構(gòu)建一個(gè)存儲(chǔ)系統(tǒng)。第二怎么樣來服務(wù)于不同的應(yīng)用。它的表現(xiàn)就是高性能,高可靠、高可用,低能耗等等能夠最終實(shí)現(xiàn)按需服務(wù)。
異構(gòu)融合的概念
我們應(yīng)該說是在從2010年開始就提出異構(gòu)融合的概念,開始做相應(yīng)的研究。今天給大家匯報(bào)一下我們做的一些工作??傮w思路就是將新的存儲(chǔ)的技術(shù)和傳統(tǒng)的硬盤來融合一起,構(gòu)成一個(gè)智能存儲(chǔ)節(jié)點(diǎn)。
通過多個(gè)智能存儲(chǔ)節(jié)點(diǎn)互聯(lián)來構(gòu)成系統(tǒng)。區(qū)域之間能協(xié)作,來滿足不同應(yīng)用的需求,也就是我們所說的分布式系統(tǒng)。
多個(gè)數(shù)據(jù)之間可以構(gòu)成一個(gè)多云的系統(tǒng),利用每個(gè)云的不同特點(diǎn),亞馬遜的云肯定要收費(fèi),但服務(wù)可靠。360的云已經(jīng)關(guān)閉了,它是免費(fèi)的,但過一段時(shí)間可能不服務(wù)了。我怎么樣來構(gòu)建一個(gè)多云的系統(tǒng)來滿足應(yīng)用的不同需求,使得合適的數(shù)據(jù)放置在合適的地點(diǎn)做一些相應(yīng)的工作。也就是說我們?cè)谙到y(tǒng)一級(jí)都要做相應(yīng)的融合技術(shù),滿足這種按需存儲(chǔ)的需求。
存儲(chǔ)器件的融合
在這里我首先跟大家分享的就是在器件一級(jí)的融合,我們看一下左邊是傳統(tǒng)體系結(jié)構(gòu),現(xiàn)在如何把新的器件技術(shù)加入進(jìn)來?我們認(rèn)為它可以融合在一起完成,我們就叫做異構(gòu)融合。在硬件上FPGA向主機(jī)提供的是PCI-E的接口,這里提供了四個(gè)DMA的接口卡,做得是PCM卡。在這里面我們?yōu)榱颂剿鱌CM到底是用來代替外存還是代替內(nèi)存,貼了PCM的芯片。在PCM芯片用作內(nèi)存使用的時(shí)候,是怎么樣的一個(gè)使用方式。
我們做了設(shè)備原型,也是一個(gè)PCIE的卡,對(duì)主機(jī)實(shí)現(xiàn)就是支持NVME協(xié)議。子卡是Flash,可將它作為擴(kuò)展內(nèi)存使用。當(dāng)我全部配成Flash卡的時(shí)候,可以把它當(dāng)成SSD使用。我們探索當(dāng)兩種融合的時(shí)候,有什么可做的工作呢?
我們針對(duì)PCM的特性做了一些工作,它的主要特點(diǎn)就是阻值在晶態(tài)和非晶態(tài)之間存在一個(gè)不對(duì)稱,讀快寫慢。寫0和寫1不對(duì)稱,由原點(diǎn)決定。寫1就是再結(jié)晶的過程,它的能耗要求比較低,中溫,再結(jié)晶的過程時(shí)間比較長(zhǎng),寫1慢,能耗低。寫0是高溫淬火的過程,能耗比較高,寫0要快。利用這個(gè)我們做了相應(yīng)優(yōu)化,而它整體來說PCM相對(duì)Flash要快4-10倍的量級(jí)。基本上可以達(dá)到DRAM的訪問速度,幾十納秒的量級(jí)。我們利用這個(gè)發(fā)揮所長(zhǎng),我們傳統(tǒng)Flash構(gòu)成的SSD存在的問題是通道里有很多閃存芯片,但只有一部分是真正存數(shù)據(jù)的。在查表時(shí),需要查詢數(shù)據(jù)所在位置,真正數(shù)據(jù)的讀寫還要征用數(shù)據(jù)通道,導(dǎo)致閃存效率較低。
而我們的原型系統(tǒng)中采用PCM和Flash,各取所長(zhǎng)。用PCM做查詢時(shí)要進(jìn)行很多次操作,讀完改寫次數(shù)比較多,用它來做內(nèi)存。數(shù)據(jù)在閃存上外存,可以提高性能。
最終,異構(gòu)融合結(jié)構(gòu)的固態(tài)盤在性能、壽命上基本接近或等于理想的純內(nèi)存頁級(jí)映射結(jié)構(gòu)。我們采用這種混合結(jié)構(gòu)之后,基本和最理想的頁級(jí)映射性能差在百分之零點(diǎn)幾,基本可以接近最理想的頁級(jí)映射性能,比普通使用的要好很多。因?yàn)樗妥罾硐胄阅懿?,最多?huì)有57%這樣的性能差距。同時(shí)壽命的影響大大降低了Flash擦除的次數(shù),映射表放在PCM上去,得到這樣的結(jié)果。
再一個(gè)針對(duì)PCM做一些性能優(yōu)化,剛才講了原理,它的電源模塊實(shí)際支持寫入的Bit數(shù)有限,比如16位或者更少。我們知道一個(gè)總線四位,最高16位為1單元(unit),我要一次寫一個(gè)unit,8個(gè)unit才能寫下去,導(dǎo)致性能較低,個(gè)中原因是寫入的高能耗,電源線干擾,受限的電源模塊。
然后我們對(duì)負(fù)載特征進(jìn)行分析,發(fā)現(xiàn)實(shí)際上數(shù)據(jù)是有一定規(guī)律。我們對(duì)這個(gè)多線程進(jìn)行分析,發(fā)現(xiàn)它的數(shù)據(jù)全0,一半0,一半0一半任意數(shù),還有任意寫,我們發(fā)現(xiàn)寫全0占非常高的比例。隨著線程數(shù)的增加,寫全0比例非常高。但PCM不管是寫0還是寫1都有能耗,寫比讀要慢。那么只能減少寫入,做優(yōu)化工作。如何減少寫入?這么多寫0,可不可以不寫,我們相當(dāng)于針對(duì)它進(jìn)行相應(yīng)優(yōu)化。
第一步是根據(jù)數(shù)據(jù)規(guī)律做壓縮。類型一全0不寫,用兩個(gè)標(biāo)志位表示就行。類型二,三一半0一半1,都可以壓縮成32bits。類型四11就表示任意。
第二步是重調(diào)度,把它拼接來寫,開始的條件是只能寫16bits,重調(diào)度第一步是類型四任意都得寫。第二步是類型二三的數(shù)據(jù)并行寫入,一次能耗供電能夠?qū)懽疃嗟腷its數(shù),就是這樣的思路。
而8個(gè)Units,第一步壓縮就是0都不寫入,壓縮掉。第二步是重新調(diào)度或者拼接,首先寫XX,然后再把這兩個(gè)進(jìn)行拼接,把已經(jīng)壓縮的部分進(jìn)行拼接。我們要寫8個(gè)Units,最后變成三個(gè)Units就可以寫下去了。
之后我們發(fā)現(xiàn)還可以采用部分?jǐn)?shù)據(jù)反轉(zhuǎn)。先判斷寫下去的8位或者16位是寫0多還是寫1多。變化的位數(shù)哪個(gè)多,再將它進(jìn)行反轉(zhuǎn)。之后讓寫的位數(shù)假設(shè)16位,反轉(zhuǎn)之后減少為只寫8位,這也是減少寫的量。相當(dāng)于進(jìn)一步做壓縮,可以從原來要寫已壓縮的3個(gè)units,變?yōu)?個(gè)Units。對(duì)負(fù)載進(jìn)行測(cè)試也是有效果的。
這就是器件一級(jí)做的工作,器件的融合,如何發(fā)揮每一種器件的特點(diǎn),如何將其優(yōu)點(diǎn)發(fā)揮出來,再克服缺點(diǎn),主要做這些工作。
基于對(duì)象的異構(gòu)融合存儲(chǔ)系統(tǒng)優(yōu)化
系統(tǒng)一級(jí)我們做的工作就是基于對(duì)象的一個(gè)融合的存儲(chǔ)系統(tǒng)。主要從體系結(jié)構(gòu),高效低能耗,高可靠和高安全這三個(gè)方面來做相應(yīng)的方法探索以及優(yōu)化,最后形成一個(gè)基于對(duì)象的異構(gòu)融合的存儲(chǔ)系統(tǒng)。
首先我們最主要的特征就是做了一個(gè)主動(dòng)對(duì)象,它的主要特點(diǎn)是什么?我們要按需服務(wù)于不同的應(yīng)用,其實(shí)傳統(tǒng)存儲(chǔ)并不知道用戶有什么樣的需求。從兩部分可以知道它的需求,第一部分我們?cè)黾觾蓚€(gè)功能對(duì)象,第一個(gè)是用戶功能對(duì)象,是否需要安全,可靠性都可以通過需求提供接口。第二個(gè)是系統(tǒng)功能對(duì)象,我們可以采集以前的對(duì)象進(jìn)行分析,它是小的請(qǐng)求量居多的訪問,還是大的請(qǐng)求量居多的訪問。最簡(jiǎn)單存儲(chǔ)的策略肯定不一樣,我們一個(gè)要去測(cè)其聚合帶寬,一個(gè)要去測(cè)多少IOPS,不可能兩個(gè)應(yīng)用同時(shí)都是這樣,我們可以在系統(tǒng)內(nèi)部做自我優(yōu)化。
存儲(chǔ)原來是傻存儲(chǔ),響應(yīng)主機(jī)請(qǐng)求變成智能存儲(chǔ),能夠主動(dòng)服務(wù)于不同應(yīng)用,自適應(yīng)于復(fù)雜的應(yīng)用環(huán)境。
我們相應(yīng)對(duì)OSD(對(duì)象存儲(chǔ)設(shè)備)擴(kuò)展做了相應(yīng)的標(biāo)準(zhǔn),在2015年終于頒布。我們也形成了自己的系統(tǒng),這個(gè)系統(tǒng)具體是在武漢光電實(shí)驗(yàn)室搭建的平臺(tái),128個(gè)節(jié)點(diǎn),互聯(lián)構(gòu)成這個(gè)系統(tǒng),我們做的就是整個(gè)文件系統(tǒng)。整個(gè)系統(tǒng)可以達(dá)到百GB的聚合帶寬以及5000次并發(fā)訪問,還有單目錄下文件數(shù)量級(jí)達(dá)到百萬量級(jí)等等。
主要特點(diǎn),第一個(gè)智能性方面,我們做了一個(gè)比較有效的工作,可以根據(jù)歷史負(fù)載預(yù)測(cè)未來趨勢(shì),觸動(dòng)相應(yīng)存儲(chǔ)策略的執(zhí)行,服務(wù)不同的應(yīng)用。高性能方面,我們也做了自己的硬件,這個(gè)硬件也是用FBGA做加速,和現(xiàn)在的超級(jí)計(jì)算,提高性能的方式相同,只不過更早一點(diǎn)做了這個(gè)工作。包括支持異或、壓縮、加密、RDMA等操作加速。
元數(shù)據(jù)服務(wù)器,每個(gè)數(shù)量都達(dá)到百萬量級(jí),快速查找數(shù)據(jù)位置就成為了瓶頸。我們基于語義的特征,首先把查詢范圍縮小,讓它落在一個(gè)區(qū)域內(nèi),在這個(gè)區(qū)域內(nèi)用傳統(tǒng)目錄數(shù)的方式往下查。
我們結(jié)合一些新的發(fā)展,軟件定義網(wǎng)絡(luò),分布式系統(tǒng)中間肯定要用網(wǎng)絡(luò)互聯(lián)。為了提高可靠性,需要更多的副本提高可靠性的性能。導(dǎo)致網(wǎng)絡(luò)上有大量的冗余數(shù)據(jù)傳輸,效率更高。利用軟件定義網(wǎng)絡(luò)的優(yōu)勢(shì)做了擁塞感知的可靠組播協(xié)議。很多冗余的數(shù)據(jù),這個(gè)數(shù)據(jù)節(jié)點(diǎn)傳進(jìn)來傳出去,通過網(wǎng)絡(luò)進(jìn)來只傳一遍,一下可以寫兩個(gè)副本,三個(gè)副本,可以提高性能。
具體結(jié)果,我們把這個(gè)組播的方式用在HDF上面,可以增加一倍以上,大大提高性能。我把一些新的進(jìn)展放在我們系統(tǒng)中間去。
另外高可靠性方面,我們也是做了容雙盤錯(cuò)的編碼,特點(diǎn)是我用簡(jiǎn)單的異或運(yùn)算,計(jì)算編碼放在什么位置,計(jì)算非常簡(jiǎn)單,效率非常高。這是可靠性方面做的工作。
安全性方面存儲(chǔ),加入一些傳統(tǒng)的安全方式在上面,包括訪問控制,數(shù)據(jù)完整性、數(shù)據(jù)機(jī)密性等等。訪問控制做的是分布式訪問控制方式,可以比集中訪問方式快1.3-16倍。
另外比較特色的是做溯源入侵檢測(cè),把存儲(chǔ)系統(tǒng)中間訪問相應(yīng)進(jìn)程的日志信息都存下來,不僅僅是簡(jiǎn)單日志,還有相互之間的依賴關(guān)系,關(guān)系圖也建立起來。第一可以做圖形檢測(cè),第二做適度的審計(jì)分析,數(shù)據(jù)修改后也可以追溯它從哪里來的。還有基于閃存的安全刪除,這個(gè)也是根據(jù)它的原理來的。閃存的主要辦法如果想寫入,原來的數(shù)據(jù)就沒了,實(shí)際上它存在大量復(fù)制在里面,安全性較差。我們可以在閃存寫入的同時(shí)后臺(tái)對(duì)原來的數(shù)據(jù)進(jìn)行覆蓋寫,寫完之后寫1,后來變成寫全0,是可以改變的。
服務(wù)等級(jí)目標(biāo)保障技術(shù)
最后一方面提一下服務(wù)等級(jí)目標(biāo)保障技術(shù)——SLO。用戶面向服務(wù)的時(shí)候,我需要多少帶寬你要滿足。對(duì)服務(wù)提供商來說,我希望盡量把我的資源用起來,不是資源過量供給。我有100兆服務(wù)能力,我調(diào)度不好,有可能我100兆并沒有充分發(fā)揮。怎么樣達(dá)到相互之間既滿足用戶服務(wù)質(zhì)量保障,同時(shí)我的資源沒有浪費(fèi),我們就做了一些相應(yīng)的工作。這個(gè)主要是在我們存儲(chǔ)系統(tǒng)上面的虛擬機(jī)來做。
主要涉及兩個(gè)點(diǎn),一個(gè)是請(qǐng)求到達(dá)率,還有一個(gè)就是整個(gè)帶寬的保障,我們用PI(比例積分)和V-Cup控制器。控制器的理論就是采用比例積分控制模型動(dòng)態(tài)調(diào)整I/O到達(dá)率,采用V-Cup模型對(duì)I/O請(qǐng)求大小波動(dòng)進(jìn)行有效控制,實(shí)現(xiàn)對(duì)I/O帶寬的精確控制。
第二方面,資源利用最大化。就是進(jìn)一步在存儲(chǔ)服務(wù)器上又加了一個(gè)控制,兩層虛擬機(jī)這端和存儲(chǔ)服務(wù)器這端連接在一起,使得資源利用最大化,最大限度滿足不同用戶需求。另外還要利用高尾延時(shí),保證99%或99.9%的百分位的I/O延時(shí)目標(biāo)。做虛擬機(jī)的保障精度,還有I/O延遲最大偏差是2%。
以上是我們?cè)谄骷⑾到y(tǒng)、I/O保障這三個(gè)層面做的一些工作。