以下為速記整理(文字未經(jīng)演講人審閱):

今天分三個部分講,首先談一下軟件定義存儲的研究背景,第二是存儲陣列擴(kuò)展難題以及解決方案,第三是我們團(tuán)隊(duì)提出的擴(kuò)展方法,最后總結(jié)。

軟件定義存儲市場發(fā)展新動向

現(xiàn)在其實(shí)軟件定義存儲通過創(chuàng)建具體化的存儲資源池,可以將我們的創(chuàng)設(shè)管理軟件與基礎(chǔ)設(shè)施分離管理,傳統(tǒng)意義分為Data plane(數(shù)據(jù)層)、Control Plane(控制層)、Storage Components(存儲組件),SDS市場規(guī)模每年在以約25%的速度持續(xù)增長,預(yù)計(jì)到2021年整體市場規(guī)模將達(dá)到162億美元。

目前來說整個數(shù)據(jù)中心是SDS存儲的重要組成部分,我們不僅有軟件定義存儲還有軟件定義計(jì)算、網(wǎng)絡(luò)等各方面應(yīng)用。

通過融合不同的存儲設(shè)備、不同數(shù)據(jù)接口、不同類型應(yīng)用的超融合架構(gòu)仍然是SDS的主流選擇。另一方面,云原生技術(shù)對系統(tǒng)硬件操作系統(tǒng)、運(yùn)行時系統(tǒng)、應(yīng)用進(jìn)行了解耦,天然適合軟件定義存儲環(huán)境。

比如現(xiàn)在我們整個云平臺,通過把硬件、操作系統(tǒng)軟件集群管理和上層應(yīng)用進(jìn)行解耦,可以實(shí)現(xiàn)整個軟件定義存儲。比如像以容器、微服務(wù)等為代表的云原生技術(shù)仍在融入SDS,以適配海量應(yīng)用的數(shù)據(jù)訪問需求。從數(shù)據(jù)層來說,是采用分布式文件系統(tǒng),控制層是采用容器協(xié)調(diào)器?,F(xiàn)在數(shù)據(jù)存儲規(guī)模已經(jīng)在PB級到EB級,文件幣將成為SDS的重要應(yīng)用。

當(dāng)前存儲陣列的擴(kuò)展難題及解決方案

實(shí)際上軟件定義存儲陣列是軟件定義存儲的核心組成部分,擴(kuò)展性對于SDS有非常重要的意義,特別是橫向擴(kuò)展,對數(shù)據(jù)平面的管理尤為重要。

在過去很多年,有非常多的存儲陣列擴(kuò)展方法和算法可以擴(kuò)展到SDS里面去,像傳統(tǒng)的基于Round-Robin的方法,左邊圖展示了三個盤的數(shù)據(jù)塊數(shù)據(jù)情況,右邊盤是假設(shè)新增一個盤,變成四個盤以后的數(shù)據(jù)分布情況,這個時候我們可以看到相當(dāng)于采用輪轉(zhuǎn)的方法,除了B0-B2之外,后面紫色的塊兒都會進(jìn)行擴(kuò)展,相當(dāng)于它會導(dǎo)致IO的擴(kuò)展開銷很大。

有一些方法,比如采用半輪轉(zhuǎn)方法,它可以比原有的Round-Robin效率方法提高一些,因?yàn)槲覀兛吹阶仙w移數(shù)量變少,但是它多次擴(kuò)展會導(dǎo)致不均衡的問題。后面擴(kuò)展方法,只需要遷移少量紫色數(shù)據(jù)塊,達(dá)到盤間數(shù)據(jù)均衡,但是它并沒有有效利用條帶,存在條帶內(nèi)部存在大量空閑塊的現(xiàn)象。

基于GA的擴(kuò)展方法,可以提高擴(kuò)展效率,但是由于紫色校驗(yàn)塊修改更大,會導(dǎo)致RAID5、RAID6里面,由于所有的校驗(yàn)要重新進(jìn)行修改、更新,用的時候?qū)е聰U(kuò)展的時間很長。

還有包括CRAID的方法,把熱點(diǎn)數(shù)據(jù)放置在緩存當(dāng)中進(jìn)行擴(kuò)展,冷數(shù)據(jù)放在硬盤當(dāng)中擴(kuò)展,達(dá)到較好的擴(kuò)展效率,但是它并沒有調(diào)整結(jié)合底層的存儲陣列以及校驗(yàn)分布,優(yōu)化底層設(shè)備,主要從應(yīng)用層面角度做這樣的優(yōu)化。

包括現(xiàn)在基于SR編碼,對它進(jìn)行擴(kuò)展,我們也有一種RS的擴(kuò)展方法,這里面的擴(kuò)展是把紫色數(shù)據(jù)塊進(jìn)行遷移,所有橙色校驗(yàn)塊都要進(jìn)行更新,所以會導(dǎo)致更新效率很低。

實(shí)際上現(xiàn)有方法中,我們會面臨很多的問題,比如現(xiàn)在的很多擴(kuò)展方法難以適應(yīng)云計(jì)算、大數(shù)據(jù)等高效擴(kuò)展的場景。第二任何擴(kuò)展方法,都存在一些IO的遷移開銷大,遷移路徑長,修改過多,然后部分校驗(yàn)方法難以實(shí)現(xiàn)整個盤內(nèi)、盤間的IO分布均衡。

還有大部分?jǐn)U展方法不一定完全考慮上層應(yīng)用,比如冷熱數(shù)據(jù)分布的應(yīng)用,對這個底層擴(kuò)展的影響,現(xiàn)有的擴(kuò)展方法也沒有考慮到整個大規(guī)模部署的情況,比如你的數(shù)據(jù)遷移不僅涉及到整個云計(jì)算的場景當(dāng)中,不僅涉及到盤內(nèi)的遷移甚至涉及到節(jié)點(diǎn)之間的遷移,還有跨機(jī)會之間的遷移及每個數(shù)據(jù)遷移之間的開銷是不一樣的,所以我們目前來說方法主要集中在硬盤級別擴(kuò)展,并沒有考慮到整個機(jī)柜級別或者數(shù)字中心級別的困難,會導(dǎo)致我們場景很難應(yīng)用的。

上海交大團(tuán)隊(duì)提出的新擴(kuò)展方法

接下來是上海交大團(tuán)隊(duì)提出的一些新的擴(kuò)展方法,結(jié)合前面的基礎(chǔ)之上,我們做的工作,大概這個工作是跨度有十多年,從最早一篇文章是2011年到今年2021年一直在做這方面的工作。

我們主要針對第一個復(fù)雜場景比如RAID5、RAID6,我們分別有自己的擴(kuò)展方法。

第二我們結(jié)合感知上層的應(yīng)用變化,有針對3盤容錯陣列。

對跨機(jī)柜擴(kuò)展場景,我們也有新的擴(kuò)展方法,從學(xué)術(shù)圈角度來說我們僅僅把它共享給大家,參考。

第一基于Raid5的方法,我們擴(kuò)展目標(biāo)是減少校驗(yàn)的修改,或者保存原有的校驗(yàn)鏈,基礎(chǔ)不動,同時保證數(shù)據(jù)遷移量足夠少,這上面實(shí)際對Raid5進(jìn)行了重新編排,第一個條帶我們是原始不動的,包括前面三個條帶都是原封不動的,但后面的條帶就需要打散重排,所以在我們這里面,有部分的條帶是完全不動,有部分條帶是打散重排。

由于新的條帶需要加入新的數(shù)據(jù)塊,所以這個時候校驗(yàn)計(jì)算需要把原始的校驗(yàn)跟新加入的數(shù)據(jù)塊做計(jì)算就可以了,這樣導(dǎo)致計(jì)算量的減少,就不用像前面的方法,把整個校驗(yàn)鏈打散。這里面我們實(shí)現(xiàn)了既可以實(shí)現(xiàn)校驗(yàn)修改的開銷很小,同時也能實(shí)現(xiàn)數(shù)據(jù)遷移量的數(shù)量比較少。

我們做了很多的相關(guān)的實(shí)驗(yàn),比如我做了負(fù)載均衡的實(shí)驗(yàn),對于不同的擴(kuò)張場景,我們負(fù)載均衡的方差非常少的,可以保證比較好的負(fù)載均衡。在負(fù)載均衡情況下我們做了數(shù)據(jù)牽引力的指標(biāo),以實(shí)現(xiàn)最低的數(shù)據(jù)牽引力,這個前提是包括所有盤數(shù)據(jù)是有相同數(shù)據(jù)量,負(fù)載是均衡的。

相當(dāng)于負(fù)載均衡的情況下,我們有一個最低的數(shù)據(jù)擴(kuò)展和遷移的時間,我們可以保證數(shù)據(jù)遷移時間是最短的,擴(kuò)展需要花的時間也是最短的。一般來說,像正常擴(kuò)展一個磁盤,四個盤擴(kuò)到五個盤,每個盤容量一個TB的話,要花幾十分鐘到一個小時,另外我們在實(shí)驗(yàn)當(dāng)中也證明了逐漸增加硬盤的情況下,還能維持整個高吞吐。

再者針對RAID6的問題,比RAID5更復(fù)雜,因?yàn)樗鼌⑴c雙校驗(yàn),我們的理念和RAID5的方法也類似,就是維持整個條帶盡可能不變,盡可能少的數(shù)據(jù)做遷移,所以這里面我們實(shí)際上是就維持條帶不變,但是條帶內(nèi)部的數(shù)據(jù)做平移,來保證每個條帶的數(shù)據(jù)量是相對來說比較均衡的。

我們也做了很多相關(guān)的評估,比如在保證負(fù)載均衡的情況下可以達(dá)到最低的數(shù)據(jù)遷移效率,也可以應(yīng)用在不同的RAID6編碼等應(yīng)用場景。校驗(yàn)修改,可以實(shí)現(xiàn)最低的校驗(yàn)修改數(shù)量。遷移時間方面我們基本可以達(dá)到最低的。

針對三盤容的陣列比雙盤更加復(fù)雜一些,這里面我們對整個條帶進(jìn)行了重組,融合組內(nèi)的條帶,完成擴(kuò)展。

我們也可以實(shí)現(xiàn)最低的數(shù)據(jù)遷移率,用了很多編碼,也能夠?qū)崿F(xiàn)比較低的校驗(yàn)修改。在保證負(fù)載均衡情況下,我們遷移IO比原始的減少70%。并且我們能夠?qū)崿F(xiàn)比較低的內(nèi)存開銷,這里我們是提前感知系統(tǒng)的應(yīng)用狀況和編碼參數(shù),做提前的預(yù)算。在擴(kuò)展速度方面,我們基本上可以達(dá)到很好的效果。

接下來是考慮應(yīng)用的情況,相當(dāng)于感知應(yīng)用的數(shù)據(jù)訪問情況,我們實(shí)際上是根據(jù)每個應(yīng)用的冷熱情況,這里面我們寫的表示應(yīng)用訪問概率,這時候我們預(yù)測一下它的概率,通過機(jī)器學(xué)習(xí)對數(shù)據(jù)塊進(jìn)行分類,選擇特定的數(shù)據(jù)塊,不要求每個盤的數(shù)據(jù)塊數(shù)量相同,但要保證每個盤數(shù)據(jù)訪問的次數(shù)是基本相等的,說白了負(fù)載是基本相等,這樣達(dá)到平衡的效率。

最終我們比現(xiàn)有的方法,分別可以減少91.5%和50%的遷移開銷,這是在RAID5當(dāng)中,RAID0也可以保證。這種方法只能保證數(shù)據(jù)的即時性,而不是達(dá)到絕對,所以我們大概在保證即時性上,比現(xiàn)有IO大幅降低,在擴(kuò)展時間上也可以做到大幅度提升。

最后是我們的總結(jié),相當(dāng)于現(xiàn)在的軟件定義存儲對陣列擴(kuò)展性有很高的需求。傳統(tǒng)的靜態(tài)擴(kuò)展方法難以用適配現(xiàn)在復(fù)雜的環(huán)境當(dāng)中,所以針對上述問題,我們交大團(tuán)隊(duì)對問題產(chǎn)生了深入的研究,在單盤、雙盤、三盤乃至多盤容錯陣列中均取得了良好的效果,并且在感知上層應(yīng)用負(fù)載,結(jié)合擴(kuò)展負(fù)載進(jìn)行全局優(yōu)化。針對大規(guī)模陣列場景提出跨機(jī)柜擴(kuò)展方法,適用于不同糾刪碼場景。

以上就是我的匯報(bào),謝謝大家!

分享到

崔歡歡

相關(guān)推薦