李祥楠 張廣艷 李 強 鄭緯民
1(清華大學計算機科學與技術系 北京 100084)2 (吉林大學計算機科學與技術學院 長春 130012)
?
固態盤陣列構建方法研究綜述
李祥楠1,2張廣艷1李強2鄭緯民1
1(清華大學計算機科學與技術系北京100084)2(吉林大學計算機科學與技術學院長春130012)
(lixiangnan101@163.com)
單個固態盤存在隨機寫性能較差和擦寫次數有限等缺陷,使用廉價盤冗余陣列(redundant arrays of inexpensive disks, RAID)技術將多塊固態盤組織在一起有助于滿足存儲系統的高可靠、大容量、高性能的要求.然而,將RAID算法簡單應用于固態盤陣列會遇到一些問題.首先分析了基于Flash的固態盤和RAID技術存在的缺陷,選取性能、可靠性和價格作為陣列構建方法的評價標準,并將隨機寫、小寫、垃圾回收、負載均衡、擦除次數、磨損均衡、冗余度等問題作為分析重點;然后,從固態盤和Flash芯片2種構建粒度出發,分別論述了不同的構建方法并分析了各自的優缺點;最后,總結了不同構建方法并指出未來可能的研究方向.
固態盤;存儲陣列;使用壽命;性能;可靠性
以磁盤為主的外部存儲難以滿足當前應用的存儲需求,容易成為整個計算機系統的性能瓶頸.Flash固態盤的出現為存儲系統提供了新的選擇.然而,固態盤容量的提升是以降低可靠性為代價的,采用多層芯片技術使得多比特錯誤開始出現,從而使修復單比特錯誤的糾錯碼不再有效[1].除此之外,固態盤也存在著先天的介質損耗和寫性能較差[2]問題,單塊固態盤難以滿足存儲系統高性能、高可靠性的要求.利用廉價盤冗余陣列(redundant arrays of inexpensive disks, RAID)[3]技術構建閃存存儲系統可以在增大系統容量、提高系統性能的同時增強系統的可靠性,但是其也存在著小寫性能差的缺陷.因為固態盤的不同特性,并不能將RAID技術簡單地應用到固態盤上,必須對固態盤陣列的數據布局進行優化,充分挖掘固態盤和RAID技術的優勢,彌補相互的不足,以達到性能的最優[4].
已有多種利用固態盤構建陣列的方法,典型的有:Diff-RAID和WeLe-RAID通過調整校驗信息在陣列中的分布來實現吞吐量和可靠性之間的平衡;I-CASH通過將1個固態盤(solid state disk, SSD)和HDD智能耦合,利用內容局部性將大多數IO操作轉化成對SSD的讀操作來提高系統的吞吐量;部分校驗延遲更新通過每次寫入數據只計算部分校驗數據,并將其存在部分校驗緩存中以減少校驗信息更新.這些方法只在某一兩方面優化了系統的性能,并沒有全面綜合地考慮RAID策略應用在固態盤時所造成的隨機寫、小寫、垃圾回收、有限壽命等問題.因此,如何構建大規模、高性能、高可靠的存儲系統是我們需要進一步討論的問題.
本文首先深入分析固態盤的特性和RAID技術,選取性能、可靠性、價格為構建Flash陣列的評價標準;然后根據構建粒度的不同,分別從固態盤和Flash芯片2種陣列構建模式深入分析了現有的固態盤陣列的關鍵技術,并指出了各種方法的優缺點;之后通過對比各個陣列構建方法提出了幾點觀察,闡述了陣列構建技術所面臨的挑戰,并指出未來可能的研究方向.
通過分析Flash固態盤和RAID技術存在的技術缺陷,本節給出陣列構建方法的評價標準.
1.1固態盤存在的問題
固態盤是由Flash芯片作為存儲介質構建成的數據存儲設備,提供與傳統磁盤相同的SATA或SAS接口、功能特征及操作方式.固態盤隨著容量的提升和價格的降低,其相對于傳統磁盤的高存取速度、低能耗、抗震性等優勢越來越明顯.
但是,固態盤還不能完全取代傳統磁盤,因為它主要存在以下4個問題:
1) 隨機寫性能差.固態盤采用異地更新策略,垃圾回收過程產生大量合并,導致固態盤隨機寫性能較差.
2) 擦除次數有限.Flash本身有限的擦除次數,導致固態盤壽命有限.
3) 磨損不均衡.閃存寫入和擦除的不均衡[5-7]會使閃存的不同部位磨損程度各異,當個別部位提前達到磨損界限時會使數據可靠性下降.
4) 垃圾回收[8-10]頻繁.固態盤垃圾回收需要消耗較多IO資源.另外,當固態盤中某個芯片正在執行垃圾回收操作時,該芯片接收到的讀寫請求都將被掛起,直到垃圾回收完成[11].因此垃圾回收操作的效率直接影響固態盤存儲系統的性能[12].
1.2RAID技術存在的問題
RAID技術的基本思想是通過數據在多塊硬盤之間進行條帶化來提高數據存取速度,通過存儲校驗信息來提高數據可靠性.大多數RAID技術研究集中在RAID-456上,其主要有以下3個問題:
2) 負載不均衡.RAID-4結構中,校驗信息集中在1塊盤上,校驗盤容易成為寫性能瓶頸;RAID-56雖然將校驗信息分布到各盤,但是由于數據的局部性,如果有些負載對于某個條帶讀寫很頻繁,同樣會導致某塊盤成為性能瓶頸.
3) 冗余度固定.對于傳統的RAID技術,RAID級別確定之后其冗余度就固定了.隨著系統使用時間的增加,盤出錯的概率越來越大.固定的冗余度很難使系統不同時期達到相同的可靠級別.
1.3提出評價標準
如果簡單地將RAID策略應用到固態盤上,校驗信息的頻繁更新會導致固態盤的介質損耗更加嚴重,降低固態盤的使用壽命.加上固態盤的隨機寫性能較差,使得固態盤陣列的隨機寫、小寫性能更差.同時,垃圾回收的頻率也會增加,從而影響性能.
隨機寫、小寫、垃圾回收、負載均衡會影響系統的性能;磨損均衡、擦除次數會影響系統的使用壽命,不同的冗余度也會帶來不同的可靠級別,從而影響系統的可靠性;構建固態盤陣列需要多塊固態盤,固態盤存在諸多優于磁盤的優點,但是其價格卻比磁盤高很多.
因此,我們選取性能、可靠性、價格這3點作為固態盤陣列構建方法的評價標準.為了在降低價格的同時提高系統的可靠性、性能和使用壽命,大多數針對固態盤陣列的研究都集中在實現固態盤的磨損均衡,減少固態盤的擦除次數,不同時期提供不同的冗余度,優化固態盤隨機寫性能、垃圾回收性能和提高RAID技術的小寫性能、實現其負載均衡上.
SSD提供磁盤訪問接口,己有的面向磁盤開發的軟件都可以直接應用到SSD上.在SSD層面應用RAID機制來構建閃存存儲系統就是將多個SSD組合成冗余陣列,用通常的RAID控制器和總線連接,直接把磁盤替換成SSD[13].
2.1校驗數據差異分布陣列Diff-RAID
由于每次數據的寫操作都要更新對應的校驗信息,所以一塊固態盤上校驗信息所占的比例越高,其老化速度也越快.Balakrishnan等人[14]提出Diff-RAID,主要通過在各盤之間進行校驗數據的差異化分布,來實現不同固態盤之間不同的老化速度.當某個固態盤接近擦除次數限制時,將其及時更換成新的固態盤.此時,再按照陣列中各盤的老化程度重新分配校驗信息,來重新實現不同老化程度.
Diff-RAID通過調整校驗信息在多塊固態盤之間的分配比例來實現可靠性和性能之間的平衡,相當于RAID-4和RAID-5之間的折中.它緩解了RAID-4系統中校驗信息集中存儲在單塊固態盤上使之容易成為系統性能瓶頸的問題,降低了RAID-5系統中1塊固態盤出現故障時第2個固態盤很快出現故障的概率,提高了系統可靠性.
但是,就整個固態盤陣列而言,Diff-RAID并沒有減少校驗數據更新引起的總的固態盤擦除次數,而且,在使用期間會產生多次固態盤替換操作而降低陣列的性能.此外,Diff-RAID并沒有解決固態盤陣列的隨機寫、小寫性能較差等問題.
2.2磨損均衡陣列WeLe-RAID
RAID-5系統主要靠平衡各個盤上校驗塊的個數來實現固態盤之間的磨損均衡.一旦一些工作負載對某塊盤上的校驗信息所對應的數據塊頻繁存取時,該盤由于校驗信息的頻繁更新將比其他盤老化得更快.
Du等人[15]提出磨損均衡陣列WeLe-RAID.正常情況下RAID控制器管理活躍設備組.當整個系統達到壽命限度時,遷移控制器將數據從活躍設備組遷移到準備設備組.從而,準備設備組成為新的活躍設備組,并且新的設備組被用作準備組.此外,WeLe-RAID用老化程度驅動的校驗信息分布來優化數據布局.
與Diff-RAID相反,WeLe-RAID以SSD的使用壽命為參數動態調整校驗信息的分布,實現RAID范圍內的磨損均衡.使得固態盤組之間同速變老,然后同步替換,延長了陣列的壽命.WeLe-RAID在RAID系統的整個生命周期內,替換操作出現頻率很低,但是它并沒有解決固態盤陣列的隨機寫、小寫性能低的問題.
2.3混合盤陣列HPDA

Fig. 1 The architecture of HPDA[4].圖1 HPDA的體系結構[4]
由于校驗信息的頻繁更新,將RAID技術應用在固態盤上會加劇固態盤的損耗.同時,固態盤隨機寫性能比較差,導致固態盤陣列的隨機小寫性能更差.Mao等人[4]提出一種混合盤陣列HPDA.如圖1所示,多個SSD和1個HDD組成1個RAID-4結構.其中,SSD存儲數據信息,HDD存儲校驗信息.同時再增加1塊磁盤,與校驗盤的剩余空間組成1個RAID-1鏡像,并以日志寫方式組織,用作數據緩存空間.
通過將磁盤用作校驗盤,HPDA消除了由于校驗信息頻繁更新導致的固態盤介質損耗問題,延長了陣列的使用壽命.以日志寫方式組織鏡像緩存空間,用于緩存隨機寫或小寫請求,優化了陣列的寫性能.但是,由于校驗盤和鏡像使用同一塊磁盤,該磁盤上的數據訪問容易出現上下抖動,從而導致讀寫性能下降.另外,當進行在線恢復時,共享的磁盤需要同時響應用戶的讀寫請求和恢復數據所需要的讀請求,使得磁盤上下來回尋道,導致恢復時間和用戶響應延遲明顯變長.
2.4支持連續數據保護的陣列HerpRap
連續數據保護機制(continuous data protection, CDP)能夠持續捕獲寫入操作的歷史,所以能夠恢復存儲狀態到任何一個之前保存的時間點.Zeng等人[16]提出一種結合RAID和CDP技術的陣列HerpRap.HerpRap是HPDA的擴展,它增加了2個功能模塊(如圖2所示):CDP管理模塊和數據重建模塊.CDP管理模塊負責管理CDP區域,維護數據塊的訪問歷史信息.CDP區域由多個HDD組成,但每次只有1個HDD是活躍的,目標是節省能耗.數據重建模塊包括1個用來恢復數據的恢復進程和1個用來追蹤CDP區域塊日志的追蹤進程.
HerpRap擁有HPDA的優點,同時具備以塊級別追蹤數據并且能夠恢復數據到任意時間點.但是,它同時也具備HPDA所有的缺點,存儲校驗信息的HDD會出現頻繁的上下尋道抖動的情況.另外,CDP區域的HDD失效,數據將會丟失,導致系統可靠性下降.

Fig. 2 The architecture of HerpRap[16].圖2 HerpRap的體系結構[16]
2.5混合盤智能耦合陣列I-CASH
數據存儲中存在許多彼此相似的數據塊,增量編碼的存儲方式可以消除數據塊之間的冗余[17-18].另外,在許多數據密集型應用中,由于強大的內容局部性,在1次典型的數據塊寫操作中僅僅5%~20%的數據被改變[19-20],這被稱為數據的內容局部性.

Fig. 3 The architecture of I-CASH [21].圖3 I-CASH的體系結構[21]
I-CASH使得讀操作主要發生在SSD上,寫操作主要發生在HDD上.許多本應在HDD上的機械尋道-旋轉-傳輸都轉換成對SSD的讀操作和CPU的計算操作,提高了性能.同時,也減少了對SSD的寫入次數,延長了SSD的使用壽命.但是,I-CASH沒有數據冗余和校驗機制,當數據發生錯誤或者丟失時,將沒有辦法恢復丟失的數據.
2.6垃圾回收感知的陣列GS-RAIS
當固態盤中某個芯片正在進行垃圾回收操作時,該芯片接收到的讀寫請求都將被掛起,直到垃圾回收完成[11].因此垃圾回收的執行效率直接影響整個固態盤性能.
吳素貞等人[12]提出一種垃圾回收感知的固態盤陣列GC-RAIS.如圖4所示,GC-RAIS結構由若干個保存數據或校驗的固態盤和1個熱備固態盤組成.當某塊固態盤正在執行垃圾回收時,發往該盤的寫請求被重定向到熱備盤上,并在映射表中修改相應的映射信息.對于發往該盤的讀請求,首先檢查映射表以判斷讀取數據的存儲位置.如果在熱備盤上,則由熱備盤響應該讀請求;否則,發送到該盤上的讀請求被替換為發往系統中其他固態盤上的讀請求,然后使用異或計算得到所需的數據并返回給用戶.

Fig. 4 The architecture of GC-RAIS[12].圖4 GC-RAIS的體系結構[12]
GC-RAIS充分利用固態盤的高效隨機讀的特性,降低垃圾回收操作對固態盤陣列系統性能的負面影響.但是,并未對固態盤陣列固有的小寫性能差、隨機寫性能差、有限壽命等問題進行改善.
2.7圖計算專用的存儲陣列FlashGraph
由于圖數據的非結構化特征,圖計算會產生很多隨機讀寫操作.GraphChi,X-Stream等單機圖計算系統對圖數據的存儲進行劃分和布局優化來提高圖計算的性能,但是大量的磁盤IO仍是其性能瓶頸.Zheng等人[22]提出了FlashGraph,使用SSD陣列來優化圖計算的IO性能.FlashGraph使用Semi-External Memory的計算模式,計算時把所有頂點信息加載進DRAM,而所有邊信息則從SSD上動態讀取.由于圖計算只會對頂點信息進行修改而對邊的信息只是讀取,所以可以顯著減少對SSD的磨損,還可以保持很好的擴展性.
為了充分利用SSD陣列的高帶寬,FlashGraph專門設計了用戶態文件系統SAFS,如圖5所示.在圖引擎和用戶態文件系統層對IO進行合并來減少IO的數量,并增加IO的順序性.FlashGraph在用戶態實現簡單的 Page Cache,以減小內容切換帶來的內存拷貝.同時,因為緩存可以被應用感知,FlashGraph根據任務上下文來提高緩存命中率.另外,Flash-Graph提供的編程模型使得每個計算任務可以將部分計算下放到用戶空間文件系統中執行,完全利用用戶態的Page Cache,避免了用戶空間的2次拷貝.

Fig. 5 The architecture of FlashGraph[22].圖5 FlashGraph的體系結構[22]
FlashGraph可以根據具體圖形算法來選擇性地訪問邊數據以減少數據訪問,通過合并IO請求增加了IO帶寬,減少了SSD的磨損.FlashGraph是利用SSD陣列來提高圖計算的性能,為固態盤陣列的使用提供了有益參考.
多Flash芯片構建盤內RAID系統需要將RAID機制實現在閃存轉換層(flash translation layer, FTL)[23-24].在FTL中,除了實現RAID功能外,還需實現地址映射、垃圾回收、磨損均衡等傳統功能.由于這些功能并非完全獨立,因此在設計中需要綜合考慮[13].
3.1閃存感知的冗余陣列FRA
基于RAID的方法均以寫入性能的犧牲換取可靠性.例如RAID-5,每次小的隨機寫入操作均會帶來校驗數據的更新,造成寫請求延遲的增加.Lee等人[25]提出了閃存感知的冗余陣列(flash-aware redundancy array, FRA).如圖6所示,FRA將每個芯片上20%的塊分配作為校驗區,位于不同芯片上的用戶數據和校驗數據形成條帶.FRA利用2次盤存取間的空閑時間比盤本身的存取時間長的特點,將校驗信息的更新延遲至空閑時間執行.在執行寫操作時,首先將用戶數據寫到閃存存儲器中的1個日志塊中,然后建立雙頁映射表,標記校驗碼是否更新.在空閑時間內,FRA查找日志映射表,并將校驗信息寫入冗余區域.

Fig. 6 The architecture of FRA[25].圖6 FRA的整體組織結構[25]

Fig. 7 The architecture of partial parity updating[1].圖7 部分校驗延遲更新技術的整體結構[1]
FRA延遲校驗更新的方式,優化了小寫性能,保證校驗信息的更新不會出現在讀寫關鍵路徑上,寫性能幾乎等于沒有采用冗余的方案,同時FRA減少了校驗信息的寫入次數,延長了固態盤的使用壽命.但是,這是以犧牲數據可靠性為代價的,在新的校驗信息提交之前,如果新的數據發生錯誤或丟失,FRA將無法恢復.此外,它并未優化固態盤陣列的隨機寫性能.
3.2部分校驗延遲更新技術
RAID-5每次小寫請求會導致2次讀和2次寫操作.當RAID-5應用在固態盤時,由于閃存的寫放大問題,將導致性能下降得更加明顯.Im和Shin[1]提出部分校驗延遲更新技術.如圖7所示,每次寫入數據不會更新整個校驗信息塊,而只計算修改數據部分的校驗并將其存儲在NVRAM組成的部分校驗緩存(partial parity cache, PPC)中.延遲更新校驗信息直到PPC認為有必要提交或刪除1個條目.數據的讀取或寫入請求到達控制器時,首先查詢PPC,然后根據數據是否在PPC中執行其讀寫請求.
對于1次小寫請求,如果數據是第1次寫入或者還未被更新過,需要1次正常的寫入操作;如果數據曾經被更新過,需要1次舊數據的讀取操作和1次新數據的寫入操作(不考慮在PPC中的讀寫操作).相對于原來的1次讀和1次寫操作,該技術減少了小寫請求帶來的附加操作,通過把校驗信息存儲在PPC中并且延遲更新,減少了校驗信息的頻繁更新對固態盤的寫入次數,延長了固態盤的使用壽命,提高了可靠性.垃圾回收策略綜合考慮數據遷移和提交代價,減少了垃圾回收的開銷,但是并未對芯片陣列隨機寫、負載均衡等問題進行優化.
3.3軟件定義閃存SDF
在百度數據中心,僅僅40%或者更少的SSD原始帶寬能被存儲系統的上層應用所利用.另外,由于需要預留空間來容納隨機寫入,一個SSD內只有50%~70%的空間能夠被用來存儲用戶數據.如何最有效地利用SSD的帶寬和容量是個很大的挑戰.
Ouyang等人[26]提出了軟件定義閃存(software-defined flash, SDF),如圖8所示,SDF擁有與傳統SSD完全不同的架構和設計,主要體現在以下3個方面:1)底層Flash通道暴露給上層軟件,每個Flash通道具有1個獨立的FTL控制器.2)SDF的軟件棧消除了傳統的Linux文件系統和IO棧,只保留最底層的硬件驅動和輕量級用戶態文件系統,降低了IO請求延時.SDF把持久化寫的粒度設置成NAND的擦除塊大小,因此不需要預留冗余空間,也不需要垃圾回收,消除了寫放大缺陷.3)因為上層存儲系統已對數據進行了多副本或糾刪碼等冗余保護,SDF取消通道間的校驗,把之前存放校驗數據的通道用來存放數據,最大化利用數據存儲空間.

Fig. 8 The architectures of conventional SSD and SDF[26].圖8 傳統SSD和SDF的結構[26]
SDF通過軟硬件結合的方法保證了系統可靠性,并提高了空間利用率.通過聚合小寫成大寫提高了寫性能,消除了寫擴張從而延長了SSD的使用壽命.
3.4壽命感知的可靠性方法
傳統的RAID技術不能動態調整條帶單元大小或者重新排列條帶組.對于閃存來說,隨著寫入、擦除(PE)次數的增加,位錯誤率將會增加[27-28].Lee等人[29]提出一種壽命感知的可靠性方法.如圖9所示,所提方法的整體結構由多個閃存芯片組成RAID-5結構,分為數據區和日志區2部分.在SSD早期使用階段,條帶組的大小可能是芯片數目的4倍或者8倍.隨著PE周期地增加,條帶組的大小可以減少到芯片數目大小或者更少.動態調整條帶大小使得Flash芯片的整個生命周期有相同的可靠性級別.
對一個條帶組的寫請求,如果其校驗塊在數據區,則首先無效數據區的整個校驗塊,并在少量的存儲級內存(storage class memory,SCM)中存儲新的校驗塊(如圖9中①),直到整個校驗塊都被更新或者SCM中沒有空閑塊時,將校驗信息更新到數據區(如圖9中②)).在日志區,當1個相應的日志塊充滿之后,將其校驗頁寫入SCM中(如圖9中③).

Fig. 9 The architecture of the life span-aware reliability scheme[29].圖9 壽命感知可靠性方法的整體結構[29]
壽命感知的可靠性方法通過動態調整冗余度使固態盤在整個生命周期都有相同級別的可靠性,用SCM暫存校驗信息提高了小寫性能,通過減少對SSD的擦除次數延長了其使用壽命.雖然在SSD使用初期,位錯誤率很低,但當條帶大小大于芯片數目時,同一個條帶上依然可能發生多個錯誤,這將導致數據無法恢復.該方法也未對固態盤陣列的隨機寫性能進行優化.

Fig. 10 Write scheme for eSAP-RAID[30].圖10 eSAP-RAID的寫策略[30]
3.5彈性條帶化陣列eSAP-RAID
傳統的RAID結構在計算校驗信息時需要讀操作.特定的頁被頻繁更新會導致它和校驗信息所在的芯片被頻繁更新,使其相對于其他芯片磨損得更加嚴重.Kim等人[30]提出彈性條帶化陣列eSAP-RAID,由多個閃存芯片組成RAID-5結構,相同條帶中的每個單元有相同的物理塊號.eSAP-RAID解放傳統RAID-5的條帶數據的邏輯編址限制,1個條帶是由順序到達的多個寫請求的數據內容組成.
寫入新的信息之后,控制器無效掉舊的數據而不需要讀舊的頁來計算校驗信息,如圖10(a)所示.eSAP-RAID采用可變條帶模式為不是滿條帶的寫請求建立部分條帶,如圖10(b)所示.在垃圾回收時,選擇1個包含無效頁最多的動態條帶組(dynamic stripe group, DSG),將其中的有效頁復制到新的DSG中,然后重新計算有效頁的校驗信息,最后擦除原來的DSG供以后使用.
eSAP-RAID通過動態調整條帶大小且忽略數據邏輯地址的方法,減少了計算校驗信息時的讀操作.通過將隨機寫轉換成順序寫,所有芯片被均衡寫入,提高了系統性能并延長了芯片使用壽命.eSAP-RAID的回收操作是以條帶組為單位,由于擦除粒度較大,導致很多不經常改變的數據也被擦除,使芯片的擦除次數和擦除時間都有所增加.另外,由于打亂了原有RAID的存儲方式,需要維護1個映射表以記錄數據的存儲地址,帶來了額外的維護開銷.
3.6層次化的RAID控制器MuLe-RAID
對于基于Flash芯片的RAID結構,閃存控制器需要管理所有芯片.隨著芯片數量的增加,所有的訪問都要通過控制器,所以控制器會成為整個系統的瓶頸.杜溢墨等人[31]提出一種面向大容量高性能SSD的多層RAID結構MuLe-RAID.

Fig. 12 The architecture of the hybrid SSD[37].圖12 混合固態盤的體系結構[37]
如圖11所示,閃存芯片被分成若干個組(Part),每個Part由1個底層閃存控制器管理.上層RAID控制器的管理單元是Part,各Part類似于傳統磁盤陣列系統中獨立的磁盤.上層RAID控制器采用RAID磨損均衡[32](RAID-Wear)算法,根據各個Part的損耗程度采用動態的校驗數據分配策略,損耗越重的組分配越少的校驗數據,損耗越輕的組分配越多的校驗數據.

Fig. 11 The architecture of MuLe-RAID[31].圖11 MuLe-RAID的體系結構[31]
MuLe-RAID采用多層次的控制器結構,增寬了數據通路從而有效提高了整個系統的性能.分布式的磨損均衡算法保證了各個Part間的磨損均衡,提高了可靠性.但是眾多控制器之間需要協同,使得控制器的布局和時序控制變得很困難.同時,為實現并行訪問需要設置更多的數據通路和控制通路,實現起來更加困難.此外,MuLe-RAID并未對RAID策略中小寫、隨機寫等問題進行改善.
3.7SLC和MLC混合的固態盤
閃存芯片可以分為單級單元(SLC)和多級單元(MLC)[33-34]兩種.SLC芯片可靠性高且存取速度快,但是容量低價格高;MLC芯片容量大、價格低,但是結構復雜且出錯率高[35-36].Chang[37]提出一種SLC和MLC混合的固態盤.
如圖12所示,混合固態盤由多個MLC芯片和1個SLC芯片組成.熱數據過濾器(hot-data filter)決定數據是否寫入SLC芯片.對于到來的寫請求,如果是冷數據,則將其定向到MLC閃存;否則,將其交到利用率調節閥(utilization throttle)來平衡SLC芯片和MLC芯片之間的磨損次數.SLC芯片的管理采用1個小的散列表代替傳統的直接映射表,將物理上連續的SLC閃存塊當作1個循環的日志空間.當寫入的數據塊數目大于預定參數時,垃圾回收機制被觸發.
混合固態盤兼顧數據寫入效率和不同類型芯片之間的磨損均衡,最小化垃圾回收機制中的復制操作,延長了固態盤使用壽命.混合固態盤實現了MLC芯片的容量和SLC芯片的響應速度.針對冷熱數據的不同,存儲方案提高了隨機寫的性能.但是在固態盤的內部沒有保證數據可靠的冗余措施,一旦數據發生錯誤或丟失,將沒有辦法恢復數據.
3.8干擾感知的陣列DA-RAID-5
寫干擾(program disturb)、讀干擾(read disturb)和保持時間限制(retention time limit)是導致NAND閃存位錯誤的3個主要原因.Guo等人[38]提出了干擾感知的陣列DA-RAID-5來提高企業級閃存存儲系統的性能.
如圖13所示,DA-RAID-5將閃存存儲系統的生命周期分成3個階段:1)使用未綁定的干擾限制機制(unbound-disturb limiting, UDL)處理由于讀干擾和保持時間限制引起的數據錯誤.如果數據存在時間超過閾值Tretention或者閃存塊被讀的次數大于閾值Tread,閃存塊將被回收;如果塊的PE周期超過閾值Tp,則系統進入第2階段.2)采用PE感知的RAID-5方案,PE周期超過Tp的條帶應用RAID-5機制,其他條帶依然采用UDL機制.當應用RAID-5機制的條帶數量超過給定閾值L時,系統進入第3階段.3)對所有條帶應用RAID-5機制,同時采用混合緩存策略以減少校驗信息更新次數和開銷.
DA-RAID-5將閃存存儲系統的生命周期分為3個階段,不同階段采用不同可靠性方案,減少了寫干擾、讀干擾和保持時間限制對NAND閃存引起的位錯誤.DA-RAID-5減少了對校驗信息的訪問、提高了性能和可靠性,也延長了NAND閃存的使用壽命.但是,沒有優化SSD固態盤陣列的小寫和隨機寫性能.

Fig. 13 The architecture of DA-RAID-5[38].圖13 DA-RAID-5的體系結構[38]
以上各陣列構建方法只在某一兩方面優化了系統的性能,并沒有全面考慮RAID策略應用在固態盤時所造成的隨機寫、小寫、磨損均衡、垃圾回收和可靠性等問題.表1對比了各固態盤陣列構建方法符合評價標準的情況.
通過對各種陣列構建方法的對比分析,可以得到如下4點觀察:
1) 沒有一種構建方法完美地考慮了小寫、隨機寫、垃圾回收、磨損均衡、負載均衡、擦除次數和冗余度等問題,因此如何構建大規模、高性能、高可靠的固態盤陣列系統是需要進一步探討的問題.
2) 固態盤提供塊設備訪問接口,為上層應用提供了類似磁盤的透明訪問,但同時也屏蔽了閃存的部分優勢.因此,基于固態盤的RAID系統不能有效地利用固態盤的內在特點,只能通過調整校驗信息在各個盤上的分布、利用緩存隨機寫請求等方式粗粒度地解決固態盤存在的介質損耗和隨機寫性能差等問題.

Table 1 Comparison of Various SSD Arrays
3) 要想從根本上解決固態盤的缺陷,充分利用閃存存儲的優勢,就必須考慮固態盤內部的工作原理,通過直接對芯片的控制來優化性能.在閃存轉換層不僅要設計出良好的地址映射、垃圾回收和磨損均衡算法,還要實現RAID機制保證數據的可靠性.
4) 基于芯片的RAID系統不能滿足高容量、高可靠性、高性能的需求,基于固態盤的RAID系統不能有效地利用固態盤的特點,如何結合這2種構建方法以充分挖掘閃存芯片間和SSD設備間的并行性為下一步的研究方向.不僅解決固態盤自身所存在的隨機寫、介質損耗、RAID陣列的小寫等問題,同時實現系統的高容量、高性能、高可靠.
本文首先分析了基于Flash的固態盤和RAID技術所存在的問題,并且針對二者的特性選取性能、可靠性和價格作為陣列的評價標準.分別從固態盤和Flash芯片2個層面深入分析了構建RAID陣列的關鍵技術,并指出了各種方法的優缺點,最后總結了2種構建模式,并指出了未來可能的研究方向.
固態盤相對與傳統磁盤的優勢越來越明顯,但是其與傳統磁盤有著迥然不同的設備特性.為了優化基于固態盤的RAID系統的性能,我們需要設計一系列的策略來利用這樣的差異,并在帶寬、并行度等方面進行擴展以適應SSD更大的吞吐率.
[1]Im S, Shin D. Flash-aware RAID techniques for dependable and high-performance flash memory SSD[J]. IEEE Trans on Computers, 2011, 60(1): 80-92[2]Agrawal N, Prabhakaran V, Wobber T, et al. Design tradeoffs for SSD performance[C]Proc of the USENIX Annual Technical Conf. Berkeley, CA: USENIX Association, 2008: 57-70[3]Patterson D A, Gibson G, Katz R H. A case for redundant arrays of inexpensive disks (RAID)[C]Proc of the 1988 ACM SIGMOD Int Conf on Management of Data. New York: ACM, 1988: 109-116[4]Mao Bo, Jiang Hong, Wu Suzhen, et al. HPDA: A hybrid parity-based disk array for enhanced performance and reliability[J]. ACM Trans on Storage, 2012, 8(1): 80-92[5]Kim H, Lee S. A new flash memory management for flash storage system[C]Proc of the 23rd Annual Int Computer Software and Applications Conf. Piscataway, NJ: IEEE, 1999: 284-289[6]Chang L P, Huang L C. A low-cost wear-leveling algorithm for block-mapping solid-state disks[C]Proc of the 2011 SIGPLANSIGBED Conf on Languages, Compilers and Tools for Embedded Systems. New York: ACM, 2011: 31-40 [7]Chang L P. On efficient wear leveling for large-scale flash-memory storage systems[C]Proc of the 2007 ACM Symp on Applied Computing. New York: ACM, 2007: 1126-1130[8]Chiang M L, Cheng C L, Wu C H. A new FTL-based flash memory management scheme with fast cleaning mechanism[C]Proc of IEEE Int Conf on Embedded Software and Systems. Piscataway, NJ: IEEE, 2008: 205-214[9]Chen Feng, Luo Tian, Zhang Xiaodong. CAFTL: A content-aware flash translation layer enhancing the lifespan of flash memory based solid state[C]Proc of the 9th USENIX Conf on File and Storage Technologies. Berkeley, CA: USENIX Association, 2011: 77-90[10]Ko S, Jun S, Kim K, et al. Study on garbage collection schemes for flash-based Linux swap system[C]Proc of Advanced Software Engineering and Its Applications. Piscataway, NJ: IEEE, 2008: 13-16[11]Lee J, Kim Y, Shipman G M, et al. A semi-preemptive garbage collector for solid state drives[C]Proc of IEEE Int Symp on Performance Analysis of Systems and Software. Piscataway, NJ: IEEE, 2011: 12-21[12]Wu Suzhen, Chen Xiaoxi, Mao Bo. GC-RAIS: Garbage collection aware and redundant array of independent SSDs[J]. Journal of Computer Research and Development, 2013, 50(1): 60-68 (in Chinese)(吳素貞, 陳曉熹, 毛波. GC-RAIS: 一種基于垃圾回收感知的固態盤陣列[J]. 計算機研究與發展, 2013, 50(1): 60-68)[13]Du Yimo.Research on RAID mechanism in storage system based on flash memory[D]. Changsha: National University of Defense Technology, 2010 (in Chinese)(杜溢墨. 閃存存儲系統中的 RAID 機制研究[D]. 長沙: 國防科學技術大學, 2010)[14]Balakrishnan M, Kadav A, Prabhakaran V, et al. Differential RAID: Rethinking RAID for SSD reliability[J]. ACM Trans on Storage, 2010, 6(2): 1-22[15]Du Yimo, Liu Fang, Chen Zhiguang, et al. WeLe-RAID: A SSD-based RAID for system endurance and performance[C]Proc of the 8th IFIP Int Conf on Network and Parallel Computing. Berlin: Springer, 2011: 248-262[16]Zeng Lingfang, Feng Dan, Mao Bo, et al. HerpRap: A hybrid array architecture providing any point-in-time data tracking for datacenter[C]Proc of IEEE Int Conf on Cluster Computing. Piscataway, NJ: IEEE, 2012: 311-319[17]Ajtai M, Burns R, Fagin R, et al. Compactly encoding unstructured inputs with differential compression[J]. Journal of the ACM, 2002, 49(3): 318-367[18]Broder A Z. Identifying and filtering near-duplicate documents[C]Proc of Combinatorial Pattern Matching. Berlin: Springer, 2000: 1-10[19]Morrey III C B, Grunwald D. Peabody: The time travelling disk[C]Proc of the 20th IEEEthe 11th NASA Goddard Conf on Mass Storage Systems and Technologies. Piscataway, NJ: IEEE, 2003: 241-253[20]Yang Qing, Xiao Weijun. TRAP-Array: A disk array architecture providing timely recovery to any point-in-time[C]Proc of the 33rd Int Symp on Computer Architecture. Piscataway, NJ: IEEE, 2006: 289-301[21]Yang Qing, Ren Jin. I-CASH: Intelligently coupled array of SSD and HDD[C]Proc of the 17th IEEE Int Symp on High Performance Computer Architecture. Piscataway, NJ: IEEE, 2011: 278-289[22]Zheng D, Mhembere D, Burns R, et al. FlashGraph: Processing billion-node graphs on an array of commodity SSDs[C]Proc of the 13th USENIX Conf on File and Storage Technologies. Berkeley, CA: USENIX Association, 2015: 45-58[23]Kim J, Kim J M, Noh S H, et al. A space-efficient flash translation layer for compact flash systems[J]. IEEE Trans on Consumer Electronics, 2002, 48(2): 366-375[24]Kang J U, Jo H, Kim J S, et al. A superblock-based flash translation layer for NAND flash memory[C]Proc of the 6th ACM & IEEE Int Conf on Embedded Software. New York: ACM, 2006: 161-170[25]Lee Y, Jung S, Song Y H. FRA: A flash-aware redundancy array of flash storage devices[C]Proc of the 7th IEEEACM Int Conf on HardwareSoftware Codesign and System Synthesis. New York: ACM, 2009: 163-172[26]Ouyang Jian, Lin Shiding, Jiang Song, et al. SDF: Software-defined flash for Web-scale Internet storage systems[C]Proc of ACM SIGPLAN Notices. New York: ACM, 2014: 471-484[27]Grupp L M, Caulfield A M, Coburn J, et al. Characterizing flash memory: Anomalies, observations, and applications[C]Proc of the 42nd Annual IEEEACM Int Symp on Microarchitecture. New York: ACM, 2009: 24-33[28]Mielke N, Marquart T, Wu N, et al. Bit error rate in NAND flash memories[C]Proc of IEEE Int Reliability Physics Symp. Piscataway, NJ: IEEE, 2008: 9-19[29] Lee S, Lee B, Koh K, et al. A lifespan-aware reliability scheme for RAID-based flash storage[C]Proc of the 2011 ACM Symp on Applied Computing. New York: ACM, 2011: 374-379[30] Kim J, Lee J, Choi J, et al. Improving SSD reliability with RAID via elastic striping and anywhere parity[C]Proc of the 43rd Annual IEEEIFIP Int Conf on Dependable Systems and Networks. Piscataway, NJ: IEEE, 2013: 1-12[31]Du Yimo, Xiao Nong, Liu Fang, et a1. MuLe-RAID: Constructing large scale and high performance SSD with multiple level RAID architecture[J]. Journal of Computer Research and Development, 2012, 49(Suppl Ⅰ): 111-117(in Chinese)(杜溢墨, 肖儂, 劉芳, 等. MuLe-RAID: 面向大容量高性能SSD的層次化RAID[J]. 計算機研究與發展, 2012, 49(增刊Ⅰ): 111-117)[32]Chang L P, Du C D. Design and implementation of an efficient wear-leveling algorithm for solid-state-disk microcontrollers[J]. ACM Trans on Design Automation of Electronic Systems, 2009, 15(1): 1-36[33]LeventhaL A. Flash storage memory[J]. Communications of the ACM, 2008, 51(7): 47-51[34]Roberts D, Kgil T, Mudge T. Integrating NAND flash devices onto servers[J]. Communications of the ACM, 2009, 52(4): 98-103[35]Trinh C, Shibata N, Nakano T, et al. A 5.6 MBs 64Gb 4bcell NAND flash memory in 43nm CMOS[C]Proc of IEEE Int Solid-State Circuits Conf. Piscataway, NJ: IEEE, 2009: 246-247[36]Sun Guangyu, Dong Xiangyu, Xie Yuan, et al. A novel architecture of the 3D stacked MRAM L2 cache for CMPs[C]Proc of the 15th IEEE Int Symp on High Performance Computer Architecture. Piscataway, NJ: IEEE, 2009: 239-249[37]Chang L P. Hybrid solid-state disks: Combining heterogeneous NAND flash in large SSDs[C]Proc of Design Automation Conf. Piscataway, NJ: IEEE, 2008: 428-433
[38]Guo Jie, Wen Wujie, Zhang Yaojun, et al. DA-RAID-5: A disturb aware data protection technique for NAND flash storage systems[C]Proc of Design, Automation & Test in Europe Conf & Exhibition. Piscataway, NJ: IEEE, 2013: 380-385

Li Xiangnan, born in 1991. Master candidate. His main research interests include design and implementation of the storage system.

Zhang Guangyan, born in 1976. Associate professor. His main research interests include big data computing, network storage, and distributed systems.

Li Qiang, born in 1975. Associate professor. His main research interests include network security.

Zheng Weimin, born in 1946. Professor. His main research interests include big data computing, network storage, parallel compiler, and distributed systems.
A Survey on the Approaches of Building Solid State Disk Arrays
Li Xiangnan1,2, Zhang Guangyan1, Li Qiang2, and Zheng Weimin1
1(DepartmentofComputerScienceandTechnology,TsinghuaUniversity,Beijing100084)2(CollegeofComputerScienceandTechnology,JilinUniversity,Changchun130012)
Flash-based solid state disks (SSDs) use flash memory chips as their storage media, which have the features of non-volatility, small size, light weight, high shock resistance, high performance, and low power consumption. Single SSDs have the drawbacks of poor random write performance and limited erase endurance. Organizing multiple SSDs with the RAID technology is promising in delivering high reliability, large capacity and high performance. However, researchers have demonstrated that applying RAID algorithms to SSDs directly does not work well and have proposed some SSD-aware RAID algorithms. In this paper, we first analyze the drawbacks of flash-based solid state disks and the RAID technology, and use performance, reliability and price as the evaluation criteria of the approaches to building SSD arrays, and choose random writes, small writes, garbage collection, load balance, eraseprogram cycles, wear leveling and redundancy levels as the analysis metrics. Then, we analyze and compare the advantages and disadvantages of two types of array building approaches on the disk level and the flash-chip level respectively. Finally, we summarize those different approaches and point out prospective research directions in the future.
solid state disk (SSD); disk array; lifespan; performance; reliability
2015-10-13;
2016-03-02
國家“八六三”高技術研究發展計劃基金項目(2013AA01A210);國家自然科學基金項目(61170008,61272055)
張廣艷(gyzh@tsinghua.edu.cn)
TP333
This work was supported by the National High Technology Research and Development Program of China (863 Program) (2013AA01A210) and the National Natural Science Foundation of China (61170008,61272055).