用于ssd中靈活的raid的方法和設(shè)備的制作方法
【專(zhuān)利摘要】一種采用獨(dú)立磁盤(pán)冗余陣列(RAID)方案的固態(tài)驅(qū)動(dòng)器(SSD)包括閃存芯片、所述閃存芯片上的可擦除塊,以及閃存控制器。所述可擦除塊用于存儲(chǔ)閃存頁(yè)。所述閃存控制器以可操作方式耦接到所述閃存芯片。所述閃存控制器還用于將某些所述閃存頁(yè)組織成RAID行組,并且將RAID行組成員組成信息寫(xiě)入所述RAID行組中的每個(gè)所述閃存頁(yè)。
【專(zhuān)利說(shuō)明】用于SSD中靈活的RAID的方法和設(shè)備
相關(guān)申請(qǐng)案的交叉參考
[0001]本發(fā)明要求2011年8月12日遞交的發(fā)明名稱(chēng)為“用于SSD中靈活的RAID的方法和設(shè)備(Method and Apparatus for Flexible RAID in SSD)”的第 61/523,251 號(hào)美國(guó)臨時(shí)申請(qǐng)案以及2012年4月30日遞交的發(fā)明名稱(chēng)為“用于SSD中靈活的RAID的方法和設(shè)備(Method and Apparatus for Flexible RAID in SSD)”的第 13/460686號(hào)美國(guó)專(zhuān)利申請(qǐng)案的在先申請(qǐng)優(yōu)先權(quán),這些在先申請(qǐng)的內(nèi)容以引入的方式并入本文本中,如全文再現(xiàn)一般。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及存儲(chǔ)器,更確切地說(shuō),涉及用于SSD中靈活(flexible)的RAID的方法和設(shè)備。
【背景技術(shù)】
[0003]非易失性存儲(chǔ)器已用作計(jì)算機(jī)和便攜式信息設(shè)備中的存儲(chǔ)器。近來(lái),作為僅使用硬盤(pán)驅(qū)動(dòng)器(HDD)的一個(gè)替代方案,使用NAND閃存存儲(chǔ)器的固態(tài)驅(qū)動(dòng)器(SSD)在計(jì)算機(jī)中的使用變得更加流行。有人認(rèn)為SSD很有可能占據(jù)傳統(tǒng)上被認(rèn)為限于HDD的使用領(lǐng)域。
[0004]近來(lái)固態(tài)驅(qū)動(dòng)器(SSD)越來(lái)越多地用于計(jì)算機(jī)系統(tǒng)中,要么作為硬盤(pán)驅(qū)動(dòng)器(HDD)的高速緩存器,要么直接替代HDD。在這樣的新架構(gòu)中,SDD越來(lái)越多地用于:a)提高存儲(chǔ)的(緩存的)數(shù)據(jù)的存取速度;b)減小HDD的功率消耗;c)減小系統(tǒng)的尺寸、重量和功率消耗;以及d)減小存儲(chǔ)的(緩存的)數(shù)據(jù)的存取延遲。
[0005]基于NAND閃存存儲(chǔ)器的SSD (固態(tài)驅(qū)動(dòng)器)已廣泛用于需要數(shù)據(jù)存取速度的各種應(yīng)用中。傳統(tǒng)的RAID (獨(dú)立磁盤(pán)冗余陣列)方案已用于許多SSD設(shè)計(jì)中。然而,這些傳統(tǒng)RAID方案只在RAID組中的所有元件都良好時(shí)才起作用。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的實(shí)施例大體實(shí)現(xiàn)了技術(shù)優(yōu)勢(shì),它們提供了一種用于SSD中靈活的RAID的系統(tǒng)和方法。
[0007]在一個(gè)實(shí)施例中,采用獨(dú)立磁盤(pán)冗余陣列(RAID)方案的固態(tài)驅(qū)動(dòng)器(SSD)包括閃存芯片、所述閃存芯片上的可擦除塊,以及閃存控制器??刹脸龎K用于存儲(chǔ)閃存頁(yè)。閃存控制器以可操作方式耦接到閃存芯片。閃存控制器還用于將某些閃存頁(yè)組織成RAID行組(RAID line group),并且將 RAID 行組成員組成信息(membership information)寫(xiě)入 RAID行組中的每個(gè)閃存頁(yè)。
[0008]在一個(gè)實(shí)施例中,采用獨(dú)立磁盤(pán)冗余陣列(RAID)方案的固態(tài)驅(qū)動(dòng)器(SSD)包括閃存芯片、可擦除塊以及閃存控制器??刹脸龎K位于閃存芯片中并且用于存儲(chǔ)一個(gè)或多個(gè)閃存頁(yè)。閃存控制器以可操作方式耦接到閃存芯片。閃存控制器用于:將某些閃存頁(yè)組織成RAID行組;用于從RAID行組中排除壞的閃存頁(yè);以及用于將RAID行組成員組成信息以二進(jìn)制/十六進(jìn)制數(shù)的形式寫(xiě)入RAID行組中的每個(gè)閃存頁(yè)內(nèi)的RAID行(RAIDL)字段。[0009]在一個(gè)實(shí)施例中,在固態(tài)驅(qū)動(dòng)器(SSD)中使用獨(dú)立磁盤(pán)冗余陣列(RAID)方案的方法包括:將閃存芯片陣列中的閃存頁(yè)組織成RAID行組以及將RAID行組成員組成信息寫(xiě)入RAID行組中的每個(gè)閃存頁(yè)。在校驗(yàn)計(jì)算和損壞(corrupt)的閃存頁(yè)的重建中的至少一個(gè)過(guò)程中,RAID行組信息識(shí)別出將要被排除的閃存頁(yè)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0010]為了更完整地理解本發(fā)明及其優(yōu)點(diǎn),現(xiàn)在參考下文結(jié)合附圖進(jìn)行的描述,其中:
[0011]圖1提供了固態(tài)驅(qū)動(dòng)器(SSD)的一個(gè)實(shí)施例;
[0012]圖2所示為閃存頁(yè)的實(shí)例,所述閃存頁(yè)被組織在獨(dú)立磁盤(pán)冗余陣列(RAID)行組中并且能夠被存儲(chǔ)在圖1中的SDD中的閃存芯片中的可擦除塊中。
[0013]圖3提供了圖2中的閃存頁(yè)的數(shù)據(jù)格式的圖示,其中數(shù)據(jù)字段包括RAID行(RAIDL)字段;
[0014]圖4提供了 RAID行組的一個(gè)實(shí)例,其中一個(gè)閃存頁(yè)是損壞的并且兩個(gè)閃存頁(yè)出于重建的目的而從RAID行組中排除;
[0015]圖5提供了圖3中的數(shù)據(jù)格式中的RAIDL字段的一個(gè)實(shí)例;
[0016]圖6提供了一個(gè)實(shí)例,其中圖2中的RAID行組被劃分成第一和第二 RAID行組;
[0017]圖7提供了對(duì)應(yīng)于圖6中的第一和第二 RAID行組的第一和第二 RAIDL字段的一個(gè)實(shí)例;
[0018]圖8提供了使用圖1中的SSD并且可以實(shí)施本發(fā)明的實(shí)施例的實(shí)施例系統(tǒng)的方框圖;以及
[0019]圖9提供了在圖1中的SSD中使用RAID方案的方法的實(shí)施例。
【具體實(shí)施方式】
[0020]下文將詳細(xì)論述對(duì)本發(fā)明實(shí)施例的實(shí)施和使用。但應(yīng)了解,本發(fā)明提供的許多適用發(fā)明概念可實(shí)施在多種具體環(huán)境中。所論述的具體實(shí)施例僅為說(shuō)明性的,而不限制本發(fā)明的范圍。
[0021]近來(lái),固態(tài)驅(qū)動(dòng)器(SSD),也可以稱(chēng)為固態(tài)磁盤(pán)或電子磁盤(pán),已經(jīng)并入到計(jì)算機(jī)系統(tǒng)中,要么作為硬盤(pán)驅(qū)動(dòng)器(HDD)的高速緩存器,要么直接替代HDD。在這樣的新架構(gòu)中,SDD越來(lái)越多地用于:提高存儲(chǔ)的(緩存的)數(shù)據(jù)的存取速度;減小HDD的功率消耗;減小系統(tǒng)的尺寸、重量和功率消耗;以及減小存儲(chǔ)的(緩存的)數(shù)據(jù)的存取延遲。
[0022]然而,作為NAND閃存或其他非易失性存儲(chǔ)器類(lèi)型的SSD是易于出錯(cuò)的。因此,存儲(chǔ)在其中的位會(huì)很容易變損壞。此外,隨著SSD的程序擦除周期增加,錯(cuò)誤率會(huì)增加。因此,即使使用了增強(qiáng)型糾錯(cuò)編碼(ECC)算法(例如,Bose Ray-Chaudhuri (BCH) ECC算法),某一數(shù)據(jù)單元也仍然有可能是不可糾正的。
[0023]如下文將更詳細(xì)地說(shuō)明,本發(fā)明的實(shí)施例使SSD能夠靈活地將閃存頁(yè)、可擦除塊,以及/或者閃存芯片組織成獨(dú)立磁盤(pán)冗余陣列(RAID)組。RAID行組成員可以基于以下條件來(lái)選擇或揀選(chosen/selected):例如,每個(gè)娃裸片的狀態(tài)、寫(xiě)入到達(dá)模式(writearrival pattern),或是在數(shù)據(jù)實(shí)際上寫(xiě)入存儲(chǔ)媒介中時(shí)會(huì)影響RAID行組中的成員組成的某其他因素或多個(gè)因素。換句話(huà)說(shuō),RAID行組中的成員組成是靈活的(flexible)。RAID行組中的成員可以由RAID組成員組成信息識(shí)別出來(lái),該信息可以與要存儲(chǔ)的數(shù)據(jù)一起寫(xiě)入。當(dāng)某個(gè)組成員被讀取并被ECC算法確定是損壞的時(shí),RAID行組成員所在位置的下一鄰居可以被讀取回來(lái)并且用于使用例如異或(exclusive or, XOR)過(guò)程來(lái)重建所述損壞的組成員,分析顯示,這樣的方法可以大大提高SSD的可靠性并且延長(zhǎng)驅(qū)動(dòng)器壽命。
[0024]現(xiàn)參看圖1,示出了利用類(lèi)似于基于硬盤(pán)的傳統(tǒng)RAID (廉價(jià)(或獨(dú)立)磁盤(pán)的冗余陣列)的冗余數(shù)據(jù)存儲(chǔ)機(jī)制或方案的SSDlO的實(shí)施例。如圖所示,SSDlO大體包括閃存控制器12和閃存芯片14,其中每一者都可以包括若干內(nèi)存裸片(memory die)。閃存控制器12(亦稱(chēng),NAND閃存控制器或SSD控制器)用于例如將閃存芯片14橋接到主控(host)或使用SSDlO的計(jì)算機(jī)。在一個(gè)實(shí)施例中,閃存控制器12是執(zhí)行固件級(jí)代碼的嵌入式處理器。閃存控制器12可以例如執(zhí)行ECC、耗損均衡(wear leveling)、壞塊映射(bad block mapping)、讀取清除(read scrubbing)和讀取擾動(dòng)(read disturb)管理、讀取和寫(xiě)入緩存(read andwrite caching)、垃圾回收(garbage collection),以及加密(encryption)。
[0025]仍然參看圖1,在一個(gè)實(shí)施例中,閃存芯片14可以是非易失性NAND閃存芯片。即使如此,也可以使用其他類(lèi)型的閃存芯片例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。此外,閃存芯片14可以是多層單元(MLC)閃存存儲(chǔ)器或單層單元(SLC)閃存存儲(chǔ)器。盡管圖1中示出了兩個(gè)閃存芯片14,但是SSD10中可以包含更多或更少的閃存芯片14。
[0026]在一個(gè)實(shí)施例中,閃存芯片14被劃分成可擦除塊16 (亦稱(chēng),閃存塊或RAID塊)。閃存擦除塊是NAND閃存存儲(chǔ)器中可以一次性擦除的最小單元。盡管圖1中的每個(gè)閃存芯片14中示出了兩個(gè)可擦除塊16,但是每個(gè)閃存芯片14中可以包含更多或更少的可擦除塊
16??刹脸龎K16大體用于存儲(chǔ)數(shù)據(jù)閃存頁(yè)18,如圖2所示。
[0027]為了說(shuō)明的目的,圖2中描繪了十七(17)個(gè)數(shù)據(jù)閃存頁(yè)18。如圖所示,閃存頁(yè)18被閃存控制器12組織、寫(xiě)入或者布置到RAID行組20中。RAID行組20中所包含的十七個(gè)閃存頁(yè)18被指定為頁(yè)O至頁(yè)9、頁(yè)A至頁(yè)F,以及頁(yè)P(yáng)。頁(yè)P(yáng)表示校驗(yàn)頁(yè)(parity page)。每個(gè)RAID行組20具有向該RAID行組提供冗余的至少一個(gè)校驗(yàn)頁(yè)。實(shí)際上,在任何成員損壞時(shí),校驗(yàn)頁(yè)可以用于使用RAID行組中的其他成員頁(yè)以及例如XOR運(yùn)算來(lái)恢復(fù)故障成員頁(yè)。
[0028]由于RAID行組20包括一次性寫(xiě)入的十七個(gè)閃存頁(yè)并且包括一個(gè)校驗(yàn)頁(yè),因此RAID行組20可以稱(chēng)為16+1RAID組。請(qǐng)注意,RAID行組20中的成員組成是靈活的。換句話(huà)說(shuō),RAID行組20可以在可擦除塊16內(nèi)或在閃存芯片14上包括更多或更少可用的閃存頁(yè)18。
[0029]仍然參看圖2,已知RAID行組20中的某些閃存頁(yè)18是壞的(例如,損壞,含有錯(cuò)誤,具有程序故障狀態(tài),由于位錯(cuò)誤或頁(yè)讀取超時(shí)而不能成功讀取,等等)閃存頁(yè)18被確定為壞的情況可以有若干種。例如,總線故障或閃存芯片14故障,會(huì)使可擦除塊16 (亦稱(chēng),NAND閃存塊)中的閃存頁(yè)18變壞。
[0030]在圖2中的實(shí)施例中,頁(yè)9在讀取過(guò)程中被檢測(cè)為壞的。由于頁(yè)9被檢測(cè)為壞的,因此頁(yè)9不再參與用于導(dǎo)出頁(yè)P(yáng)的校驗(yàn)計(jì)算。頁(yè)9也不再用于重建在后來(lái)的讀取操作中發(fā)現(xiàn)或識(shí)別出的損壞的閃存頁(yè)18。換句話(huà)說(shuō),頁(yè)9將留在物理RAID行組20中,但是當(dāng)進(jìn)行校驗(yàn)計(jì)算時(shí)以及當(dāng)恢復(fù)隨后發(fā)現(xiàn)的故障閃存頁(yè)中的數(shù)據(jù)時(shí),它將有效地從RAID行組20中排除。在一個(gè)實(shí)施例中,頁(yè)9的內(nèi)存總線被越過(guò)或跳過(guò)以排除頁(yè)9,如本文所述。
[0031]在一個(gè)實(shí)施例中,一個(gè)或多個(gè)閃存頁(yè)18發(fā)生程序故障,例如上述實(shí)例中的頁(yè)9,如果仍然使用同一可擦除塊16,那么一個(gè)選項(xiàng)是從RAID行組20中移除故障閃存頁(yè)并且隨后將RAID行組20重新寫(xiě)入下一個(gè)RAID行地址中。這樣的選項(xiàng)假定了故障閃存頁(yè)18(例如,頁(yè)9)有可能在同一可擦除塊16中再次發(fā)生故障。校驗(yàn)頁(yè)程序故障的處理與常規(guī)的頁(yè)程序故障相同。盡管在此場(chǎng)景中一個(gè)RAID行可能沒(méi)有得到充分使用,但是由于程序故障所導(dǎo)致的閃存頁(yè)18中的故障不是經(jīng)常發(fā)生,因此對(duì)SSDlO的影響非常小。在這種情況下,寫(xiě)入格式器(write formatter)可以在除了校驗(yàn)頁(yè)以外的所有其他頁(yè)中使用回寫(xiě)命令(copy backcommand)。
[0032]現(xiàn)參看圖3,其更詳細(xì)地示出了圖2中的一個(gè)閃存頁(yè)18。如圖3所示,閃存頁(yè)18被劃分成邏輯塊尋址(LBA)扇區(qū)22和RAID行(RAIDL)字段24。LBA扇區(qū)22用于存儲(chǔ)原始數(shù)據(jù)或?qū)?yīng)于原始數(shù)據(jù)的元數(shù)據(jù)。存儲(chǔ)在LBA扇區(qū)22中的元數(shù)據(jù)可以關(guān)聯(lián)于原始數(shù)據(jù),用于保護(hù)原始數(shù)據(jù),或者專(zhuān)用于原始數(shù)據(jù)(例如,指示出原始數(shù)據(jù)的LBA地址)。
[0033]RAIDL字段24用于存儲(chǔ)RAID行組成員組成信息26,此信息用于識(shí)別出物理RAID行組20中的某一閃存頁(yè)18,該閃存頁(yè)將用于校驗(yàn)計(jì)算和/或用于重建后來(lái)變損壞的閃存頁(yè)。存儲(chǔ)在RAIDL字段24中的RAID行組成員組成信息26也可以用于識(shí)別出哪個(gè)閃存頁(yè)18將從RAID行組20中被排除以進(jìn)行校驗(yàn)計(jì)算以及恢復(fù)或重建損壞的閃存頁(yè)。在一個(gè)實(shí)施例中,RAID行組成員組成信息26作為二進(jìn)制/十六進(jìn)制數(shù)存儲(chǔ)在RAIDL字段24中。在其他實(shí)施例中,RAID行組成員組成信息26可以用其他格式存儲(chǔ)。
[0034]圖4至圖5示出了存儲(chǔ)在RAIDL字段24中的RAID行組成員組成信息26如何在一個(gè)實(shí)施例中用來(lái)識(shí)別出用于校驗(yàn)計(jì)算和閃存頁(yè)重建過(guò)程的閃存頁(yè)的一個(gè)實(shí)例。如圖4所示,閃存控制器12將某些閃存頁(yè)18組織或?qū)懭隦AID行組20中。如圖所示,揀選了閃存芯片14上的可擦除塊16中總共十七個(gè)閃存頁(yè)18。關(guān)于圖4中的RAID行組20中的閃存頁(yè)18,已知兩個(gè)閃存頁(yè)18是壞的,即頁(yè)9和頁(yè)E。因此,這些頁(yè)將從校驗(yàn)計(jì)算和閃存頁(yè)數(shù)據(jù)重建過(guò)程中排除。
[0035]為了指示出已知閃存頁(yè)中頁(yè)9和頁(yè)E是壞的,RAID行組成員組成信息26被閃存控制器12寫(xiě)入RAIDL字段24中,如圖5所示。在圖5中所示的實(shí)例中,由于已知閃存頁(yè)中頁(yè)9和頁(yè)E是壞的,因此表示為17’ hlbdff的十六進(jìn)制數(shù)被存儲(chǔ)在RAIDL字段24中。如圖5所示,當(dāng)十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制時(shí),與頁(yè)9和頁(yè)E相關(guān)聯(lián)的位未被設(shè)置。因此,這些位均為“O”。與此相反,與使用XOR過(guò)程的校驗(yàn)計(jì)算以及閃存頁(yè)重建中要使用的閃存頁(yè)18相關(guān)聯(lián)的位被設(shè)置。因此,這些位均為“I”。
[0036]仍然參看圖4至圖5,如果在后來(lái)的讀取操作過(guò)程中發(fā)現(xiàn)頁(yè)5由于例如位錯(cuò)誤而變壞或損壞,那么RAID行組20中所包含的閃存頁(yè)18,除了頁(yè)5以外,都被讀取出來(lái)。換句話(huà)說(shuō),指定為頁(yè)O、頁(yè)2、頁(yè)2、頁(yè)3、頁(yè)4、頁(yè)6、頁(yè)7、頁(yè)8、頁(yè)A、頁(yè)B、頁(yè)C、頁(yè)D、頁(yè)F的閃存頁(yè)18被讀取。一旦被讀取,這些閃存頁(yè)即與校驗(yàn)頁(yè)即頁(yè)P(yáng) —起在XOR過(guò)程中使用,以重建閃存頁(yè)中的頁(yè)5。請(qǐng)注意,指定為頁(yè)9和頁(yè)E的已知壞閃存頁(yè)18以及指定為頁(yè)5的新發(fā)現(xiàn)的壞閃存頁(yè)不用于重建指定為頁(yè)5的閃存頁(yè)。此外,如果頁(yè)5由于某原因而不能使用上述過(guò)程來(lái)恢復(fù)或重建,例如由于不可糾正的錯(cuò)誤,那么RAIDL字段24可以被更新,以使得與頁(yè)5相關(guān)聯(lián)的位被設(shè)置為“O”。
[0037]在圖6至圖7中所示的實(shí)施例中,RAID行組20可以劃分成較小的RAID行組,例如第一較小的RAID行組28和第二較小的RAID行組30。換句話(huà)說(shuō),靈活的RAID技術(shù)可以用于將由固定RAID組(fixed RAID group)大體所需的頁(yè)數(shù)量分解。在這樣的實(shí)施例中,第一較小RAID行組28中的RAIDL字段24中可以填入表示為17h’ OOOff的十六進(jìn)制數(shù);第二較小RAID行組30中的RAIDL字段24中可以填入表示為17’hlbdOO的十六進(jìn)制數(shù)。如圖7所示,存儲(chǔ)在RAIDL字段中的RAID行組成員組成信息26是互補(bǔ)的并且共同識(shí)別出RAID行組20中所包含的閃存頁(yè)18。實(shí)際上,前八個(gè)閃存頁(yè)18 (頁(yè)O至頁(yè)7)被包含在第一較小RAID行組28中(其中可能發(fā)現(xiàn)頁(yè)5是壞的并且隨后被排除),而接下來(lái)八個(gè)閃存頁(yè)18被包含在第二較小RAID行組30中(其中頁(yè)9和頁(yè)E將從校驗(yàn)/重建計(jì)算中被排除)。在此實(shí)施例中,第一較小RAID行組28中的一個(gè)閃存頁(yè)(例如,頁(yè)7)可能必須作為校驗(yàn)頁(yè)來(lái)操作,類(lèi)似于頁(yè)P(yáng)。
[0038]現(xiàn)參看圖8,SSD可以并入計(jì)算機(jī)系統(tǒng)32中。計(jì)算機(jī)系統(tǒng)32可以用于實(shí)施本發(fā)明的方法。在這種情況下,主要處理可以在處理器34中執(zhí)行,所述處理器可以是微處理器或任何其他合適的處理裝置。程序代碼(例如,實(shí)施上述算法或方法的代碼)以及數(shù)據(jù)可以存儲(chǔ)在隨機(jī)存取存儲(chǔ)器36中。所述存儲(chǔ)器36可以是諸如DRAM等本地存儲(chǔ)器或大容量存儲(chǔ)器,例如,硬盤(pán)驅(qū)動(dòng)器、光盤(pán)驅(qū)動(dòng)器或其他存儲(chǔ)器(其可為本地存儲(chǔ)器或遠(yuǎn)程存儲(chǔ)器)。雖然使用單個(gè)塊在功能上說(shuō)明了存儲(chǔ)器36,但應(yīng)理解,可以使用一個(gè)或多個(gè)硬件塊來(lái)實(shí)施該功倉(cāng)泛。
[0039]在一個(gè)實(shí)施例中,處理器34可以用于實(shí)施上述各個(gè)(或所有)功能。例如,處理器34可以在不同時(shí)間用作特定的功能單元,以便實(shí)施在執(zhí)行本發(fā)明的技術(shù)時(shí)所涉及的子任務(wù)。或者,可使用不同硬件塊(例如,與處理器34相同或不同)來(lái)執(zhí)行不同功能。在其他實(shí)施例中,某些子任務(wù)由處理器34來(lái)執(zhí)行,而其他子任務(wù)則使用獨(dú)立的電路來(lái)執(zhí)行。
[0040]圖4還示出了輸入/輸出(1/0)38,它可以用于向系統(tǒng)32提供信息。該信息可以包括例如將要存儲(chǔ)在SSDlO中的視頻。1/038可以包括:用于連接到含因特網(wǎng)等網(wǎng)絡(luò)的端口,或本地接口(例如,USB或LAN接口)。1/038還可以包括本地用戶(hù)操作的I/O裝置,例如顯示器、鍵盤(pán)、鼠標(biāo)等。換句話(huà)說(shuō),提供單個(gè)框來(lái)表示潛在大量的硬件項(xiàng)目。
[0041]SSDlO和其他存儲(chǔ)器40 (例如,HDD、光盤(pán)驅(qū)動(dòng)器等)在圖中示為連接到與1/038相同的總線。這只是可以適用的架構(gòu)的一個(gè)實(shí)例。為了簡(jiǎn)明的目的,即使實(shí)際系統(tǒng)中包含合適的額外電路,控制電路例如內(nèi)存控制器或橋接器也從圖中省略。
[0042]現(xiàn)參看圖9,示出了方法42的一個(gè)實(shí)施例。在方框44中,閃存芯片14中揀選的一些閃存頁(yè)18組織成RAID行組20。在方框46中,RAID行組成員組成信息26被寫(xiě)入RAID行組20中的每個(gè)閃存頁(yè)18中。如上所述,RAID行組成員組成信息26識(shí)別出將要在校驗(yàn)計(jì)算和/或損壞的閃存頁(yè)18的重建過(guò)程中被排除的閃存頁(yè)18。在一個(gè)實(shí)施例中,閃存控制器12或處理器34執(zhí)行或協(xié)調(diào)這些步驟。
[0043]使用本文所揭示的靈活的RAID方案、算法或過(guò)程,可以承受單個(gè)或多個(gè)閃存頁(yè)18故障并且允許SSDlO繼續(xù)適當(dāng)?shù)剡\(yùn)作。此外,當(dāng)靈活的RAID技術(shù)應(yīng)用于SSDlO中的可擦除塊16或閃存芯片14時(shí),也可以承受故障并且允許SSDlO繼續(xù)適當(dāng)?shù)剡\(yùn)作。
[0044]本發(fā)明的實(shí)施例提供了許多新的有利特征。例如,該方案的一個(gè)特征是使用RAID成員組成信息來(lái)指示出RAID行組中的成員,從而允許RAID行靈活地分組。該方案能夠承受RAID組中一個(gè)或多個(gè)成員發(fā)生故障的情況,而無(wú)需拋棄剩余的好的存儲(chǔ)媒介。該方案可以應(yīng)用于最新的基于NAND閃存的SSD。該方案也可以應(yīng)用于其他存儲(chǔ)媒介,例如基于硬盤(pán)驅(qū)動(dòng)器的RAID系統(tǒng)。
[0045]本發(fā)明的實(shí)施例可以用于許多產(chǎn)品、過(guò)程和服務(wù)中。例如,各實(shí)施例可以用于下一代外圍部件互連高速(PCIE) SSD中以改善SSD的使用,從而延長(zhǎng)SSD的壽命。靈活的成員組成比現(xiàn)有的固定RAID算法更為優(yōu)越。在許多市場(chǎng)上,包括但不限于在企業(yè)存儲(chǔ)系統(tǒng)中,靈活的RAID技術(shù)是有利的。
[0046]如上所述,各實(shí)施例具有許多優(yōu)點(diǎn)。通過(guò)使用RAID機(jī)制將數(shù)據(jù)存儲(chǔ)在SSD中,單個(gè)頁(yè)的數(shù)據(jù)損失可以恢復(fù)。本文本所描述的靈活的RAID算法的各實(shí)施例,提供了一種靈活決定RAID組中成員數(shù)量的方法。這樣使SSD能夠承受RAID中一個(gè)或多個(gè)成員發(fā)生故障的情況并且仍然能夠恢復(fù)數(shù)據(jù)。
[0047]通過(guò)用RAID算法中靈活的成員組成,可以達(dá)成優(yōu)點(diǎn),使該設(shè)計(jì)能夠承受單個(gè)或多個(gè)頁(yè)、塊或硅裸片在SSD中發(fā)生故障的情況并且仍然能夠恢復(fù)數(shù)據(jù)損失。
[0048]在基于磁盤(pán)驅(qū)動(dòng)器的存儲(chǔ)系統(tǒng)中,RAID機(jī)制可以用于防止單個(gè)磁盤(pán)發(fā)生故障,例如RAID4或RAID5機(jī)制,方法是在RAID組中使用一個(gè)校驗(yàn)表項(xiàng)。在一個(gè)實(shí)施例中,本發(fā)明計(jì)算和存儲(chǔ)RAID成員組成信息及數(shù)據(jù),這樣當(dāng)RAID組中的一個(gè)裝置發(fā)生故障時(shí),在數(shù)據(jù)存儲(chǔ)到固態(tài)驅(qū)動(dòng)器的情況下,在RAID成員組成信息中可以將該裝置跳過(guò)。這樣,當(dāng)一個(gè)成員隨時(shí)間推移而發(fā)生故障時(shí),可以從RAID組中的其他頁(yè)中讀取RAID成員組成信息,并且RAID組中只有這些成員(其他頁(yè))才用于確定由RAID算法進(jìn)行的恢復(fù)。
[0049]雖然已參考說(shuō)明性實(shí)施例描述了本發(fā)明,但此描述并不旨在限制本發(fā)明。所屬領(lǐng)域的技術(shù)人員在參考該描述后,將會(huì)明白說(shuō)明性實(shí)施例的各種修改和組合,以及其他實(shí)施例。因此,所附權(quán)利要求書(shū)意圖涵蓋任何此類(lèi)修改或?qū)嵤├?br>
【權(quán)利要求】
1.一種采用獨(dú)立磁盤(pán)冗余陣列(RAID)方案的存儲(chǔ)裝置,其包括: 閃存芯片; 可擦除塊,所述可擦除塊位于所述閃存芯片中,所述可擦除塊用于存儲(chǔ)一個(gè)或多個(gè)閃存頁(yè);以及 閃存控制器,所述閃存控制器以可操作方式耦接到所述閃存芯片,所述閃存控制器用于將某些所述閃存頁(yè)組織成RAID行組并且將RAID行組成員組成信息寫(xiě)入所述RAID行組中的每個(gè)所述閃存頁(yè)。
2.根據(jù)權(quán)利要求1所述的驅(qū)動(dòng)器,其中每個(gè)所述閃存頁(yè)包括用于存儲(chǔ)所述RAID行組成員組成信息的RAID行(RAIDL)字段。
3.根據(jù)權(quán)利要求2所述的存儲(chǔ)裝置,其中所述RAIDL字段用于指示出所述RAID行組中用于校驗(yàn)計(jì)算的閃存頁(yè)。
4.根據(jù)權(quán)利要求2所述的存儲(chǔ)裝置,其中所述RAIDL字段用于指示出所述RAID行組中用于頁(yè)重建的閃存頁(yè)。
5.根據(jù)權(quán)利要求2所述的存儲(chǔ)裝置,其中所述RAIDL字段用于指示出在校驗(yàn)計(jì)算和頁(yè)重建中至少一個(gè)過(guò)程中從所述RAID行組中排除的閃存頁(yè)。
6.根據(jù)權(quán)利要 求2所述的存儲(chǔ)裝置,其中所述RAIDL字段用于重建所述RAID行組中后來(lái)的壞閃存頁(yè)。
7.根據(jù)權(quán)利要求2所述的存儲(chǔ)裝置,其中所述RAIDL字段存儲(chǔ)十六進(jìn)制數(shù),所述十六進(jìn)制數(shù)用于指示出在校驗(yàn)計(jì)算和頁(yè)重建中至少一個(gè)過(guò)程中所包含的閃存頁(yè)。
8.根據(jù)權(quán)利要求2所述的存儲(chǔ)裝置,其中所述RAIDL字段存儲(chǔ)十六進(jìn)制數(shù),所述十六進(jìn)制數(shù)用于指示出在校驗(yàn)計(jì)算和頁(yè)重建中至少一個(gè)過(guò)程中被排除的閃存頁(yè)。
9.根據(jù)權(quán)利要求2所述的存儲(chǔ)裝置,其中每個(gè)所述閃存頁(yè)包括邏輯塊尋址(LBA)扇區(qū),所述LBA扇區(qū)用于存儲(chǔ)數(shù)據(jù)和元數(shù)據(jù)中的至少一者。
10.根據(jù)權(quán)利要求1所述的存儲(chǔ)裝置,其中所述RAID行組中的所述閃存頁(yè)中的至少一者是校驗(yàn)塊。
11.根據(jù)權(quán)利要求1所述的存儲(chǔ)裝置,其中所述閃存控制器用于將所述RAID行組劃分成具有互補(bǔ)的RAID行組成員組成信息的較小RAID行組,這些互補(bǔ)的RAID行組成員組成信息共同形成所述RAID行組成員組成信息。一種采用獨(dú)立磁盤(pán)冗余陣列(RAID)方案的存儲(chǔ)裝置,其包括: 閃存芯片; 可擦除塊,所述可擦除塊位于所述閃存芯片中,所述可擦除塊用于存儲(chǔ)一個(gè)或多個(gè)閃存頁(yè);以及 閃存控制器,所述閃存控制器以可操作方式耦接到所述閃存芯片,所述閃存控制器用于將某些所述閃存頁(yè)組織成RAID行組并且將RAID行組成員組成信息寫(xiě)入所述RAID行組中每個(gè)所述閃存頁(yè)內(nèi)的RAID行(RAIDL)字段。
12.根據(jù)權(quán)利要求12所述的存儲(chǔ)裝置,其中所述閃存控制器用于從所述RAID行組中排除壞的閃存頁(yè)。
13.根據(jù)權(quán)利要求12所述的存儲(chǔ)裝置,其中所述RAID行組成員組成信息包括十六進(jìn)制數(shù)。
14.根據(jù)權(quán)利要求14所述的存儲(chǔ)裝置,其中所述RAIDL字段中的所述十六進(jìn)制數(shù)識(shí)別出在校驗(yàn)計(jì)算和損壞的閃存頁(yè)的重建中,哪個(gè)閃存頁(yè)被包含在所述RAID行組中以及哪個(gè)閃存頁(yè)從所述RAID行組中排除。
15.根據(jù)權(quán)利要求14所述的存儲(chǔ)裝置,其中所述RAIDL字段中的所述十六進(jìn)制數(shù)用于重建在所述RAID行組中的所述閃存頁(yè)的讀取操作過(guò)程中發(fā)現(xiàn)的所述RAID行組中的一個(gè)故障的閃存頁(yè)。
16.根據(jù)權(quán)利要求12所述的存儲(chǔ)裝置,其中所述RAID行組中的所述閃存頁(yè)中的至少一者是校驗(yàn)塊。
17.—種在固態(tài)驅(qū)動(dòng)器(SSD)中使用獨(dú)立磁盤(pán)冗余陣列(RAID)方案的方法,所述方法包括: 將閃存芯片中的閃存頁(yè)組織成RAID行組;以及將RAID行組成員組成信息寫(xiě)入所述RAID行組中的每個(gè)所述閃存頁(yè),在校驗(yàn)計(jì)算和損壞的閃存頁(yè)的重建中的至少一個(gè)過(guò)程中,所述RAID行組信息識(shí)別出將要被排除的閃存頁(yè)。
18.根據(jù)權(quán)利要求18所述的方法,其進(jìn)一步包括:使用所述RAID行組成員組成信息來(lái)重建所述RAID行組中的所述損壞的閃存頁(yè)。
19.根據(jù)權(quán)利要求18所述的方法,其中將RAID行組成員組成信息寫(xiě)入所述RAID行組中的每個(gè)所述閃存頁(yè)包括:寫(xiě)入所述RAID行組中的每個(gè)所述閃存頁(yè)中的RAID行(RAIDL)字段。
20.根據(jù)權(quán)利要求18所述的方法,其中將RAID行組成員組成信息寫(xiě)入所述RAID行組中的每個(gè)所述閃存頁(yè)包括:將十六進(jìn)制數(shù)寫(xiě)入所述RAID行組中的每個(gè)所述閃存頁(yè)中的RAID 行(RAIDL)字段。
21.根據(jù)權(quán)利要求21所述的方法,其進(jìn)一步包括使用所述十六進(jìn)制數(shù)來(lái)識(shí)別出在所述RAID行組中的閃存頁(yè)以及從所述RAID行組中排除的閃存頁(yè)。
【文檔編號(hào)】G06F12/00GK103718162SQ201280038141
【公開(kāi)日】2014年4月9日 申請(qǐng)日期:2012年8月13日 優(yōu)先權(quán)日:2011年8月12日
【發(fā)明者】黃亦仁 申請(qǐng)人:華為技術(shù)有限公司