隨著電子元器件集成度的不斷提高,基于NAND Flash的SSD的容量也不斷增大,fusionIO公司最新產(chǎn)品ioDrive Octal單盤容量已達(dá)5.12 GB,提供6GBps的I/O帶寬,當(dāng)前的SSD已不僅僅局限在嵌入式領(lǐng)域,在大型存儲(chǔ)服務(wù)器和數(shù)據(jù)中心中也得到逐步應(yīng)用,Google、百度等相繼宣布在他們的數(shù)據(jù)中心中使用了SSD作為外部存儲(chǔ)設(shè)備,圣地亞哥的超級(jí)計(jì)算中心(SDSC)在其“Gordon”系統(tǒng)中使用的SSD陣列的容量已經(jīng)達(dá)到256TB。
SSD內(nèi)部的組織結(jié)構(gòu)如圖1所示,為了提高固態(tài)盤的性能和可靠性,通常基于閃存芯片構(gòu)建RAID系統(tǒng)來達(dá)到這個(gè)目的,在一般的SSD中,由于成本所限,通常采用RAIDO結(jié)構(gòu)以增大SSD內(nèi)部閃存芯片之間的并行度;而對(duì)于可靠性要求較高的場合,通常采用RAID5結(jié)構(gòu),比如IBM的DS6700,在單盤SSD中采用RAID5以增強(qiáng)單個(gè)SSD的可靠性,同時(shí),它還采用比一般Flash MLC顆粒有更高可靠性的增強(qiáng)型NAND Flash;在硬件上采用能糾錯(cuò)較多位的ECC芯片;盤與盤之間也采用類似RAID5的結(jié)構(gòu)等一系列技術(shù)來增強(qiáng)系統(tǒng)的可靠性。
圖1 SSD的組織結(jié)構(gòu)圖
從圖1可以看出,閃存控制器與每塊閃存芯片之間都有數(shù)據(jù)通路,直接控制對(duì)每塊芯片的訪問,這種方式能最大程度地發(fā)揮閃存芯片間的并行性,但是由于所有的訪問都要通過控制器,所以控制器會(huì)成為整個(gè)系統(tǒng)的瓶頸,針對(duì)這個(gè)問題,我們提出了一種面向大容量高性能SSD的多層RAID結(jié)構(gòu),稱為MuLe—RAID(Multiple Level RAID),將閃存芯片分成若干個(gè)組(Part),設(shè)置多個(gè)控制器,組內(nèi)由底層閃存控制器管理,該控制器對(duì)組內(nèi)所有的閃存單元進(jìn)行控制,除了實(shí)現(xiàn)RAIDo以外,主要還要實(shí)現(xiàn)FTL功能,包括地址映射、垃圾回收、損耗均衡等,由于每組中的閃存芯片數(shù)有限,所以該控制器的管理不會(huì)太復(fù)雜,組與組之間由上層控制器管理,我們在該控制器中設(shè)計(jì)并實(shí)現(xiàn)了RAID-Wear算法,RAInWear是一種可以容忍一個(gè)組失效的RAID算法,類似RAID5,但是又與傳統(tǒng)的RAID5不同,因?yàn)殚W存有使用壽命限制,在組內(nèi)已經(jīng)有損耗均衡算法來保證組內(nèi)塊與塊之間的損耗均衡,而組之問的損耗均衡無法保證,RAID-Wear對(duì)校驗(yàn)數(shù)據(jù)(parity)分配時(shí)既不像RAID4分配到一個(gè)盤上也不像RAID5均勻地分配到各個(gè)盤上,而是根據(jù)損耗程度采用動(dòng)態(tài)的校驗(yàn)數(shù)據(jù)分配策略,盤的損耗程度由該盤上所有塊的平均擦除次數(shù)來衡量,因?yàn)槊看螌?duì)數(shù)據(jù)的更新都會(huì)導(dǎo)致相對(duì)的檢驗(yàn)信息的重寫,校驗(yàn)數(shù)據(jù)比一般的數(shù)據(jù)信息要承受更多的寫操作,基于此,將損耗越重的組分配越少的校驗(yàn)數(shù)據(jù),損耗越輕的組分配越多的校驗(yàn)數(shù)據(jù)可以達(dá)到損耗均衡的目的,由于各組的損耗狀況從一定程度上反映了該組寫負(fù)載的情況,RAID-Wear這種基于損耗程度分配檢驗(yàn)信息的方式也起到了一定的負(fù)載均衡效果。
1 相關(guān)工作
基于閃存的RAID系統(tǒng)的構(gòu)建模式有兩種:一種是基于SSD的RAID系統(tǒng);另一種是基于閃存芯片的RAID系統(tǒng)。
Mao等人提出的HPDA結(jié)構(gòu)是一種SSD與HDD混合的異構(gòu)RAID結(jié)構(gòu),并增加日志機(jī)構(gòu)的磁盤來緩存寫請(qǐng)求的Work Out技術(shù),相比完全采用SSD的RAID系統(tǒng),HPDA不僅節(jié)約了成本,還改善了整個(gè)RAID系統(tǒng)的性能,但是這種結(jié)構(gòu)仍然無法克服RAID4檢驗(yàn)盤容易成為系統(tǒng)瓶頸的缺點(diǎn),Kadav等人提出了基于SSD的一種新的RAID算法:DifbRAID,它根據(jù)各塊SSD的損耗程度決定校驗(yàn)數(shù)據(jù)分配,避免所有盤達(dá)到較高損耗程度時(shí)而導(dǎo)致較高關(guān)聯(lián)錯(cuò)誤發(fā)生的概率,但是會(huì)導(dǎo)致校驗(yàn)數(shù)據(jù)分配變化時(shí)造成大量的數(shù)據(jù)遷移,并且這種加劇損耗差異的方法并不適用SSD內(nèi)部基于閃存芯片構(gòu)建RAID系統(tǒng),因?yàn)镾SD損壞后還可以替換,而閃存芯片一旦損壞后只能進(jìn)行標(biāo)記而無法替換。
基于閃存芯片的RAID系統(tǒng)也有很多研究。Lee等人提出了FRA(Flash-aware RedundancyArray)方法,由于校驗(yàn)碼的更新延遲是寫請(qǐng)求延遲中的主要部分,所以FRA方法將數(shù)據(jù)寫和校驗(yàn)碼寫兩部分分開,當(dāng)寫請(qǐng)求到達(dá)時(shí),先將要寫入的數(shù)據(jù)寫入到要寫入的位置,等到系統(tǒng)空閑時(shí)再將校驗(yàn)碼寫入,Chang等人提出了一種自平衡的條帶化策略SBSS,該策略利用冗余分配和請(qǐng)求調(diào)度算法來實(shí)現(xiàn)各個(gè)Bank之間的負(fù)載平衡,可以大大減少讀延遲,Soojun等人提出了一種基于閃存芯片的RAID策略以構(gòu)造高性能高可靠的SSD,它每次更新數(shù)據(jù)時(shí)延遲更新檢驗(yàn)信息,這樣多次數(shù)據(jù)更新只用一次校驗(yàn)數(shù)據(jù)的更新,減少了校驗(yàn)數(shù)據(jù)頻繁更新的開銷,但是這種策略只是在數(shù)據(jù)更新的I/O過程中進(jìn)行優(yōu)化,并沒有對(duì)算法本身進(jìn)行改進(jìn)。
2 MuLe-RAID設(shè)計(jì)
基于磁盤系統(tǒng)的傳統(tǒng)RAID策略可以直接用來構(gòu)建基于閃存芯片的RAID存儲(chǔ)系統(tǒng),但是無論采用哪種方式,閃存控制器需要管理所有的閃存芯片,一旦芯片數(shù)目增多后會(huì)導(dǎo)致閃存控制器成為瓶頸,而且閃存轉(zhuǎn)換層管理的芯片數(shù)目變多后,各個(gè)模塊包括地址映射、垃圾回收、損耗均衡等的復(fù)雜性都變高,針對(duì)這個(gè)問題,我們提出了基于閃存芯片的層次化RAID系統(tǒng)——MuLe_RAID。
2.1體系結(jié)構(gòu)設(shè)計(jì)
MuLe-RAID的體系結(jié)構(gòu)如圖2所示,將控制器分布式地從上至下劃分為第1層和第2層,閃存芯片分成若干個(gè)組,稱為Part,Part內(nèi)部的閃存芯片由底層閃存控制器管理,連接并控制各個(gè)Part的控制器為上層RAID控制器,該層控制器的管理單元是Part,各Part類似于傳統(tǒng)磁盤陣列系統(tǒng)中獨(dú)立的磁盤,分布式的控制器結(jié)構(gòu)減輕了單一RAID控制器的瓶頸作用,增寬了數(shù)據(jù)通路,有效提高了整個(gè)系統(tǒng)的性能。
圖2 MuLe-RAID的體系結(jié)構(gòu)
底層的控制器與一個(gè)普通SSD中的閃存控制器幾乎沒什么區(qū)別,需要實(shí)現(xiàn)完整的閃存轉(zhuǎn)換層(FTL),包括地址映射、垃圾回收、損耗均衡等重要模塊,為了支持并行,該控制器還需要實(shí)現(xiàn)RAID功能,為降低管理的復(fù)雜度,一般不用有冗余的RAID策略,通常采用RAID0即可,在上層的RAID控制器中,為了增強(qiáng)可靠性,采用帶有冗余的RAID策略,最先想到的自然是RAID5,RAID5檢驗(yàn)數(shù)據(jù)完全均勻地分配在各個(gè)盤上,是否可以讓各個(gè)盤之間損耗均衡呢,我們在SSD模擬器上““實(shí)現(xiàn)了軟RAID5,運(yùn)行不同的trace,然后查看各個(gè)SSD上的損耗狀況,如圖3所示,從圖3我們可以看出,在某些trace下,由于訪問某些數(shù)據(jù)過于集中,RAID5也不能保證各個(gè)設(shè)備之間的損耗均衡,甚至有時(shí)還會(huì)有較大差異。
圖3采用RAlD5機(jī)制的塊擦除次數(shù)
為了使各個(gè)Part之間損耗均衡,我們在上層RAID控制器中采用基于損耗進(jìn)行檢驗(yàn)信息分配的RAID算法,稱為RAID-Wear,它與RAID-5的區(qū)別是,它的校驗(yàn)數(shù)據(jù)不是在各個(gè)Part之間完全平均地分配,而是由各個(gè)Part的損耗程度來決定分配比例,具體如何計(jì)算分配比例會(huì)在2,2節(jié)介紹。
2.2 RAID-Wear數(shù)據(jù)布局
RAID-Wear如果采用Round robin的布局方式,其布局方式如圖4所示,將SSD中的所有閃存芯片分成N組,用組中所有芯片的平均擦除次數(shù)an代表該組的損耗程度,用一個(gè)互質(zhì)N元組(a1,a2,...,an)來代表各組損耗程度的比例關(guān)系,用該N元組的方差s來衡量組與組之間的損耗差異,我們?yōu)椴町愒O(shè)定一個(gè)臨界值CA,當(dāng)S>CA時(shí),調(diào)用校驗(yàn)數(shù)據(jù)重分配策略,根據(jù)損耗情況制定新的校驗(yàn)數(shù)據(jù)
圖4 RAID-Wear的Round—robin布局
分配比例,各個(gè)盤上分配的檢驗(yàn)信息比例關(guān)系同樣用一個(gè)N元組(P1,P2,...,Pn)來表示,計(jì)算(P1,P2,...,Pn)的過程如下:1)將a1,a2,...,an。按照降序排列;2)Pk(0<k≤n)等于前一步排序好的第k個(gè)年齡值的倒數(shù)。
我們通過圖4的演變過程來簡單說明RAIDWear動(dòng)態(tài)檢驗(yàn)數(shù)據(jù)分配策略,最開始所有設(shè)備都是新的,所以損耗程度比為(1,1,1,1),如圖4(a)所示,根據(jù)上一段所說的檢驗(yàn)信息分配比例的計(jì)算方法,可以得到校驗(yàn)數(shù)據(jù)分配的比例也為(1,1,1,1),運(yùn)行一段時(shí)間后,各個(gè)Part之間的損耗程度已經(jīng)出現(xiàn)差異,假設(shè)各個(gè)Part之問的年齡比為(3,3,3,1),計(jì)算其方差為3,假設(shè)該值已經(jīng)超出了我們設(shè)定的臨界值,那么檢驗(yàn)信息需要重分布,圖3(b)給出了根據(jù)(3,3,3,1)計(jì)算出的新的檢驗(yàn)信息分配比例為(1,1,1,3),又經(jīng)過一段時(shí)間的運(yùn)行,各個(gè)Part之間的年齡比為(2,2,1,1),計(jì)算其方差為1,與上一次相比,年齡差異已經(jīng)縮小,假設(shè)該值仍然超過我們設(shè)定的臨界值,圖4(c)給出了根據(jù)該年齡比計(jì)算出的新的檢驗(yàn)信息比的數(shù)據(jù)布局。
圖4的數(shù)據(jù)布局采用的是傳統(tǒng)RAID的Roundrobin布局,這種數(shù)據(jù)布局方式的好處是尋址容易,但是一旦校驗(yàn)數(shù)據(jù)的比例發(fā)生變化,需要大量的數(shù)據(jù)遷移,會(huì)嚴(yán)重影響系統(tǒng)的性能,圖5給出了改進(jìn)的數(shù)據(jù)布局方式,采用這種新的數(shù)據(jù)布局方式后,每次檢驗(yàn)信息重分布時(shí),只用交換部分?jǐn)?shù)據(jù)與校驗(yàn)數(shù)據(jù)所在盤的位置即可,遷移數(shù)據(jù)量大大減少,采用這種布局方式的校驗(yàn)數(shù)據(jù)分布過程如下所示:
圖5 RAIDWear的改進(jìn)型數(shù)據(jù)布局
1)計(jì)算區(qū)域值,區(qū)域值是指上一次計(jì)算的區(qū)域值與本次制定的檢驗(yàn)信息分配比例N元組中各個(gè)元素之和的最小公倍數(shù),第1個(gè)區(qū)域值等于最開始給出的檢驗(yàn)信息分配比例N元組中各個(gè)元素的和,從圖4(a)到圖4(b),我們可以計(jì)算出區(qū)域值為12,它等于(1,1,1,1)之和與(1,1,1,3)之和的最小公倍數(shù)。
2)按照區(qū)域值放大檢驗(yàn)信息分配比例N元組中各元素的值使得個(gè)元素之和等于區(qū)域值,所以圖4(a)中(1,1,1,1)變?yōu)閳D5(a)中的(3,3,3,3),圖4(b)中的(1,l,1,3)變?yōu)閳D5(b)中的(2,2,2,6)。
3)按照新的檢驗(yàn)信息分配比例在每個(gè)區(qū)域中交換普通數(shù)據(jù)與校驗(yàn)數(shù)據(jù)。
2.3尋址方式管理
實(shí)現(xiàn)MuLe—RAID的關(guān)鍵在于在上層RAID控制器中實(shí)現(xiàn)RAInwear的邏輯地址到物理地址的映射,由于RAID-Wear算法采用的是動(dòng)態(tài)檢驗(yàn)信息分布,在不同的時(shí)間段有不同的校驗(yàn)數(shù)據(jù)比例,如果采用圖3的數(shù)據(jù)布局方式,尋址函數(shù)(這里的尋址都是指檢驗(yàn)數(shù)據(jù)重分布完成以后對(duì)訪問數(shù)據(jù)的尋址)如下所示:
3 實(shí)驗(yàn)評(píng)測
在實(shí)驗(yàn)部分,我們比較并分析了MuLe—RAID和其他RAID系統(tǒng)的性能和損耗均衡,我們構(gòu)建了一個(gè)SSD的模擬器,在軟件層實(shí)現(xiàn)了MuLe—RAID和其他RAID策略,并且通過調(diào)整參數(shù)可以調(diào)整RAID的組織結(jié)構(gòu),比如MuLe-RAID中的Part數(shù),每個(gè)Part中的芯片數(shù)等,我們的trace來源于這些trace是從PC機(jī)和商用服務(wù)器的真實(shí)應(yīng)用環(huán)境中搜集得到的,將trace運(yùn)行在不同RAID策略下的模擬器上,得到不同RAID策略的吞吐率,運(yùn)行完trace后,通過查看SSD模擬器上各塊的擦除次數(shù)可以計(jì)算出損耗差異水平以此衡量不同RAID策略的損耗均衡效果。
3.1性能評(píng)測
通過運(yùn)行不同的trace,測試各種RAID策略下的吞吐率,我們比較了不同RAID策略的性能,如圖6所示,圖6中的RAID0和RAID5是傳統(tǒng)的RAID策略,RAID0+RAID5表示的是層次化RAlD策略,與MuLe—RAID的區(qū)別是上層RAID控制器采用RAID5,而不是RAID-Wear算法。
圖6 不同RAID策略的性能比較
通過圖6可以看出,在閃存系統(tǒng)的規(guī)模比較小時(shí),單層RAID結(jié)構(gòu)——RAIDo和RAID5——的性能有較大優(yōu)勢,吞吐量幾乎可以比層次化結(jié)構(gòu)高出一倍,但是隨著存儲(chǔ)規(guī)模的增大,單層的RAID系統(tǒng)由于需要管理的閃存數(shù)目太多,單一的控制器很容易成為瓶頸,所以采用了層次化RAID的策略一RAID0+RAID5和MuLe—RAID的性能逐步超過單層RAID,特別是當(dāng)閃存塊數(shù)達(dá)到64時(shí),單層RAID的性能幾乎已經(jīng)不再提升,而層次化RAID策略的性能卻還是能有顯著增高,圖6還可以反映出RAID5的性能通常要比RAID0要差,這是由于RAID5有冗余來提高可靠性,而RAID0的所有閃存都用作數(shù)據(jù)盤來并行提高性能,MuLe-RAID由于在RAID-Wear需要進(jìn)行檢驗(yàn)數(shù)據(jù)的重分布,會(huì)產(chǎn)生額外開銷,所以性能相比RAID0+RAI口5要低一些,但是其在一定程度上,起到了負(fù)載均衡的效果,所以在某些trace下,低的并不多。
3.2損耗均衡評(píng)測
在運(yùn)行完不同的trace后,我們查看了各個(gè)塊的損耗情況,計(jì)算出不同策略在不同閃存系統(tǒng)規(guī)模下的損耗程度標(biāo)準(zhǔn)差,如圖7所示,圖7中的縱坐標(biāo)表示所有閃存塊數(shù)損耗值的標(biāo)準(zhǔn)差,用該標(biāo)準(zhǔn)差的值可以衡量損耗是否均衡,標(biāo)準(zhǔn)差越大說明損耗越不均衡,越小說明損耗越均衡。
圖7 不同RAID策略的損耗均衡效果比
通過圖7可以看出單層RAID策略,即RAID-0和RAID-5的損耗效果最好,因?yàn)樗鼈儙в袎K級(jí)別的損耗均衡機(jī)制,對(duì)所有閃存芯片上的塊進(jìn)行損耗均衡,層次化RAID策略,即RAIDo+RAID-5和MuLe—RAID底層閃存控制器都采用了塊級(jí)別的損耗均衡,而RAID-0+RAID-5的Part級(jí)別沒有損耗均衡機(jī)制,只是簡單地對(duì)檢驗(yàn)信息進(jìn)行平均分配,在某些應(yīng)用下,由于某些Part的檢驗(yàn)信息頻繁更新,所以損耗均衡的效果較差,特別當(dāng)閃存規(guī)模增大時(shí),這種不均衡的情況會(huì)更加明顯,如圖6(c)(d)所示,但是MuLe—RAID在上層RAlD控制器中采用了基于損耗進(jìn)行檢驗(yàn)信息分配的RAID-Wear策略,所以損耗均衡的效果即使隨著存儲(chǔ)規(guī)模的增大也不會(huì)有太大的變化,基本可以達(dá)到單層RAlD策略的塊級(jí)別損耗均衡效果。
綜合圖6、圖7以及上面的分析可以看出,在大容量SSD中,層次化RAID策略的性能比單層RAID策略高很多,但是如果單純的只是將RAID-0和RAID-5綜合起來,損耗均衡的效果在一些應(yīng)用中表現(xiàn)得不夠理想,而將RAID-0和RAID-Wear綜合起來的MuLe—RAID策略幾乎能達(dá)到采用單層RAID策略的損耗均衡效果,但是性能卻是多層RAID策略的性能——幾乎與RAID-0+RAID-5策略持平,比典型單層RAID策略高出30%左右。
4 結(jié)束語
本文面向高容量SSD,提出了一種基于閃存芯片的層次化RAID——MuLe—RAID,采用多控制器設(shè)置,并在控制器中實(shí)現(xiàn)了不同的RAID算法和損耗均衡策略,減輕了單層RAID結(jié)構(gòu)的控制器瓶頸,使性能有了顯著提高。
我們已經(jīng)有了大容量SSD的原型系統(tǒng)——P3Stor,下階段的工作有兩個(gè)方向:一是將MuLe-RAID添加并實(shí)現(xiàn)到現(xiàn)有的SSD原型系統(tǒng)中;另一個(gè)方向是研究基于SSD的RAID算法,并直接通過原型系統(tǒng)進(jìn)行驗(yàn)證。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.hanmeixuan.com/
本文標(biāo)題:MuLe-RAID:面向大容量高性能SSD的層次化RAID
本文網(wǎng)址:http://www.hanmeixuan.com/html/support/1112189204.html