將擦除碼數(shù)據(jù)分配到磁盤存儲器的方法和裝置制造方法
【專利摘要】分配處理允許擦除編碼數(shù)據(jù)被存儲在驅(qū)動(dòng)器池里的多個(gè)磁盤驅(qū)動(dòng)器的任何一個(gè)上,以便分配不會被捆綁到固定的驅(qū)動(dòng)器組。更進(jìn)一步講,可以通過多個(gè)不同擦除碼算法的任何一個(gè)產(chǎn)生編碼數(shù)據(jù),其中再次基于用來編碼數(shù)據(jù)的擦除算法,編碼數(shù)據(jù)的存儲不會局限于單個(gè)驅(qū)動(dòng)器組。在另一個(gè)實(shí)施例中,編碼數(shù)據(jù)能夠被“堆疊”(排列)在選中的驅(qū)動(dòng)器上以降低訪問數(shù)據(jù)所需要的磁盤尋道的數(shù)目。作為這些改進(jìn)的結(jié)果,所述系統(tǒng)能夠動(dòng)態(tài)地為給定的輸入數(shù)據(jù)塊確定使用多個(gè)擦除碼算法中的哪一個(gè),而不必像現(xiàn)有技術(shù)那樣被捆綁到一個(gè)特定算法以及一個(gè)特定存儲設(shè)備組。
【專利說明】將擦除碼數(shù)據(jù)分配到磁盤存儲器的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)存儲系統(tǒng)和允許使用多個(gè)擦除碼算法將數(shù)據(jù)放置在磁盤存儲器(disk storage)上的方法和裝置。
【背景技術(shù)】
[0002]文件系統(tǒng)、操作系統(tǒng)或其它存儲管理器的重要任務(wù)就是把數(shù)據(jù)放置在存儲器介質(zhì)上,諸如磁盤存儲器設(shè)備。數(shù)據(jù)被寫入哪里(被放置在磁盤上)以及它是何時(shí)以及如何被訪問的,對讀/寫性能能夠具有重要的影響。
[0003]另一個(gè)重要任務(wù)是在存儲器介質(zhì)遭受物理損壞的情況下,保護(hù)數(shù)據(jù)避免丟失(容錯(cuò)性)。RAID,獨(dú)立磁盤冗余陣列的縮寫,是在多個(gè)物理驅(qū)動(dòng)器之間劃分并復(fù)制數(shù)據(jù)的各種數(shù)據(jù)存儲器方案的涵蓋性術(shù)語,以便如果一個(gè)(或可能更多)驅(qū)動(dòng)器被損壞,那些驅(qū)動(dòng)器上丟失的數(shù)據(jù)是能夠被恢復(fù)的。每個(gè)方案提供兩個(gè)主要目標(biāo)之間的不同平衡:提高的數(shù)據(jù)可靠性以及提高的輸入/輸出(I/O)性能。
[0004]擦除碼(erasure coding)是糾錯(cuò)算法的集合,其使得在基于(例如RAID陣列的)多個(gè)磁盤驅(qū)動(dòng)器的存儲系統(tǒng)中的失效驅(qū)動(dòng)器上丟失的數(shù)據(jù)能夠被恢復(fù)。產(chǎn)生擦除編碼數(shù)據(jù)以及將擦除編碼數(shù)據(jù)寫到存儲器的大致過程包括:
[0005]1、數(shù)據(jù)以一系列的塊的方式到達(dá);
[0006]2、每個(gè)塊被分成子塊;
[0007]3、將擦除碼算法應(yīng)用于所述子塊組;
[0008]4、結(jié)果是以由所使用的具體算法確定的更大量的子塊(例如,包括奇偶校驗(yàn)數(shù)據(jù));
[0009]5、產(chǎn)生的子塊以由所使用的具體算法所確定的一個(gè)或多個(gè)子塊的組的方式被寫出到所述存儲器介質(zhì),每一個(gè)設(shè)備(例如磁盤驅(qū)動(dòng)器)一個(gè)組。
[0010]然后進(jìn)行如下的恢復(fù)過程(即,恢復(fù)在失效的磁盤驅(qū)動(dòng)器上丟失的數(shù)據(jù)):
[0011]1、從另一個(gè)(非失效)設(shè)備讀取剩余子塊組;
[0012]2、對剩余的子塊應(yīng)用恢復(fù)算法來產(chǎn)生丟失的數(shù)據(jù);
[0013]3、返回原始完整的數(shù)據(jù)塊。
[0014]上述過程的說明是通用的并適用于許多不同的擦除碼算法。每個(gè)碼算法具有其自身的關(guān)于如下的權(quán)衡取舍:
[0015]1、I/O 性能;
[0016]2、CPU 利用率;
[0017]3、存儲效率;
[0018]4、可容忍的驅(qū)動(dòng)器失效的數(shù)目。
[0019]根據(jù)現(xiàn)有行業(yè)標(biāo)準(zhǔn),數(shù)據(jù)大小、擦除碼算法以及磁盤驅(qū)動(dòng)器陣列是被作為一個(gè)整體捆綁到一起的,使得一旦為數(shù)據(jù)和算法建立了驅(qū)動(dòng)器組合配置,將不能夠改變擦除碼算法。在設(shè)計(jì)這種系統(tǒng)的時(shí)候,基于需要的冗余度、被存儲的數(shù)據(jù)量以及數(shù)據(jù)塊的粒度作出選擇?;谶@些參數(shù)以及平衡性能特性(諸如訪問時(shí)間以及恢復(fù)時(shí)間),選擇配置陣列(物理磁盤驅(qū)動(dòng)器的固定組)。一旦建立這個(gè)驅(qū)動(dòng)器分組,那么在那些驅(qū)動(dòng)器上只能夠使用指定的擦除碼算法來存儲數(shù)據(jù)。更進(jìn)一步講,以小于所選擦除碼算法指定的最小大小寫入數(shù)據(jù)導(dǎo)致性能命中(hit)(下降),因?yàn)樗枰臅r(shí)的讀取-更改-寫入,而不是簡單的寫入。
[0020]因此,需要一種更靈活的系統(tǒng)來向磁盤存儲分配擦除編碼數(shù)據(jù)。需要更高的靈活性來提高I/o性能、CPU利用率、存儲容量、容錯(cuò)性和/或恢復(fù)時(shí)間中的一個(gè)或多個(gè)。
【發(fā)明內(nèi)容】
[0021]根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供一種分配處理,其允許擦除編碼數(shù)據(jù)被存儲在驅(qū)動(dòng)器池中的多個(gè)磁盤驅(qū)動(dòng)器中的任何一個(gè)上,以便分配不會被捆綁到固定的驅(qū)動(dòng)器組。更進(jìn)一步講,能夠通過多個(gè)不同擦除碼算法的任一個(gè)產(chǎn)生編碼數(shù)據(jù),其中再次所述編碼數(shù)據(jù)的存儲不會局限于基于用來編碼所述數(shù)據(jù)的擦除算法的單個(gè)驅(qū)動(dòng)器組。在又一個(gè)實(shí)施例中,所述編碼數(shù)據(jù)能夠被“堆疊”(排列)在選中的驅(qū)動(dòng)器上來降低訪問數(shù)據(jù)所需要的磁頭尋道(head seek)的數(shù)目。作為這些改進(jìn)的結(jié)果,該系統(tǒng)能夠動(dòng)態(tài)地為給定的輸入數(shù)據(jù)塊確定使用多個(gè)擦除碼算法中的哪個(gè),而不是像現(xiàn)有技術(shù)那樣被捆綁到一個(gè)特定算法以及一個(gè)特定存儲器設(shè)備組。
[0022]根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供一種用于在存儲器上定位數(shù)據(jù)的計(jì)算機(jī)執(zhí)行的方法,包括計(jì)算機(jī)可執(zhí)行的動(dòng)作:
[0023]將由相同或不同擦除碼編碼的多個(gè)編碼數(shù)據(jù)對象分配到磁盤存儲設(shè)備池中的相同或不同設(shè)備上以用于存儲;
[0024]對每個(gè)要存儲在多個(gè)邏輯存儲單元的編碼對象,使用分配位屏蔽(bitmask)作為對可用的分配單元的單個(gè)請求,來將所述各個(gè)編碼對象存儲在多個(gè)邏輯存儲單元上,其中所述分配位屏蔽覆蓋(span)所述多個(gè)邏輯存儲單元,并包括與被存儲的編碼對象的起始分區(qū)邊界對準(zhǔn)的間隙。
[0025]在一個(gè)實(shí)施例中,所述分配步驟包括在不同設(shè)備上分配所述編碼對象。
[0026]在一個(gè)實(shí)施例中,所述分配步驟包括分配由不同擦除碼編碼的編碼對象。
[0027]在一個(gè)實(shí)施例中,所述分配步驟包括在相同的本地存儲單元上分配多個(gè)編碼對象。
[0028]在一個(gè)實(shí)施例中,所述分配步驟包括在相同的邏輯存儲單元組上分配多個(gè)編碼對象。
[0029]在一個(gè)實(shí)施例中,所述方法包括使用所述分配位屏蔽來請求與邏輯存儲單元邊界對準(zhǔn)的分配單元。
[0030]在一個(gè)實(shí)施例中,被編碼的數(shù)據(jù)的對象大小是固定的。
[0031 ] 在一個(gè)實(shí)施例中,被編碼的數(shù)據(jù)的對象大小是可變的。
[0032]在一個(gè)實(shí)施例中,所述數(shù)據(jù)對象是由不同類別的擦除碼來編碼的。
[0033]在一個(gè)實(shí)施例中,所述方法包括提供所述編碼數(shù)據(jù)對象的索引,其映射每個(gè)編碼數(shù)據(jù)對象到其各自的擦除碼。
[0034]在一個(gè)實(shí)施例中,所述分配步驟包括使用分配位圖(bitmap)標(biāo)記所述可用的分
配單元。[0035]在一個(gè)實(shí)施例中,所述分配位圖映射到邏輯地址空間。
[0036]在一個(gè)實(shí)施例中,邏輯目標(biāo)編號(LON)定義指向所述編碼對象的指針。
[0037]在一個(gè)實(shí)施例中,指向編碼對象的指針被存儲在索引記錄中。
[0038]在一個(gè)實(shí)施例中,所述索弓I記錄包括到指向所述編碼對象的多個(gè)指針。
[0039]在一個(gè)實(shí)施例中,所述分配步驟使用邊界位圖標(biāo)記所述編碼對象的初始塊的分配單元。
[0040]根據(jù)本發(fā)明的另一個(gè)實(shí)施例,提供一種在其上存儲有指令的計(jì)算機(jī)可讀介質(zhì),所述指令當(dāng)被載入計(jì)算機(jī)時(shí),執(zhí)行如上所述的方法步驟。
[0041]根據(jù)本發(fā)明的另一個(gè)實(shí)施例,提供一種可編程序邏輯,配置為執(zhí)行如上所述的方法步驟。
[0042]根據(jù)本發(fā)明的另一個(gè)實(shí)施例,提供一種數(shù)據(jù)存儲系統(tǒng),包括:
[0043]擦除碼算法選擇部件,用于為不同輸入數(shù)據(jù)對象選擇不同擦除碼算法來產(chǎn)生編碼數(shù)據(jù)對象;以及
[0044]磁盤存儲分配部件,用于將由所述不同算法編碼的編碼數(shù)據(jù)對象分配到磁盤存儲器設(shè)備池里的相同或不同設(shè)備上的任何可用的分配單元。
[0045]在一個(gè)實(shí)施例中,所述系統(tǒng)包括用于存儲所述編碼數(shù)據(jù)的磁盤存儲器設(shè)備池。
[0046]在一個(gè)實(shí)施例中,所述磁盤存儲分配部件使用分配位屏蔽來為每個(gè)編碼數(shù)據(jù)對象請求可用的存儲單元以跨邏輯存儲單元組的一個(gè)或者多個(gè)邏輯存儲單元存儲編碼對象,所述邏輯存儲單元組覆蓋池中的多個(gè)設(shè)備,并且其中所述位屏蔽包括允許所述編碼對象被存儲在所述池中的至少一個(gè)設(shè)備上的多個(gè)邏輯存儲單元上。
[0047]在一個(gè)實(shí)施例中,所述系統(tǒng)包括所述將編碼數(shù)據(jù)對象映射到其各自的擦除碼算法的索引。
[0048]根據(jù)本發(fā)明的另一個(gè)實(shí)施例,在定位數(shù)據(jù)存儲的計(jì)算環(huán)境中,提供一種數(shù)據(jù)結(jié)構(gòu),包括請求可用的分配單元以跨一個(gè)或多個(gè)邏輯存儲單元存儲編碼對象的分配位屏蔽,所述編碼數(shù)據(jù)對象以不同的擦除碼來被編碼,所述分配位屏蔽覆蓋跨多個(gè)磁盤驅(qū)動(dòng)器的多個(gè)邏輯存儲單元,以及所述位屏蔽包括與被存儲的編碼對象的開始分區(qū)邊界(startingpartition boundary)對準(zhǔn)的間隙,其中跨多個(gè)邏輯存儲單元請求可用的分配單元。
【專利附圖】
【附圖說明】
[0049]圖1是本發(fā)明的一個(gè)實(shí)施例的示意性高級系統(tǒng)體系結(jié)構(gòu),示出了利用不同擦除碼算法對輸入數(shù)據(jù)對象的編碼以及隨后將編碼數(shù)據(jù)分配到磁盤存儲器設(shè)備池中的存儲器;
[0050]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理流程圖,用于選擇擦除碼算法以及分配所述編碼數(shù)據(jù)到所述磁盤存儲器設(shè)備池中的磁盤存儲器;
[0051]圖3A-3B示出了利用4的2 (2of4)編碼算法編碼數(shù)據(jù)對象的一個(gè)示例;
[0052]圖3C-3D示出了利用6的4 (4of6)編碼算法編碼數(shù)據(jù)對象的另一個(gè)示例;
[0053]圖3E-3F示出了利用10的8 (8of 10)編碼算法編碼數(shù)據(jù)對象的另一個(gè)示例;
[0054]圖4A-4B示出了磁盤驅(qū)動(dòng)器池,每個(gè)驅(qū)動(dòng)器被分為分區(qū),以及延伸跨所述池中的驅(qū)動(dòng)器的邏輯存儲單元(LSU)組;
[0055]圖5示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于分配編碼數(shù)據(jù)對象的分配位屏蔽的一個(gè)示例;
[0056]圖6A-6C示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的用于分配編碼數(shù)據(jù)對象的分配位屏蔽的另一個(gè)示例;以及
[0057]圖7示出了用于處理并存儲數(shù)據(jù)的通用系統(tǒng)配置的一個(gè)實(shí)施例。
【具體實(shí)施方式】
[0058]現(xiàn)在參考【專利附圖】
【附圖說明】本發(fā)明的各種實(shí)施例。在隨后的描述中,為了說明的目的,提出了很多具體細(xì)節(jié),以便提供對本發(fā)明的一個(gè)或多個(gè)實(shí)施方式的全面了解。然而顯而易見的是,本發(fā)明可以在不具備這些具體細(xì)節(jié)的情況下實(shí)現(xiàn)。在其他實(shí)例中,以框圖的形式示出眾所周知的結(jié)構(gòu)和裝置,以便于描述本發(fā)明。
[0059]正如本申請中所使用的那樣,術(shù)語“部件”和“系統(tǒng)”意在指的是與計(jì)算機(jī)有關(guān)的實(shí)體:硬件、硬件和軟件的組合、軟件或者執(zhí)行中的軟件。例如,部件可以是但不局限于在處理器上運(yùn)行的處理、處理器、對象、可執(zhí)行的、執(zhí)行線程(thread of execution)、程序和/或計(jì)算機(jī)。通過圖示,在服務(wù)器上運(yùn)行的應(yīng)用程序以及服務(wù)器都可以是部件。一個(gè)或多個(gè)部件可以駐留在處理器和/或執(zhí)行線程中,并且部件可以位于在一個(gè)計(jì)算機(jī)上和/或在兩個(gè)或更多計(jì)算機(jī)之間分布。
[0060]本發(fā)明也可以作為本發(fā)明的處理的流程圖來示出。盡管為了簡單說明的目的,以流程圖的形式被示出的一個(gè)或多個(gè)方法被描述為一連串的動(dòng)作,然而應(yīng)該理解和知道的是,本發(fā)明不受這些動(dòng)作的順序所限制,因?yàn)槟承﹦?dòng)作可以,依照本發(fā)明,以不同的順序出現(xiàn)和/或和與此處示出和描述的動(dòng)作不同的動(dòng)作一起出現(xiàn)。例如,本領(lǐng)域技術(shù)人員可以理解并知道的是,方法可以可替換地表示為一系列相互關(guān)聯(lián)的狀態(tài)或者事件,諸如以狀態(tài)圖示出的。此外,并不需要所有示出的動(dòng)作來實(shí)現(xiàn)根據(jù)本發(fā)明的方法。
[0061]在這里公開的本發(fā)明的各種實(shí)施例中,術(shù)語“數(shù)據(jù)”,“數(shù)據(jù)元素”或“數(shù)據(jù)對象”可互換地使用。正如此處使用的那樣,數(shù)據(jù)指的是不透明的數(shù)據(jù)集,例如任意的符號(通常由“O”和“ I”表示)序列,其可以被輸入到計(jì)算機(jī)中,在那里存儲和處理或被傳輸?shù)搅硪粋€(gè)計(jì)算機(jī)。正如此處使用的那樣,數(shù)據(jù)包括元數(shù)據(jù),其它數(shù)據(jù)的描述。寫入到如此處所述的存儲系統(tǒng)的數(shù)據(jù)可以是相同大小的數(shù)據(jù)對象,或可變的大小的數(shù)據(jù)對象。
[0062]此處使用的“存儲系統(tǒng)”可以是用于將數(shù)據(jù)存儲到磁盤存儲器的任意系統(tǒng)或應(yīng)用程序,例如,文件系統(tǒng)、塊存儲設(shè)備或其它系統(tǒng)。存儲系統(tǒng)可以使用標(biāo)識符或名稱來引用在存儲器中的每個(gè)數(shù)據(jù)元素。在一個(gè)示例中,名稱是全球唯一標(biāo)識符(GUID),諸如數(shù)據(jù)內(nèi)容的散列,優(yōu)選的是,加密散列或數(shù)據(jù)內(nèi)容的抗沖突散列(collision resistant hash)。其它命名規(guī)則也是可能的,只要每個(gè)數(shù)據(jù)元素在允許給用戶恢復(fù)存儲的數(shù)據(jù)的存儲系統(tǒng)內(nèi)具有名稱。在一個(gè)實(shí)施例中,中心服務(wù)器產(chǎn)生名稱。數(shù)據(jù)名稱通常是固定長度的二進(jìn)制串,意在被程序使用,而不是被人類使用。所述存儲系統(tǒng)可以需要所有數(shù)據(jù)的索引(有時(shí)稱為詞典或目錄)來用于訪問(定位)每個(gè)數(shù)據(jù)元素。索引中的每個(gè)記錄可以包含所述數(shù)據(jù)元素的名稱,它的邏輯和/或物理位置(地址),以及與所述各個(gè)數(shù)據(jù)元素相關(guān)的其他信息。在一個(gè)實(shí)施例中,每個(gè)索引項(xiàng)包括指向磁盤上的存儲有數(shù)據(jù)對象的物理塊地址的指針。在一個(gè)實(shí)施例中,固定算法可以用來定位磁盤上的存儲有數(shù)據(jù)的物理位置。
[0063]A.系統(tǒng)體系結(jié)構(gòu)[0064]圖1舉例說明了本發(fā)明一個(gè)實(shí)施例的高級系統(tǒng)體系結(jié)構(gòu)100。存儲系統(tǒng)104接收輸入數(shù)據(jù)對象102用于放置在磁盤存儲池112的磁盤存儲設(shè)備dl、d2、d3、d4、d5、d6...上。系統(tǒng)104包括擦除碼算法選擇部件106和磁盤存儲分配部件108。部件106為每個(gè)輸入數(shù)據(jù)對象(D01,D02, D03...)選擇多個(gè)擦除碼算法(ECA1, ECA2, ECA3...)中的一個(gè),以將所選的數(shù)據(jù)對象編碼到編碼數(shù)據(jù)塊組110(ED1,ED2,ED3...)。部件108然后將這些塊組分配到這種設(shè)備的池112中的多個(gè)磁盤存儲設(shè)備,每個(gè)設(shè)備一個(gè)塊組,其中塊組到設(shè)備的分配可以針對每個(gè)數(shù)據(jù)對象獨(dú)立地執(zhí)行,并且所述分配不局限于設(shè)備池112中的設(shè)備的相鄰集或固定集。例如,圖1示出數(shù)據(jù)對象DOl的多個(gè)塊組EDl已經(jīng)被分配給磁盤dl,d2,d4,d5...;數(shù)據(jù)對象D02的多個(gè)塊組ED2已經(jīng)被分配給設(shè)備d2,d6...;并且D03的多個(gè)塊組ED3已經(jīng)被分配給設(shè)備dl,d3,d4...。因此,對于三個(gè)不同編碼算法,產(chǎn)生的編碼數(shù)據(jù)可以存儲在磁盤池112中的相同或不同磁盤子組上。
[0065]圖2是舉例說明本發(fā)明的一個(gè)實(shí)施例的用于選擇擦除碼算法以及將編碼數(shù)據(jù)分配到磁盤存儲設(shè)備池中的磁盤存儲器的處理的流程圖。在202,處理開始于接收輸入數(shù)據(jù)對象(DO)。在204,所述處理從多個(gè)不同擦除碼算法(ECA1, ECA2, ECA3...)選擇一個(gè)用于產(chǎn)生所述DO的編碼數(shù)據(jù)。在206,選中的算法產(chǎn)生編碼數(shù)據(jù)ECdq,在208,所述處理將所述編碼數(shù)據(jù)ECiw分配給多個(gè)塊組(根據(jù)選中的EC算法所要求的)并從設(shè)備池的那些磁盤存儲器中選擇對應(yīng)數(shù)目的磁盤存儲器。在210,產(chǎn)生的塊組被寫入所述選中的磁盤存儲設(shè)備,每個(gè)設(shè)備一個(gè)塊組。如果在步驟212存在其他輸入D0,所述處理返回到步驟202。否則所述處理結(jié)束。
[0066]根據(jù)本發(fā)明的各種實(shí)施例,選中的來編碼數(shù)據(jù)的所述擦除碼(EC)算法可以隨著不同輸入數(shù)據(jù)對象而不同。例如,在一天中在系統(tǒng)具有高利用率(例如,其容量的85%都在運(yùn)行)的繁忙時(shí)期,存儲系統(tǒng)可以決定選擇較簡單的擦除碼來降低編碼數(shù)據(jù)所需的CPU時(shí)間。該權(quán)衡對驅(qū)動(dòng)器失效有較小的容忍度。然而,在一天的晚些時(shí)候,例如在晚上,當(dāng)CPU不繁忙的時(shí)候,存儲系統(tǒng)可以從存儲在池中的編碼數(shù)據(jù)檢索原始數(shù)據(jù),使用不同的、更復(fù)雜的擦除碼重新計(jì)算原始數(shù)據(jù)然后儲存這些編碼數(shù)據(jù)以提高數(shù)據(jù)保護(hù)的級別。
[0067]在另一個(gè)情況中,決定使用哪一個(gè)擦除碼可以取決于接收數(shù)據(jù)的類型。例如,較大的數(shù)據(jù)對象可適應(yīng)許多不同的擦除碼算法,均導(dǎo)致存儲空間的有效利用以及可接受的計(jì)算周期數(shù)目。作為選擇,較小的對象可以適應(yīng)僅僅少數(shù)或不同類型的擦除碼算法。因此,基于輸入數(shù)據(jù),存儲系統(tǒng)可以動(dòng)態(tài)地確定使用哪一個(gè)擦除碼來對每個(gè)各自的輸入數(shù)據(jù)進(jìn)行編碼。
[0068]舉例來說,圖3A-3F舉例說明使用不同的擦除碼算法來產(chǎn)生編碼數(shù)據(jù),其中編碼數(shù)據(jù)然后能夠被存儲在磁盤存儲器設(shè)備的公共池上。
[0069]在這一系列的示例中,擦除碼類別被標(biāo)記為“b的a”,其中“b”是編碼數(shù)據(jù)塊組要存儲在其上的磁盤存儲設(shè)備(例如驅(qū)動(dòng)器)的數(shù)目,每一個(gè)設(shè)備一個(gè)塊組,以及“a”是那些為了再生原始數(shù)據(jù)而必須存在的設(shè)備的數(shù)目。圖3A-3B舉例說明示例A,其中EC類別4的2的算法用于編碼8KB大小的數(shù)據(jù)對象。圖3C-3D舉例說明示例B,其中EC類別6的4的算法用于編碼16KB大小的數(shù)據(jù)對象。圖3E-3F舉例說明示例C,其中EC類別10的8的算法用于編碼32KB大小的數(shù)據(jù)對象。算法能夠用于編碼其它大小的數(shù)據(jù)對象,例如,圖3C以及3E的表中示出的那些。[0070]圖3A-3B的示例A中,數(shù)據(jù)對象302在304由4的2的擦除算法編碼,并且編碼數(shù)據(jù)作為4個(gè)塊組306,分別分配到磁盤存儲池308中的4個(gè)磁盤驅(qū)動(dòng)器dl,d2, d4和d6中的每一個(gè)。圖3B舉例說明編碼處理,其中X = 8KB大小的原始數(shù)據(jù)對象302被分為大小為X/8的8個(gè)元素,一起示為對象312。然后,8個(gè)元素與糾錯(cuò)算法(根據(jù)EC算法)結(jié)合產(chǎn)生16個(gè)每個(gè)大小均為X/8的塊,一起示為對象314。16塊被分成4個(gè)每個(gè)大小均為X/2的塊組,該4個(gè)塊組被標(biāo)記為316a、316b、316c以及316d。將不同的塊組分別發(fā)送給圖3A所示的池308中的選中的磁盤驅(qū)動(dòng)器dl、d2、d4和d6中的每一個(gè)。編碼數(shù)據(jù)使用的總共存儲空間是16KB(表300)。這表示50%的效率(在16KB的總共存儲空間上存儲了 8KB大小的對象)。
[0071]比較起來,示例B使用6的4類別的算法來在24KB的總共存儲空間上編碼16KB大小的較大對象,達(dá)到67%的效率。作為選擇,更大的對象大小,例如32KB、64KB、128KB和256KB,能夠利用這種6的4算法編碼并產(chǎn)生圖3C的表格320所示的相似效率。在這特定的示例中,數(shù)據(jù)對象322在324由6的4算法編碼,并且產(chǎn)生的6個(gè)塊組326被存儲在與圖3A的4的2類別編碼數(shù)據(jù)使用的相同的池308中的任意六個(gè)磁盤驅(qū)動(dòng)器上,這里是dl、d2、d4、d5、d6和d7。圖3D舉例說明X = 16KB大小的數(shù)據(jù)對象322如何被分成16個(gè)X/16大小的元素,一起示為對象332。然后,332的16個(gè)元素被編碼為24個(gè)大小為X/16的相等大小的塊(包括糾錯(cuò)元素),一起示為對象324。然后該24塊被分成大小為X/4的6個(gè)相等大小的塊組,這里表示為336&-乜并存儲在六個(gè)驅(qū)動(dòng)器(11、(12、(14、(15、(16以及d7上。因此對于大小為16KB的對象的6的4編碼被存儲在24KB的總存儲空間中,達(dá)到67%的效率。此外,根據(jù)本發(fā)明,以該6的4的EC類別算法(不同于圖3A的算法類別)編碼的數(shù)據(jù)可以被存儲在與4的2類別算法(圖3A的)編碼的數(shù)據(jù)所存儲到的磁盤存儲池308中的相同的驅(qū)動(dòng)器的所有或者一些上。
[0072]圖3E舉例說明示例C,其中使用10的8的EC類別算法來在40KB的總共存儲空間上編碼大小為32KB的對象,達(dá)到80%的效率。數(shù)據(jù)對象342在344由10的8的EC算法編碼并且被分成10個(gè)相等大小的塊組346,其被發(fā)送給池308中的10個(gè)磁盤驅(qū)動(dòng)器(這里是dl、d2、d3、d4、d5、d6、d7、d9、dl0 以及 dll)中的任何一個(gè)。如圖 3F 所示,X = 32KB 大小的數(shù)據(jù)對象342被分成32個(gè)X/32大小的元素,一起示為對象352。然后元素被編碼為40個(gè)大小為X/32的相等塊,包括糾錯(cuò)碼,并一起示為對象354。然后將對象354分成10個(gè)相等大小的塊組,每個(gè)大小為X/8,顯示為塊組356a-j。再次,這些塊組被存儲在與圖3A,3C和3E示出的池308的相同磁盤驅(qū)動(dòng)器的一些或者所有上。如表格340中所示,這些相同的10的8的EC算法可以用于編碼其他大小的數(shù)據(jù)。
[0073]B.位屏蔽分配和對準(zhǔn)邊界的分配
[0074]現(xiàn)在將描述本發(fā)明的更多的【具體實(shí)施方式】,其中使用位屏蔽來分配編碼數(shù)據(jù)給一個(gè)或多個(gè)磁盤存儲設(shè)備中的多個(gè),所述位分配碼用于沿著一個(gè)或者多個(gè)對準(zhǔn)的邊界來分配以加快分配和恢復(fù)處理。
[0075]在一個(gè)示例中,基于被存儲在索引中的數(shù)據(jù)對象的數(shù)目(索引項(xiàng)的數(shù)目)和基于存儲索引的介質(zhì)大小,最小的對象大小被選擇為4KB(即,索引項(xiàng)可以表示的最小數(shù)據(jù)的大小)。每個(gè)索引項(xiàng)具有指向磁盤上存儲有數(shù)據(jù)的物理位置的指針。指針不能表示小于4KB的數(shù)據(jù)。這里,分配單元(最小數(shù)據(jù)大小請求)被選為與最小對象大小相同,即4KB。因此,如下所述,分配位屏蔽上的一位,以及每一個(gè)對應(yīng)分配位圖和邊界位圖上的一位,表示4KB。
[0076]圖4A-4B舉例說明磁盤存儲池402的一個(gè)實(shí)施例,其包括六個(gè)磁盤驅(qū)動(dòng)器404a_f。所述驅(qū)動(dòng)器可以具有不同類型和大小。每個(gè)磁盤驅(qū)動(dòng)器被分區(qū),意味著每個(gè)磁盤驅(qū)動(dòng)器被分為多個(gè)邏輯存儲單元,每個(gè)邏輯存儲單元被定義為一個(gè)分區(qū)406??珧?qū)動(dòng)器404a-f延伸的分區(qū)組中的6個(gè)分區(qū)406a-f每個(gè)均有相同的大小,并且屬于一個(gè)邏輯存儲單元組408。在一個(gè)邏輯存儲單元中不可能有相同驅(qū)動(dòng)器中的兩個(gè)分區(qū)。如下所述,分配位圖和邊界位圖被用于將擦除編碼數(shù)據(jù)分配到驅(qū)動(dòng)器。
[0077]圖4B顯示圖4A的相同驅(qū)動(dòng)器池402的更多細(xì)節(jié),包括跨所有驅(qū)動(dòng)器404a_f延伸的一個(gè)邏輯存儲單元(LSU)組408a的示意圖。LSU組408a包括多個(gè)分層的邏輯存儲單元412a-o,其中每個(gè)跨所述LSU組408a的所有驅(qū)動(dòng)器(分區(qū))延伸。LSU組408a的每個(gè)分區(qū)406a-f具有邏輯存儲單元412a-o的多個(gè)分層分區(qū)片段,所述分區(qū)中的每個(gè)LSU片段沿著初始分區(qū)邊界414和結(jié)束分區(qū)邊界416對準(zhǔn),將每個(gè)磁盤驅(qū)動(dòng)器404a-f分別標(biāo)記為414a_f和416a-f。每個(gè)分區(qū)406中的組408a的多個(gè)邏輯存儲單元大小相同,并顯示為一個(gè)堆疊在另一個(gè)的頂部。
[0078]通常,編碼數(shù)據(jù)可以如下被分配給單個(gè)邏輯存儲單元組。首先,數(shù)據(jù)進(jìn)入,并被分解為對象(相同或可變的大小的數(shù)據(jù)段),并且然后通常被散列。建立對象記錄,其中包含對象名(例如,散列)和對象大小。然后根據(jù)選擇的擦除碼將對象編碼,并且產(chǎn)生分配位屏蔽以向分配器(allocator),例如參見圖1中的部件108,說明編碼對象必須被如何存儲。分配器在介質(zhì)(例如磁盤存儲器)上尋找匹配位屏蔽的存儲空間。然后將數(shù)據(jù)寫出到該介質(zhì),并為索引中的那個(gè)對象在對象記錄中存儲指針。
[0079]通常,所述分配器在分配位屏蔽和分配位圖之間執(zhí)行位對位的比較。存儲器系統(tǒng)使用單個(gè)分配位圖來記錄整個(gè)系統(tǒng)中的所有存儲器的狀態(tài)(可利用性)。位圖可以存儲在配置文件中。分配位屏蔽和分配位圖的比較可以被(抽象地)描述為:將位屏蔽在位圖上滑動(dòng)直到所述位屏蔽中的模式匹配它下面的位圖。當(dāng)發(fā)現(xiàn)匹配的時(shí)候,這標(biāo)識了用于存儲所述數(shù)據(jù)的位置。然后將該位置存儲在索引的對象記錄中作為指針。在一個(gè)實(shí)施例中,分配位圖映射到邏輯地址空間,并且到編碼對象的指針是邏輯對象編號(LON),其被存儲在索引中的對象記錄中。
[0080]圖5舉例說明根據(jù)本發(fā)明的在單個(gè)邏輯存儲單元上分配編碼數(shù)據(jù)的一個(gè)示例。在該示例中,分配位屏蔽502被提供給對象,用于在驅(qū)動(dòng)器池(例如,圖1,3,4所示的池的類型)的24個(gè)驅(qū)動(dòng)器上定位40KB的可用的存儲空間。32KB大小的數(shù)據(jù)對象是由10的8的擦除碼算法編碼的,產(chǎn)生10個(gè)相等大小的塊組,每個(gè)大小是4KB。這里,分配位屏蔽502被示出具有24個(gè)分配片段(位),所述邏輯存儲單元組中的24個(gè)驅(qū)動(dòng)器中的每一個(gè)均有一位。開始10位(501)被設(shè)置為“0”,意味著需要(請求)他們在所述邏輯存儲單元組的任意10個(gè)連續(xù)驅(qū)動(dòng)器上分配所述編碼數(shù)據(jù)(用于存儲10個(gè)編碼塊組,每個(gè)驅(qū)動(dòng)器一個(gè)塊組),其中連續(xù)意味著向后繞到下一個(gè)邏輯存儲單元(LSU)的第一個(gè)驅(qū)動(dòng)器。例如,如果所述第一可用的塊是在LSUll的驅(qū)動(dòng)器20上,那么具有10個(gè)塊組的對象會通過將開始5個(gè)塊組放置在LSUll的驅(qū)動(dòng)器20-25上來存儲,并且剩余的5個(gè)塊組會繞回LSU12的驅(qū)動(dòng)器I并且持續(xù)直到完全地存儲在LSU12的驅(qū)動(dòng)器1-5上。與此相反,在圖5的示例中,第一可用塊與LSU組中的第一驅(qū)動(dòng)器對準(zhǔn)。剩余14位(503)被標(biāo)上X,意味著他們不被需要(不管他們是否處于空閑或不空閑)。通常,所述位屏蔽會被縮短(例如由于消耗更少存儲空間以及更少處理的原因)到所請求的“O”位的最短長度,在此例子中是10。產(chǎn)生的分配位圖504被示出在位屏蔽502下并與其對準(zhǔn)。分配位圖的所述開始10位(505)被標(biāo)上“1”,因此將該10個(gè)編碼的塊組給池中的開始10個(gè)驅(qū)動(dòng)器的每個(gè)分配一個(gè),同時(shí)不能夠用于存儲編碼數(shù)據(jù)的剩余的14位(507)被標(biāo)上“O”。這些位可以是O或者1,取決于他們是否被預(yù)先分配。在此情況下,他們設(shè)有被預(yù)先分配。在分配位圖504之下對準(zhǔn)示出的邊界位圖506,相似地具有24個(gè)片段(位),第一位(508)被標(biāo)上“I”來表示所述編碼數(shù)據(jù)對象的第一塊被存儲在哪一個(gè)分區(qū)號碼(哪一個(gè)驅(qū)動(dòng)器)上,這里是LSU組的第一驅(qū)動(dòng)器。
[0081 ] 根據(jù)這些編碼方案,整個(gè)或部分的邏輯存儲單元可以被立刻分配和寫入。此外,部分的邏輯存儲單元讀取是可能的,例如只讀取被請求的對象。
[0082]例如,可以將用于對象的起始塊(分配單元)連同對象的長度一起存儲在索引記錄中。這會提供定位(讀取)一個(gè)對象并且僅僅是那個(gè)對象所需要的所有信息。然而在某些情況下,對象大小超過分配位屏蔽的容量。對這個(gè)問題的一個(gè)解決方案通過圖6A-6C的編碼示例來舉例說明,其中希望在10的8的擦除碼的要求(10個(gè)驅(qū)動(dòng)器)內(nèi)編碼較大的對象(80KB),以便每個(gè)驅(qū)動(dòng)器必須保存8KB的數(shù)據(jù)。這是(在此例子中)預(yù)先確定的,即分配位屏蔽的每位只能夠表示4KB的數(shù)據(jù)。這個(gè)導(dǎo)致了選擇。
[0083]一種選擇是將對象大小限制為等于(分配的粒度)與(EC算法所要求的塊組數(shù)目)的乘積的數(shù)目。這將迫使大的對象,諸如在當(dāng)前實(shí)施例中(80KB),被編碼為兩個(gè)獨(dú)立的對象,兩個(gè)均落在不同的邏輯存儲單元組上或在相同邏輯存儲單元組上的邏輯存儲單元之間具有間隙。這種選擇比現(xiàn)有技術(shù)的只允許連續(xù)分配的分配方法仍舊更加靈活,而本發(fā)明的分配位屏蔽允許間隙并允許非連續(xù)的分配。
[0084]第二選擇,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,允許每一塊組具有多個(gè)分配位的一個(gè)請求。這個(gè)選擇在圖6A-6C中示例說明了。在圖6A中,每個(gè)塊組在所述分配位屏蔽中被分配了兩位,每個(gè)塊組的初始位是沿著相同邏輯存儲單元組中的兩個(gè)邏輯存儲單元615a、615b的公共邊界對準(zhǔn)的。更一般來講,所述公共邊界可以是任意分區(qū)邊界,即,所述數(shù)據(jù)塊不必存儲在邏輯存儲單元組中第一驅(qū)動(dòng)器上,而是可以起始于池中的任意驅(qū)動(dòng)器來存儲。圖6A在中,分配位屏蔽602,用于一個(gè)分配80KB數(shù)據(jù)的對象,具有表示第一邏輯存儲單元601 (跨24個(gè)驅(qū)動(dòng)器)的初始24位以及表示第二邏輯存儲單元603 (跨24個(gè)驅(qū)動(dòng)器)的第二 24位。表示所述第一邏輯存儲單元的所述第一 24位的第一 10位(608)用陰影示出以將它們標(biāo)記為被請求(必須處于空閑),而接下來的14位(610)是無陰影的(不必處于空閑)。此夕卜,表示第二邏輯存儲單元的第二 24位的第一 10位(612)也被陰影示出(被請求處于空閑),而接下來的14位(614)不被需要(并且在僅僅請求兩個(gè)邏輯存儲單元的此例子中是不相關(guān)的)。無陰影的位610是重要的,他們構(gòu)成“間隙”,所述間隙利用一個(gè)請求使得所有80KB的數(shù)據(jù)能夠被分配到跨10個(gè)驅(qū)動(dòng)器的兩個(gè)邏輯存儲單元上。
[0085]這里,使用單個(gè)位屏蔽602來將單個(gè)對象存儲到80KB的總共存儲空間中,存儲的數(shù)據(jù)被分配成兩個(gè)相等的40KB部分608、612,其對準(zhǔn)在所述邏輯存儲單元邊界615上。在第一邏輯存儲單元的分配片段1-1(K608)和第二邏輯存儲單元的分配片段1-1(Κ612)之間的分配位屏蔽中提供未分配“間隙”610的14個(gè)片段,使得能夠使用單個(gè)位屏蔽來將所述編碼數(shù)據(jù)分配到對準(zhǔn)在公共邏輯存儲單元邊界615上的多個(gè)邏輯存儲單元。如前所述的,公共邊界可以是任意的分區(qū)邊界,不必是邏輯存儲單元邊界。
[0086]圖6B舉例說明產(chǎn)生的分配位圖604和邊界位圖606。分配位圖604相似地具有48個(gè)片段,第一 24個(gè)片段表示第一邏輯存儲單元601并且第二 24個(gè)片段表示所述第二邏輯存儲單元603。將在每個(gè)第一和第二邏輯存儲單元601、603中的所述第一 10個(gè)片段608、612分別分配給所述編碼對象數(shù)據(jù)的10個(gè)塊組(每個(gè)塊組2位)。邊界位圖606具有48個(gè)片段,第一片段625標(biāo)記包含所述編碼對象的所述第一塊的磁盤存儲塊(第一邏輯存儲單元的第一塊)。
[0087]圖6C舉例說明如何將編碼數(shù)據(jù)的兩個(gè)相等大小為40KB的部分628、632以堆疊對準(zhǔn)的形式對準(zhǔn)在相同的分區(qū)(例如,邏輯存儲單元)邊界615上。圖6C是存儲在磁盤存儲器630上的編碼數(shù)據(jù)的視圖,其中每列都是驅(qū)動(dòng)器,并且每行都是邏輯存儲單元。通過將編碼數(shù)據(jù)堆疊在公共邊界615上,這使得磁頭利用單個(gè)驅(qū)動(dòng)頭搜索來訪問編碼數(shù)據(jù)的兩個(gè)邏輯存儲單元,即,單個(gè)頭可以在不違反擦除碼的需要的情況下,在多個(gè)邏輯存儲單元上訪問更大量的存儲數(shù)據(jù)。這提高了 I/O性能。在此例子中,如果兩個(gè)驅(qū)動(dòng)器失效,可以利用8頭搜索再生所述編碼數(shù)據(jù)。相比之下,現(xiàn)有技術(shù)可能需要16頭搜索來再生數(shù)據(jù)。
[0088]上述示例舉例說明如何在不違反擦除碼要求的情況下,使用索引中的單個(gè)指針將單個(gè)對象跨多個(gè)邏輯存儲單元分配。分配位圖允許與分區(qū)邊界排列成行的未分配的間隙。此外允許在單個(gè)請求中編碼較大的對象。通過在邏輯存儲單元組中跨連續(xù)的分區(qū)以及連續(xù)的邏輯存儲單元放置單個(gè)對象,可以將編碼數(shù)據(jù)堆疊(平鋪)在一個(gè)或多個(gè)磁盤驅(qū)動(dòng)器上。在圖6的示例中,一旦上一個(gè)驅(qū)動(dòng)器被映射,便使用單個(gè)位屏蔽(請求)將來自每個(gè)驅(qū)動(dòng)器的4KB塊連續(xù)地并且向后繞回地映射到第一驅(qū)動(dòng)器。
[0089]更進(jìn)一步講,根據(jù)本發(fā)明的一個(gè)實(shí)施例,可以將一個(gè)以上的數(shù)據(jù)對象放置在邏輯存儲單元,例如圖5中舉例說明的分配位屏蔽502上的剩余14個(gè)驅(qū)動(dòng)器,或圖6的分配位屏蔽上的剩余14個(gè)驅(qū)動(dòng)器,可以存儲其他數(shù)據(jù)對象。此外,可以通過多個(gè)不同的編碼算法來編碼邏輯存儲單元上的編碼數(shù)據(jù)。為了將對象存儲在該邏輯存儲單元組,唯一的要求是編碼算法所需要的驅(qū)動(dòng)器數(shù)目小于或等于該邏輯存儲單元組中的分區(qū)。
[0090]在上述示例中的分配位圖為存儲編碼數(shù)據(jù)標(biāo)記哪一個(gè)邏輯對象編號(LON)是可用的。邊界位圖標(biāo)記包含編碼對象的第一塊的塊。邊界位圖用于將物理塊編號(PBN)反向映射到對象記錄。例如,如果磁盤驅(qū)動(dòng)器失效,為了再生在磁盤驅(qū)動(dòng)器失效的時(shí)候在所述驅(qū)動(dòng)器上的數(shù)據(jù),必須知道哪個(gè)對象塊組駐留在失效的驅(qū)動(dòng)器上,以從編碼的數(shù)據(jù)中重新計(jì)算出丟失的數(shù)據(jù)。存在兩種方法來做這個(gè):
[0091]I)針對所有具有屬于該失效驅(qū)動(dòng)器的地址(L0N至LON+長度)的對象掃描所述索引;當(dāng)發(fā)現(xiàn)一個(gè)對象滿足所述標(biāo)準(zhǔn)的時(shí)候,讀取剩余的對象塊組,重新計(jì)算所述丟失的數(shù)據(jù),并重寫所述丟失的塊組;或
[0092]2)針對覆蓋所述失效驅(qū)動(dòng)器的對象邊界掃描所述分配和邊界位圖;當(dāng)找到的時(shí)候,讀取所述剩余對象塊組,重新計(jì)算所述丟失數(shù)據(jù),并重寫所述丟失塊組。
[0093]方法I需要磁盤和索引操作兩者。方法2僅僅需要磁盤操作。
[0094]C.計(jì)算和存儲環(huán)境
[0095]先前描述的EC算法選擇和數(shù)據(jù)存儲分配方法可以在合適的計(jì)算和存儲環(huán)境中執(zhí)行,例如,可以在于一個(gè)或多個(gè)計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)可執(zhí)行指令的環(huán)境中。在例如分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行某些任務(wù),以及程序模塊可以位于本地和遠(yuǎn)程存儲器存儲設(shè)備兩者中。通信網(wǎng)絡(luò)可以包括全局區(qū)域網(wǎng)絡(luò),例如因特網(wǎng),局域網(wǎng),廣域網(wǎng)或其它計(jì)算機(jī)網(wǎng)絡(luò)。將理解的是,此處所述的網(wǎng)絡(luò)連接是示例性的,并且可以使用其它在計(jì)算機(jī)之間建立通信的裝置。
[0096]計(jì)算機(jī)可以包括處理單元、系統(tǒng)存儲器和系統(tǒng)總線,其中系統(tǒng)總線耦合系統(tǒng)部件,包括但不限于系統(tǒng)存儲器和處理單元。計(jì)算機(jī)還包括磁盤驅(qū)動(dòng)器和到外部部件的接口。各種計(jì)算機(jī)可讀介質(zhì)可以由計(jì)算機(jī)訪問,并且包括易失的和非易失介質(zhì),可移除的和非可移除的介質(zhì)。計(jì)算機(jī)可以包括各種用戶接口設(shè)備,包括顯示屏幕,觸摸屏,鍵盤或鼠標(biāo)。
[0097]現(xiàn)在參見圖7,舉例說明了用于在計(jì)算機(jī)和多個(gè)磁盤存儲設(shè)備之間通信的通用系統(tǒng)配置700的一個(gè)示例。磁盤存儲器可以是各種存儲設(shè)備中的任一種,在所述存儲設(shè)備中數(shù)據(jù)是數(shù)字化地通過各種電子、磁、光或機(jī)械方法記錄在一個(gè)或者多個(gè)旋轉(zhuǎn)磁盤表面上的,包括硬盤驅(qū)動(dòng)器,軟盤驅(qū)動(dòng)器和光盤驅(qū)動(dòng)器。CPU702被示出與系統(tǒng)存儲器704相連,并且系統(tǒng)總線706將CPU連接到芯片組708。芯片組經(jīng)由IO總線710和多個(gè)IO插槽712被連接到各種輸入/輸出設(shè)備的任何一個(gè),諸如用于連接多個(gè)磁盤驅(qū)動(dòng)器716的驅(qū)動(dòng)控制器。芯片組也可以與其它存儲設(shè)備718相連。所述芯片組可以包括一個(gè)或多個(gè)視頻端口 720,網(wǎng)絡(luò)端口 722,鼠標(biāo)端口 724,鍵盤端口 726等等。
[0098]以上所描述的包括本發(fā)明的示例。當(dāng)然,為了描述本發(fā)明,不可能描述每個(gè)想得到的部件或方法的組合,但本領(lǐng)域普通技術(shù)人員將意識到的是本發(fā)明的進(jìn)一步組合和置換是可能的。因此,本發(fā)明意在包含所有屬于本發(fā)明和/或權(quán)利要求書的這種交替、修改和變化。
【權(quán)利要求】
1.一種用于在存儲設(shè)備上定位數(shù)據(jù)的計(jì)算機(jī)執(zhí)行的方法,包括計(jì)算機(jī)可執(zhí)行的如下動(dòng)作: 將由相同或不同擦除碼編碼的多個(gè)編碼數(shù)據(jù)對象分配到磁盤存儲設(shè)備池中的相同或不同設(shè)備以用于存儲; 對要存儲在多個(gè)邏輯存儲單元上的每個(gè)編碼對象,使用分配位屏蔽作為對于可用的分配單元的單個(gè)請求來將相應(yīng)編碼對象存儲在所述多個(gè)邏輯存儲單元上,其中所述分配位屏蔽覆蓋所述多個(gè)邏輯存儲單元,并包括與被存儲的所述編碼對象的起始分區(qū)邊界對準(zhǔn)的間隙。
2.如權(quán)利要求1所述的方法,其中: 所述分配步驟包括:在不同設(shè)備上分配所述編碼對象。
3.如權(quán)利要求2所述的方法, 所述分配步驟包括:分配由不同的擦除碼編碼的編碼對象。
4.如權(quán)利要求1所述的方法,其中: 所述分配步驟包括:分配 由不同的擦除碼編碼的編碼對象。
5.如權(quán)利要求1所述的方法,其中: 所述分配步驟包括:在相同邏輯存儲單元上分配多個(gè)編碼對象。
6.如權(quán)利要求1所述的方法,其中: 所述分配步驟包括:在相同邏輯存儲單元組上分配多個(gè)編碼對象。
7.如權(quán)利要求1所述的方法,包括: 使用所述分配位屏蔽來請求與邏輯存儲單元邊界對準(zhǔn)的分配單元。
8.如權(quán)利要求1所述的方法,其中: 被編碼的數(shù)據(jù)的對象大小是固定的。
9.如權(quán)利要求1所述的方法,其中: 被編碼的數(shù)據(jù)的對象大小是可變的。
10.如權(quán)利要求1所述的方法,其中: 數(shù)據(jù)對象是由不同類別的擦除碼編碼的。
11.如權(quán)利要求1所述的方法,包括: 提供所述編碼數(shù)據(jù)對象的索引,其將每個(gè)編碼數(shù)據(jù)對象映射到其各自的擦除碼。
12.如權(quán)利要求1所述的方法,其中: 所述分配步驟包括:使用分配位圖標(biāo)記所述可用的分配單元。
13.如權(quán)利要求12所述的方法,其中: 所述分配位圖映射到邏輯地址空間。
14.如權(quán)利要求13所述的方法,其中: 邏輯對象編號(LON)定義指向所述編碼對象的指針。
15.如權(quán)利要求1所述的方法,其中: 指向所述編碼對象的指針被存儲在索引記錄中。
16.如權(quán)利要求15所述的方法,其中: 所述索引記錄包括指向所述編碼對象的多個(gè)指針。
17.如權(quán)利要求12所述的方法,其中,所述分配步驟使用邊界位圖標(biāo)記用于所述編碼對象的初始塊的分配單元。
18.一種計(jì)算機(jī)可讀介質(zhì),具有存儲在其上的指令,所述指令當(dāng)被載入計(jì)算機(jī)的時(shí)候執(zhí)行如權(quán)利要求1所述的方法步驟。
19.一種配置為執(zhí)行如權(quán)利要求1所述的方法步驟的可編程邏輯。
20.一種數(shù)據(jù)存儲系統(tǒng),包括: 擦除碼算法選擇部件,可操作為對不同的輸入數(shù)據(jù)對象選擇不同的擦除碼算法來產(chǎn)生編碼數(shù)據(jù)對象;以及 磁盤存儲分配部件,用于將由不同的算法編碼的所述編碼數(shù)據(jù)對象分配到磁盤存儲設(shè)備池中的相同或不同設(shè)備上的任何可用的分配單元。
21.如權(quán)利要求20所述的存儲系統(tǒng),還包括: 用于存儲所述編碼數(shù)據(jù)的所述磁盤存儲設(shè)備池。
22.如權(quán)利要求20所述的存儲系統(tǒng),其中: 所述磁盤存儲分配部件使用分配位屏蔽來為每個(gè)編碼數(shù)據(jù)對象請求可用的存儲單元以跨覆蓋所述池中的多個(gè)設(shè)備的邏輯存儲單元組的一個(gè)或者多個(gè)邏輯存儲單元存儲編碼對象,并且其中所述位屏蔽包括允許所述編碼對象被存儲到所述池中的至少一個(gè)設(shè)備上的多個(gè)邏輯存儲單元的 間隙。
23.如權(quán)利要求20所述的存儲系統(tǒng),包括: 將每個(gè)編碼數(shù)據(jù)對象映射到其相應(yīng)的擦除碼算法的所述編碼數(shù)據(jù)對象的索引。
24.一種在用于定位數(shù)據(jù)存儲的計(jì)算環(huán)境中的數(shù)據(jù)結(jié)構(gòu),包括分配位屏蔽以便請求可用的分配單元,以用于跨一個(gè)或者多個(gè)邏輯存儲單元存儲編碼對象,編碼數(shù)據(jù)對象以不同的擦除碼來被編碼,所述分配位屏蔽覆蓋跨多個(gè)磁盤驅(qū)動(dòng)器的多個(gè)邏輯存儲單元,并且所述位屏蔽包括與被存儲的所述編碼對象的起始分區(qū)邊界對準(zhǔn)的間隙,在此,所述可用的分配單元被跨多個(gè)邏輯存儲單元請求。
【文檔編號】G06F3/06GK104011642SQ201280057605
【公開日】2014年8月27日 申請日期:2012年11月21日 優(yōu)先權(quán)日:2011年11月22日
【發(fā)明者】M·W·希利, D·科德拉, A·J·比弗森, S·巴格比 申請人:森普利維蒂公司