以下為速記整理(文字未經(jīng)演講人審閱):
今天分三個(gè)部分講,首先談一下軟件定義存儲(chǔ)的研究背景,第二是存儲(chǔ)陣列擴(kuò)展難題以及解決方案,第三是我們團(tuán)隊(duì)提出的擴(kuò)展方法,最后總結(jié)。
軟件定義存儲(chǔ)市場(chǎng)發(fā)展新動(dòng)向
現(xiàn)在其實(shí)軟件定義存儲(chǔ)通過(guò)創(chuàng)建具體化的存儲(chǔ)資源池,可以將我們的創(chuàng)設(shè)管理軟件與基礎(chǔ)設(shè)施分離管理,傳統(tǒng)意義分為Data plane(數(shù)據(jù)層)、Control Plane(控制層)、Storage Components(存儲(chǔ)組件),SDS市場(chǎng)規(guī)模每年在以約25%的速度持續(xù)增長(zhǎng),預(yù)計(jì)到2021年整體市場(chǎng)規(guī)模將達(dá)到162億美元。
目前來(lái)說(shuō)整個(gè)數(shù)據(jù)中心是SDS存儲(chǔ)的重要組成部分,我們不僅有軟件定義存儲(chǔ)還有軟件定義計(jì)算、網(wǎng)絡(luò)等各方面應(yīng)用。
通過(guò)融合不同的存儲(chǔ)設(shè)備、不同數(shù)據(jù)接口、不同類型應(yīng)用的超融合架構(gòu)仍然是SDS的主流選擇。另一方面,云原生技術(shù)對(duì)系統(tǒng)硬件操作系統(tǒng)、運(yùn)行時(shí)系統(tǒng)、應(yīng)用進(jìn)行了解耦,天然適合軟件定義存儲(chǔ)環(huán)境。
比如現(xiàn)在我們整個(gè)云平臺(tái),通過(guò)把硬件、操作系統(tǒng)軟件集群管理和上層應(yīng)用進(jìn)行解耦,可以實(shí)現(xiàn)整個(gè)軟件定義存儲(chǔ)。比如像以容器、微服務(wù)等為代表的云原生技術(shù)仍在融入SDS,以適配海量應(yīng)用的數(shù)據(jù)訪問(wèn)需求。從數(shù)據(jù)層來(lái)說(shuō),是采用分布式文件系統(tǒng),控制層是采用容器協(xié)調(diào)器?,F(xiàn)在數(shù)據(jù)存儲(chǔ)規(guī)模已經(jīng)在PB級(jí)到EB級(jí),文件幣將成為SDS的重要應(yīng)用。
當(dāng)前存儲(chǔ)陣列的擴(kuò)展難題及解決方案
實(shí)際上軟件定義存儲(chǔ)陣列是軟件定義存儲(chǔ)的核心組成部分,擴(kuò)展性對(duì)于SDS有非常重要的意義,特別是橫向擴(kuò)展,對(duì)數(shù)據(jù)平面的管理尤為重要。
在過(guò)去很多年,有非常多的存儲(chǔ)陣列擴(kuò)展方法和算法可以擴(kuò)展到SDS里面去,像傳統(tǒng)的基于Round-Robin的方法,左邊圖展示了三個(gè)盤的數(shù)據(jù)塊數(shù)據(jù)情況,右邊盤是假設(shè)新增一個(gè)盤,變成四個(gè)盤以后的數(shù)據(jù)分布情況,這個(gè)時(shí)候我們可以看到相當(dāng)于采用輪轉(zhuǎn)的方法,除了B0-B2之外,后面紫色的塊兒都會(huì)進(jìn)行擴(kuò)展,相當(dāng)于它會(huì)導(dǎo)致IO的擴(kuò)展開銷很大。
有一些方法,比如采用半輪轉(zhuǎn)方法,它可以比原有的Round-Robin效率方法提高一些,因?yàn)槲覀兛吹阶仙w移數(shù)量變少,但是它多次擴(kuò)展會(huì)導(dǎo)致不均衡的問(wèn)題。后面擴(kuò)展方法,只需要遷移少量紫色數(shù)據(jù)塊,達(dá)到盤間數(shù)據(jù)均衡,但是它并沒(méi)有有效利用條帶,存在條帶內(nèi)部存在大量空閑塊的現(xiàn)象。
基于GA的擴(kuò)展方法,可以提高擴(kuò)展效率,但是由于紫色校驗(yàn)塊修改更大,會(huì)導(dǎo)致RAID5、RAID6里面,由于所有的校驗(yàn)要重新進(jìn)行修改、更新,用的時(shí)候?qū)е聰U(kuò)展的時(shí)間很長(zhǎng)。
還有包括CRAID的方法,把熱點(diǎn)數(shù)據(jù)放置在緩存當(dāng)中進(jìn)行擴(kuò)展,冷數(shù)據(jù)放在硬盤當(dāng)中擴(kuò)展,達(dá)到較好的擴(kuò)展效率,但是它并沒(méi)有調(diào)整結(jié)合底層的存儲(chǔ)陣列以及校驗(yàn)分布,優(yōu)化底層設(shè)備,主要從應(yīng)用層面角度做這樣的優(yōu)化。
包括現(xiàn)在基于SR編碼,對(duì)它進(jìn)行擴(kuò)展,我們也有一種RS的擴(kuò)展方法,這里面的擴(kuò)展是把紫色數(shù)據(jù)塊進(jìn)行遷移,所有橙色校驗(yàn)塊都要進(jìn)行更新,所以會(huì)導(dǎo)致更新效率很低。
實(shí)際上現(xiàn)有方法中,我們會(huì)面臨很多的問(wèn)題,比如現(xiàn)在的很多擴(kuò)展方法難以適應(yīng)云計(jì)算、大數(shù)據(jù)等高效擴(kuò)展的場(chǎng)景。第二任何擴(kuò)展方法,都存在一些IO的遷移開銷大,遷移路徑長(zhǎng),修改過(guò)多,然后部分校驗(yàn)方法難以實(shí)現(xiàn)整個(gè)盤內(nèi)、盤間的IO分布均衡。
還有大部分?jǐn)U展方法不一定完全考慮上層應(yīng)用,比如冷熱數(shù)據(jù)分布的應(yīng)用,對(duì)這個(gè)底層擴(kuò)展的影響,現(xiàn)有的擴(kuò)展方法也沒(méi)有考慮到整個(gè)大規(guī)模部署的情況,比如你的數(shù)據(jù)遷移不僅涉及到整個(gè)云計(jì)算的場(chǎng)景當(dāng)中,不僅涉及到盤內(nèi)的遷移甚至涉及到節(jié)點(diǎn)之間的遷移,還有跨機(jī)會(huì)之間的遷移及每個(gè)數(shù)據(jù)遷移之間的開銷是不一樣的,所以我們目前來(lái)說(shuō)方法主要集中在硬盤級(jí)別擴(kuò)展,并沒(méi)有考慮到整個(gè)機(jī)柜級(jí)別或者數(shù)字中心級(jí)別的困難,會(huì)導(dǎo)致我們場(chǎng)景很難應(yīng)用的。
上海交大團(tuán)隊(duì)提出的新擴(kuò)展方法
接下來(lái)是上海交大團(tuán)隊(duì)提出的一些新的擴(kuò)展方法,結(jié)合前面的基礎(chǔ)之上,我們做的工作,大概這個(gè)工作是跨度有十多年,從最早一篇文章是2011年到今年2021年一直在做這方面的工作。
我們主要針對(duì)第一個(gè)復(fù)雜場(chǎng)景比如RAID5、RAID6,我們分別有自己的擴(kuò)展方法。
第二我們結(jié)合感知上層的應(yīng)用變化,有針對(duì)3盤容錯(cuò)陣列。
對(duì)跨機(jī)柜擴(kuò)展場(chǎng)景,我們也有新的擴(kuò)展方法,從學(xué)術(shù)圈角度來(lái)說(shuō)我們僅僅把它共享給大家,參考。
第一基于Raid5的方法,我們擴(kuò)展目標(biāo)是減少校驗(yàn)的修改,或者保存原有的校驗(yàn)鏈,基礎(chǔ)不動(dòng),同時(shí)保證數(shù)據(jù)遷移量足夠少,這上面實(shí)際對(duì)Raid5進(jìn)行了重新編排,第一個(gè)條帶我們是原始不動(dòng)的,包括前面三個(gè)條帶都是原封不動(dòng)的,但后面的條帶就需要打散重排,所以在我們這里面,有部分的條帶是完全不動(dòng),有部分條帶是打散重排。
由于新的條帶需要加入新的數(shù)據(jù)塊,所以這個(gè)時(shí)候校驗(yàn)計(jì)算需要把原始的校驗(yàn)跟新加入的數(shù)據(jù)塊做計(jì)算就可以了,這樣導(dǎo)致計(jì)算量的減少,就不用像前面的方法,把整個(gè)校驗(yàn)鏈打散。這里面我們實(shí)現(xiàn)了既可以實(shí)現(xiàn)校驗(yàn)修改的開銷很小,同時(shí)也能實(shí)現(xiàn)數(shù)據(jù)遷移量的數(shù)量比較少。
我們做了很多的相關(guān)的實(shí)驗(yàn),比如我做了負(fù)載均衡的實(shí)驗(yàn),對(duì)于不同的擴(kuò)張場(chǎng)景,我們負(fù)載均衡的方差非常少的,可以保證比較好的負(fù)載均衡。在負(fù)載均衡情況下我們做了數(shù)據(jù)牽引力的指標(biāo),以實(shí)現(xiàn)最低的數(shù)據(jù)牽引力,這個(gè)前提是包括所有盤數(shù)據(jù)是有相同數(shù)據(jù)量,負(fù)載是均衡的。
相當(dāng)于負(fù)載均衡的情況下,我們有一個(gè)最低的數(shù)據(jù)擴(kuò)展和遷移的時(shí)間,我們可以保證數(shù)據(jù)遷移時(shí)間是最短的,擴(kuò)展需要花的時(shí)間也是最短的。一般來(lái)說(shuō),像正常擴(kuò)展一個(gè)磁盤,四個(gè)盤擴(kuò)到五個(gè)盤,每個(gè)盤容量一個(gè)TB的話,要花幾十分鐘到一個(gè)小時(shí),另外我們?cè)趯?shí)驗(yàn)當(dāng)中也證明了逐漸增加硬盤的情況下,還能維持整個(gè)高吞吐。
再者針對(duì)RAID6的問(wèn)題,比RAID5更復(fù)雜,因?yàn)樗鼌⑴c雙校驗(yàn),我們的理念和RAID5的方法也類似,就是維持整個(gè)條帶盡可能不變,盡可能少的數(shù)據(jù)做遷移,所以這里面我們實(shí)際上是就維持條帶不變,但是條帶內(nèi)部的數(shù)據(jù)做平移,來(lái)保證每個(gè)條帶的數(shù)據(jù)量是相對(duì)來(lái)說(shuō)比較均衡的。
我們也做了很多相關(guān)的評(píng)估,比如在保證負(fù)載均衡的情況下可以達(dá)到最低的數(shù)據(jù)遷移效率,也可以應(yīng)用在不同的RAID6編碼等應(yīng)用場(chǎng)景。校驗(yàn)修改,可以實(shí)現(xiàn)最低的校驗(yàn)修改數(shù)量。遷移時(shí)間方面我們基本可以達(dá)到最低的。
針對(duì)三盤容的陣列比雙盤更加復(fù)雜一些,這里面我們對(duì)整個(gè)條帶進(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á)到很好的效果。
接下來(lái)是考慮應(yīng)用的情況,相當(dāng)于感知應(yīng)用的數(shù)據(jù)訪問(wèn)情況,我們實(shí)際上是根據(jù)每個(gè)應(yīng)用的冷熱情況,這里面我們寫的表示應(yīng)用訪問(wèn)概率,這時(shí)候我們預(yù)測(cè)一下它的概率,通過(guò)機(jī)器學(xué)習(xí)對(duì)數(shù)據(jù)塊進(jìn)行分類,選擇特定的數(shù)據(jù)塊,不要求每個(gè)盤的數(shù)據(jù)塊數(shù)量相同,但要保證每個(gè)盤數(shù)據(jù)訪問(wèn)的次數(shù)是基本相等的,說(shuō)白了負(fù)載是基本相等,這樣達(dá)到平衡的效率。
最終我們比現(xiàn)有的方法,分別可以減少91.5%和50%的遷移開銷,這是在RAID5當(dāng)中,RAID0也可以保證。這種方法只能保證數(shù)據(jù)的即時(shí)性,而不是達(dá)到絕對(duì),所以我們大概在保證即時(shí)性上,比現(xiàn)有IO大幅降低,在擴(kuò)展時(shí)間上也可以做到大幅度提升。
最后是我們的總結(jié),相當(dāng)于現(xiàn)在的軟件定義存儲(chǔ)對(duì)陣列擴(kuò)展性有很高的需求。傳統(tǒng)的靜態(tài)擴(kuò)展方法難以用適配現(xiàn)在復(fù)雜的環(huán)境當(dāng)中,所以針對(duì)上述問(wèn)題,我們交大團(tuán)隊(duì)對(duì)問(wèn)題產(chǎn)生了深入的研究,在單盤、雙盤、三盤乃至多盤容錯(cuò)陣列中均取得了良好的效果,并且在感知上層應(yīng)用負(fù)載,結(jié)合擴(kuò)展負(fù)載進(jìn)行全局優(yōu)化。針對(duì)大規(guī)模陣列場(chǎng)景提出跨機(jī)柜擴(kuò)展方法,適用于不同糾刪碼場(chǎng)景。
以上就是我的匯報(bào),謝謝大家!