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