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

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

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

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

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

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

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

當前存儲陣列的擴展難題及解決方案

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

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

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

基于GA的擴展方法,可以提高擴展效率,但是由于紫色校驗塊修改更大,會導致RAID5、RAID6里面,由于所有的校驗要重新進行修改、更新,用的時候導致擴展的時間很長。

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

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

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

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

上海交大團隊提出的新擴展方法

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

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

第二我們結合感知上層的應用變化,有針對3盤容錯陣列。

對跨機柜擴展場景,我們也有新的擴展方法,從學術圈角度來說我們僅僅把它共享給大家,參考。

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

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

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

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

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

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

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

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

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

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

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

以上就是我的匯報,謝謝大家!

分享到

崔歡歡

相關推薦