亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于數(shù)據(jù)存儲(chǔ)的系統(tǒng)和方法

文檔序號(hào):6759759閱讀:114來(lái)源:國(guó)知局
專利名稱:用于數(shù)據(jù)存儲(chǔ)的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)。
背景技術(shù)

發(fā)明內(nèi)容
公開(kāi)用于在獨(dú)立存儲(chǔ)裝置冗余陣列(RAID)中存儲(chǔ)卷積編碼的數(shù)據(jù)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在系統(tǒng)形式中,實(shí)施例包括多個(gè)存儲(chǔ)裝置和耦合到存儲(chǔ)裝置的格解碼器(trellis decoder)。該解碼器用于處理從存儲(chǔ)裝置接收的經(jīng)編碼的數(shù)據(jù)來(lái)產(chǎn)生解碼的數(shù)據(jù)。編碼數(shù)據(jù)包括由信息的當(dāng)前和過(guò)去位的卷積產(chǎn)生的糾錯(cuò)編碼數(shù)據(jù)。該系統(tǒng)用于確定是否存在發(fā)生故障的存儲(chǔ)裝置,并且響應(yīng)于確定存在發(fā)生故障的存儲(chǔ)裝置,該系統(tǒng)分配用于存儲(chǔ)重建數(shù)據(jù)的存儲(chǔ)空間。重建數(shù)據(jù)包括預(yù)先存儲(chǔ)在發(fā)生故障的存儲(chǔ)裝置上的編碼數(shù)據(jù)。該系統(tǒng)處理解碼的數(shù)據(jù)來(lái)產(chǎn)生重建數(shù)據(jù),并且將重建數(shù)據(jù)存儲(chǔ)在所分配的存儲(chǔ)空間中。
在某些實(shí)施例中,該系統(tǒng)還用于測(cè)量解碼數(shù)據(jù)中的錯(cuò)誤量,將錯(cuò)誤量與用于多個(gè)存儲(chǔ)裝置中的每一個(gè)的出錯(cuò)限制相比較,并且響應(yīng)于超過(guò)存儲(chǔ)裝置的出錯(cuò)限制的錯(cuò)誤量,將該存儲(chǔ)裝置識(shí)別為發(fā)生故障的存儲(chǔ)裝置。在某些實(shí)施例中,系統(tǒng)還用于從多個(gè)存儲(chǔ)裝置接收自監(jiān)測(cè)分析和報(bào)告技術(shù)信息,并且響應(yīng)于自監(jiān)測(cè)分析和指示存儲(chǔ)裝置發(fā)生故障的報(bào)告技術(shù)信息,將存儲(chǔ)裝置識(shí)別為發(fā)生故障的存儲(chǔ)裝置。在某些實(shí)施例中,編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)字處理一部分信息,并且多個(gè)存儲(chǔ)裝置都不具有兩個(gè)或多個(gè)相鄰字或每個(gè)字的n位中的一個(gè)位以上。在某些實(shí)施例中,系統(tǒng)還包括元數(shù)據(jù)控制器,用于處理與編碼數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù),元數(shù)據(jù)包括用于指定編碼數(shù)據(jù)的存儲(chǔ)位置和/或指定編碼數(shù)據(jù)的編碼類型的存儲(chǔ)位置信息。


圖1是圖解示例性存儲(chǔ)區(qū)域網(wǎng)絡(luò)(“SAN”)的各方面的方框圖。
圖2圖解示例性讀命令。
圖3圖解元數(shù)據(jù)結(jié)構(gòu)。
圖4圖解用于2位字輸出編碼器的、具有1位寬的帶區(qū)(wide stripe)的卷積RAID。
圖5圖解用于2位字輸出編碼器的、具有2位寬的帶區(qū)的卷積RAID。
圖6圖解用于從卷積編碼的RAID讀取編碼數(shù)據(jù)的流程圖。
圖7圖解用于(2,1,3)碼的格解碼器。
圖8圖解用于使用格解碼器來(lái)檢測(cè)丟失的編碼數(shù)據(jù)的流程圖。
圖9圖解用于使用格解碼器來(lái)重建丟失的編碼數(shù)據(jù)和它表示的信息的流程圖。
圖10圖解用于(2,1,3)碼以及丟失信息的重建的格解碼器。
圖11圖解用于(3,2,1)碼的格解碼器。
圖12圖解用于(2,1,3)糾錯(cuò)碼的編碼器狀態(tài)示意圖。
圖13以表的形式圖解圖12的用于(2,1,3)糾錯(cuò)碼的編碼器狀態(tài)示意圖。
圖14圖解具有兩個(gè)輸出、一個(gè)輸入和三級(jí)延遲元件的(2,1,3)二進(jìn)制卷積編碼器電路。
圖15圖解用于將重建的編碼數(shù)據(jù)寫入備用存儲(chǔ)空間的示例性SCSI寫命令。
具體實(shí)施例方式
參照附圖,其中相同的部分用相同的附圖標(biāo)記表示,圖1是圖解示例性存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)10的各方面的方框圖。SAN 10典型地設(shè)計(jì)成作為交換訪問(wèn)網(wǎng)絡(luò)工作,其中使用交換機(jī)67創(chuàng)建交換網(wǎng)(fabric)66。在某些實(shí)施例中,使用運(yùn)行在光纖信道(“FC”)物理層上的小型計(jì)算機(jī)系統(tǒng)接口(SCSI)協(xié)議來(lái)實(shí)現(xiàn)SAN 10。在其他實(shí)施例中,可以使用其他協(xié)議,例如Infiniband、FICON(光纖信道連接的一種特殊形式)、TCP/IP、以太網(wǎng)、千兆位以太網(wǎng)或iSCSI來(lái)實(shí)現(xiàn)SAN 10。交換機(jī)67具有主機(jī)61、62、63、64、65和控制器80兩方的地址,因而主機(jī)61-65中的任一個(gè)可以互換地連接到任何控制器80。
主機(jī)61、62、63、64、65分別使用I/O接口71、72、73、74、75連接到網(wǎng)66。I/O接口71-75可以是任何類型的I/O接口;例如,F(xiàn)C環(huán)、直接附接到網(wǎng)66或者主機(jī)61-65使用的一條或多條信號(hào)線,用于分別向/從網(wǎng)66傳輸信息。網(wǎng)66包括例如用于連接兩個(gè)或多個(gè)計(jì)算機(jī)網(wǎng)絡(luò)的一個(gè)或多個(gè)FC交換機(jī)67。在某些實(shí)施例中,F(xiàn)C交換機(jī)67是常規(guī)的路由器交換機(jī)。
交換機(jī)67通過(guò)I/O接口79將主機(jī)61-65與控制器80互連。I/O接口79可以是任何類型的I/O接口,例如,光纖信道、Infiniband、千兆位以太網(wǎng)、以太網(wǎng)、TCP/IP、iSCSI、SCSI I/O接口或者由FC交換機(jī)67用來(lái)分別向/從控制器80并進(jìn)而向多個(gè)存儲(chǔ)裝置91-93傳輸信息的一條或多條信號(hào)線。在圖1所示的例子中,存儲(chǔ)裝置91-93和控制器80在RAID 90內(nèi)操作。RAID 90還可以包括備用存儲(chǔ)裝置97,它在存儲(chǔ)裝置91-93中的任一個(gè)發(fā)生故障時(shí)可以與存儲(chǔ)裝置91-93交換。在RAID 90中可以包括除了存儲(chǔ)裝置91-93之外的額外存儲(chǔ)裝置。作為選擇,存儲(chǔ)裝置91-93以及控制器80物理上可以彼此遠(yuǎn)離,從而一次災(zāi)難只能損害存儲(chǔ)裝置91-93中的一個(gè)。
RAID 90典型地包括用于指導(dǎo)RAID操作的一個(gè)或多個(gè)控制器80。控制器80可以采用很多不同的形式,并且可以包括嵌入式系統(tǒng)、分配式控制系統(tǒng)、個(gè)人計(jì)算機(jī)、工作站等。圖1示出了典型的RAID控制器80,具有處理器82、元數(shù)據(jù)控制器98、隨機(jī)存取存儲(chǔ)器(RAM)84、非易失性存儲(chǔ)器83、專用電路81、編碼數(shù)據(jù)接口85和主機(jī)信息接口89。處理器82、RAM84、非易失性存儲(chǔ)器83、專用電路81、元數(shù)據(jù)控制器98、編碼數(shù)據(jù)接口85和主機(jī)信息接口89通過(guò)總線99相互通信。
作為選擇,RAM 84和/或非易失性存儲(chǔ)器83可以與專用電路81、編碼數(shù)據(jù)接口85、元數(shù)據(jù)控制器98和主機(jī)信息接口89一起位于處理器82中。處理器82可以包括通用微處理器、定制處理器、FPGA、ASIC或其他形式的分立邏輯。RAM 84典型地用作主機(jī)61-65寫或主機(jī)61-65讀數(shù)據(jù)的高速緩存,用來(lái)保存計(jì)算出的數(shù)據(jù)、堆棧數(shù)據(jù)、可執(zhí)行指令等。此外,RAM 84通常用于在數(shù)據(jù)存儲(chǔ)在存儲(chǔ)裝置91-93之前臨時(shí)存儲(chǔ)來(lái)自編碼器(即,編碼器86)的編碼數(shù)據(jù)87。編碼器的示例是卷積編碼器220(圖14)。在某些實(shí)施例中,卷積編碼器220可以位于專用電路81中。RAM 84通常用于在從存儲(chǔ)裝置91-93讀取數(shù)據(jù)之后,在由解碼器77解碼該數(shù)據(jù)之前臨時(shí)存儲(chǔ)編碼數(shù)據(jù)87。解碼器77的示例是圖7中的格解碼器300和圖11中的格解碼器500。
在某些實(shí)施例中,由軟件、固件、專用邏輯及其它們的組合在處理器82中實(shí)現(xiàn)分配器101。此外,分配器101可以全部或部分位于控制器80之外,諸如在主機(jī)61-65之一的軟件實(shí)現(xiàn)中。在一個(gè)或多個(gè)存儲(chǔ)裝置發(fā)生故障的情況下,分配器101將編碼數(shù)據(jù)(即編碼數(shù)據(jù)87)分配到RAM 84,和/或以可以從未發(fā)生故障的存儲(chǔ)裝置解碼和/或重建編碼數(shù)據(jù)和/或源信息的格直接分配到存儲(chǔ)裝置。在寫處理期間,當(dāng)分配器101將數(shù)據(jù)分配到存儲(chǔ)裝置(諸如裝置91-93)時(shí),根據(jù)元數(shù)據(jù)88完成分配,以便以后可以從該存儲(chǔ)裝置讀取所分配的數(shù)據(jù)。在讀取處理中,分配器101根據(jù)元數(shù)據(jù)88從存儲(chǔ)裝置(諸如裝置91-93)取出數(shù)據(jù),并且將編碼數(shù)據(jù)87重新匯集到RAM 84。
非易失性存儲(chǔ)器83可以包括任何類型的非易失性存儲(chǔ)器,如電可擦可編程只讀存儲(chǔ)器(EEPROM)、閃速可編程只讀存儲(chǔ)器(PROM)、電池備用RAM、硬盤驅(qū)動(dòng)器或其他類似裝置。非易失性存儲(chǔ)器83典型地用于保存可執(zhí)行固件和任何非易失性數(shù)據(jù),例如元數(shù)據(jù)88。元數(shù)據(jù)88的細(xì)節(jié)將在下面參照?qǐng)D3進(jìn)一步討論。
在某些實(shí)施例中,編碼數(shù)據(jù)接口85包括允許處理器82與存儲(chǔ)裝置91-93通信的一個(gè)或多個(gè)通信接口。主機(jī)信息接口89允許處理器82與網(wǎng)66、交換機(jī)67和主機(jī)61-65通信。編碼數(shù)據(jù)接口85和主機(jī)信息接口89的例子包括諸如RS-232、USB(通用串行總線)、SCSI(小型計(jì)算機(jī)系統(tǒng)接口)、光纖信道、千兆位以太網(wǎng)等串行接口。此外,編碼數(shù)據(jù)接口85和/或主機(jī)信息接口89可以包括諸如射頻(“RF”)(如藍(lán)牙)之類的無(wú)線接口,或者諸如紅外(IR)之類的光通信裝置。
在某些實(shí)施例中,元數(shù)據(jù)控制器98在處理器82中由軟件、固件、專用邏輯或者其組合來(lái)實(shí)現(xiàn)。此外,元數(shù)據(jù)控制器98的全部或部分可以位于控制器82外部,例如以主機(jī)61-65之一或其他處理裝置中的軟件實(shí)現(xiàn)。元數(shù)據(jù)控制器98管理與為作為編碼數(shù)據(jù)在存儲(chǔ)裝置上存儲(chǔ)而接收的信息相關(guān)聯(lián)的元數(shù)據(jù)。在某些實(shí)施例中,元數(shù)據(jù)控制器98負(fù)責(zé)生成、改變、維護(hù)、存儲(chǔ)、取出和處理與為作為編碼數(shù)據(jù)存儲(chǔ)而接收的信息相關(guān)聯(lián)的元數(shù)據(jù)。
專用電路81提供額外的硬件來(lái)使控制器80執(zhí)行獨(dú)有功能,諸如存儲(chǔ)裝置91-93、控制器80和解碼器77的環(huán)境冷卻的風(fēng)扇控制。解碼器77可以實(shí)現(xiàn)為格解碼器。特定的專用電路81可以包括提供脈沖帶寬調(diào)制(PWM)控制、模數(shù)轉(zhuǎn)換(ADC)、數(shù)模轉(zhuǎn)換(DAC)、異或(XOR)之類的電子電路。此外,特定的電路81可以全部或部分位于控制器80之外,諸如在主機(jī)61-65之一的軟件實(shí)現(xiàn)中。
解碼器77可以實(shí)現(xiàn)為格解碼器來(lái)解碼從RAID存儲(chǔ)裝置(即,存儲(chǔ)裝置91-93)讀取的編碼數(shù)據(jù)??梢允褂酶駡D300(圖7)解釋格解碼器的操作。在圖7中顯示了狀態(tài)S0-S7,并且假設(shè)用于將信息編碼為存儲(chǔ)在存儲(chǔ)裝置的編碼數(shù)據(jù)的卷積編碼器的所有存儲(chǔ)器寄存器的初始內(nèi)容都被初始化為0。例如,卷積編碼器220(圖14)的存儲(chǔ)器寄存器230-232被初始化為0。這具有這樣的結(jié)果用于解碼從存儲(chǔ)裝置讀取的編碼數(shù)據(jù)87來(lái)產(chǎn)生原始主機(jī)信息78的格圖總是在狀態(tài)S0開(kāi)始并在狀態(tài)S0終止。
格圖300(圖7)在狀態(tài)S0310A開(kāi)始。格圖300從S0310A轉(zhuǎn)移到S0310B或S1311B。在格圖300中,狀態(tài)編號(hào)從后綴A到后綴B的增加稱為分支,并且當(dāng)從后綴A轉(zhuǎn)移到后綴B時(shí),分支索引I為0。格圖300從S0310B轉(zhuǎn)移到S0310C或S1311C,并從S1311B轉(zhuǎn)移到S2312C或S3313C,而分支索引I為1。格圖300從S0310C轉(zhuǎn)移到S0310D或S1311D,從S1311C轉(zhuǎn)移到S2312D或S3313D,從S2312C轉(zhuǎn)移到S4314D或S5315D,或從S3313C轉(zhuǎn)移到S6316D或S7317D,而分支索引I是3。
在格圖300中,下一系列轉(zhuǎn)移顯示了解碼嘗試的所有分支。格圖300從S0310D轉(zhuǎn)移到S0310E或S1311E,從S1311D轉(zhuǎn)移到S2312E或S3313E,從S2312D轉(zhuǎn)移到S4314E或S5315E,或從S3313D轉(zhuǎn)移到S6316E或S7317E,并且分支索引I是4。此外,格圖300從S7317D轉(zhuǎn)移到S7317E或S6316E,從S6316D轉(zhuǎn)移到S5315E或S4314E,從S5315D轉(zhuǎn)移到S3313E或S2312E,從S4314D轉(zhuǎn)移到S1311E或S0310E。
通常,在格圖中多次重復(fù)顯示關(guān)于分支索引I=4的內(nèi)容。然而,為了簡(jiǎn)化僅在圖7中允許一次這樣的重復(fù)。對(duì)于圖7的剩余部分,顯示格圖以終止指示解碼處理的結(jié)束。格圖300從S0310E僅轉(zhuǎn)移到S0310F,從S1311E僅轉(zhuǎn)移到S2312F,從S2312E僅轉(zhuǎn)移到S4314F,以及從S3313E僅轉(zhuǎn)移到S6316F,并且分支索引為5。此外,格圖300從S7317E僅轉(zhuǎn)移到S6316F,從S6316E僅轉(zhuǎn)移到S4314F,從S5315E僅轉(zhuǎn)移到S2312F,以及從S4314E僅轉(zhuǎn)移到S0310F。格圖300從S0310F僅轉(zhuǎn)移到S0310G,以及從S2312F僅轉(zhuǎn)移到S4312G,并且分支索引為6。此外,格圖300從S6316F僅轉(zhuǎn)移到S4310G,以及從S4314F僅轉(zhuǎn)移到S0310G。最后,格圖300從S0310G僅轉(zhuǎn)移到S0310H,并且分支索引為7。此外,格圖300從S4314G僅轉(zhuǎn)移到S0310H。
在圖7中,示例性的突出表示解碼路徑S0310A、S1311B、S3313C、S7317D、S7317E、S6316F、S4314G和S0310H取得編碼數(shù)據(jù)11100110010011,并根據(jù)圖13的表290將其解碼為1111000。
圖6中所示的流程圖700描述了用于實(shí)現(xiàn)對(duì)從RAID存儲(chǔ)裝置獲得的糾錯(cuò)編碼數(shù)據(jù)解碼的一個(gè)實(shí)施例的處理。該處理從步驟701進(jìn)行至判定步驟705,來(lái)確定控制器80是否從源(即,主機(jī)61-65)接收到了關(guān)于存儲(chǔ)信息的請(qǐng)求。從控制器80請(qǐng)求的信息可以是預(yù)先由客戶、提供服務(wù)給客戶的第三方、用戶或任何其它訪問(wèn)控制器80的實(shí)體存儲(chǔ)在存儲(chǔ)裝置上的。如果沒(méi)有接收到關(guān)于存儲(chǔ)信息的請(qǐng)求,處理循環(huán)返回到步驟705。在某些實(shí)施例中,主機(jī)信息接口89接收關(guān)于存儲(chǔ)信息的請(qǐng)求,并且將該請(qǐng)求傳送到其他耦合到控制器80的部件(即,處理器82、專用電路81等)。如果接收到關(guān)于存儲(chǔ)信息的請(qǐng)求,處理進(jìn)行至步驟707,其中控制器根據(jù)主機(jī)61-65之一請(qǐng)求的、所期望的文件名626(或其它識(shí)別符)首先獲得與所期望的存儲(chǔ)信息相關(guān)聯(lián)的元數(shù)據(jù)88(圖3),從而確定編碼數(shù)據(jù)放置到什么存儲(chǔ)裝置(即,通過(guò)使用圖3的指示符)、編碼數(shù)據(jù)的起始LBA 622、用以獲得編碼數(shù)據(jù)的傳送長(zhǎng)度623、帶區(qū)寬度(stripe width)624和序列號(hào)625??梢詮姆且资源鎯?chǔ)器83獲得元數(shù)據(jù)88。
在某些實(shí)施例中,元數(shù)據(jù)控制器(即,元數(shù)據(jù)控制器98)定位并處理與編碼數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù)88。該元數(shù)據(jù)包括存儲(chǔ)位置信息,用于指定編碼數(shù)據(jù)的存儲(chǔ)位置;和/或編碼器信息,用于指定編碼數(shù)據(jù)的編碼類型。指定用于糾錯(cuò)編碼數(shù)據(jù)的存儲(chǔ)位置的存儲(chǔ)位置信息可以包括存儲(chǔ)器永久名、邏輯塊地址、裝置號(hào)、邏輯單元號(hào)、卷序列號(hào)或其它存儲(chǔ)位置識(shí)別符。在步驟707,處理器82可以用于實(shí)現(xiàn)元數(shù)據(jù)控制器,來(lái)從非易失性存儲(chǔ)器83定位所期望的元數(shù)據(jù)88。
處理從步驟707進(jìn)行至步驟708,其中控制器80使用讀命令(即,讀命令605(圖2))來(lái)從獨(dú)立存儲(chǔ)器91-93讀取編碼信息,并且將其放入RAM 84。例如,參照?qǐng)D5,從驅(qū)動(dòng)器281讀取V(1,1)、V(1,2)、V(4,1)、V(4,2)、V(7,1)、V(7,2)、V(10,1)、V(10,2)等,從驅(qū)動(dòng)器282讀取V(2,1)、V(2,2)、V(5,1)、V(5,2)、V(8,1)、V(8,2)、V(11,1)、V(11,2)等,而從驅(qū)動(dòng)器283讀取V(3,1)、V(3,2)、V(6,1)、V(6,2)、V(9,1)、V(9,2)、V(12,1)、V(12,2)等來(lái)完成編碼數(shù)據(jù)290。在讀命令605中的是目標(biāo)存儲(chǔ)裝置的邏輯單元號(hào)609(從圖3的元數(shù)據(jù)88獲得)、存儲(chǔ)在存儲(chǔ)裝置上(在邏輯單元號(hào)609)的編碼數(shù)據(jù)的起始邏輯塊地址607(從圖3的元數(shù)據(jù)88獲得)和傳送長(zhǎng)度608(從圖3的元數(shù)據(jù)88獲得)。讀命令605也許可以越過(guò)SCSI或光纖信道接口來(lái)實(shí)現(xiàn)。讀命令605是SCSI讀命令,并且是可以使用的、唯一可能的讀命令??梢远啻问褂米x命令605來(lái)從存儲(chǔ)裝置91-93取出編碼數(shù)據(jù)。對(duì)于每個(gè)存儲(chǔ)裝置,通常使用至少一次讀命令605。
圖4顯示了當(dāng)(2,1,3)二進(jìn)制卷積編碼器(圖14)用于處理信息來(lái)產(chǎn)生糾錯(cuò)編碼數(shù)據(jù)時(shí),分配到存儲(chǔ)設(shè)備(260)的糾錯(cuò)編碼數(shù)據(jù)的示例。糾錯(cuò)編碼數(shù)據(jù)的每個(gè)字可以包括例如如圖4所示的兩位(n=2),第一字包括V(1,1)和V(1,2),第二字包括V(2,1)和V(2,2),第三字包括V(3,1)和V(3,2)等。對(duì)于該示例,沒(méi)有存儲(chǔ)裝置接收每個(gè)字的兩位中多于一個(gè)的位。
圖5顯示了當(dāng)(2,1,3)二進(jìn)制卷積編碼器(圖14)用于處理信息來(lái)產(chǎn)生糾錯(cuò)編碼數(shù)據(jù)時(shí),分配到存儲(chǔ)設(shè)備(280)的糾錯(cuò)編碼數(shù)據(jù)的示例。糾錯(cuò)編碼數(shù)據(jù)的每個(gè)字可以包括例如如圖5所示的兩位(n=2),第一字包括V(1,1)和V(1,2),第二字包括V(2,1)和V(2,2),第三字包括V(3,1)和V(3,2)等。對(duì)于該示例,沒(méi)有存儲(chǔ)裝置接收兩個(gè)或兩個(gè)以上的相鄰字。對(duì)于該示例,相鄰字包括例如第一字(V(1,1)、V(1,2))和第二字(V(2,1)、V(2,2))或第二字(V(2,1)、V(2,2))和第三字(V(3,1)、V(3,2))。非相鄰字的示例是第一字(V(1,1)、V(1,2))和第三字(V(3,1)、V(3,2))或第二字(V(2,1)、V(2,2))和第四字(V(4,1)、V(4,2))。
對(duì)于圖4所示的數(shù)據(jù)分配,可以在步驟708調(diào)用六次讀命令605來(lái)讀取存儲(chǔ)在存儲(chǔ)裝置261-266中的信息。對(duì)于圖5所示的數(shù)據(jù)分配,在步驟708可以三次調(diào)用讀命令來(lái)讀取存儲(chǔ)在存儲(chǔ)裝置281-283中的信息。
一旦從每個(gè)驅(qū)動(dòng)器讀取了所有的編碼數(shù)據(jù)并放置到RAM 84中,處理進(jìn)行至步驟S709,其中控制器80將來(lái)自每個(gè)驅(qū)動(dòng)器的編碼數(shù)據(jù)匯集為編碼數(shù)據(jù)87。從每個(gè)驅(qū)動(dòng)器讀取的編碼數(shù)據(jù)匯集的編碼數(shù)據(jù)87的示例為270(圖4)和290(圖5)。該匯集基于元數(shù)據(jù)88中的序列號(hào)625的,其中序列號(hào)從先前分布到RAID的編碼數(shù)據(jù)確定編碼數(shù)據(jù)87的恰當(dāng)匯集。
類似地,圖4還顯示在步驟709存儲(chǔ)在存儲(chǔ)裝置(例如RAM 84)中的糾錯(cuò)編碼數(shù)據(jù)的示例的表(270)。表270組織為列,其中每一列包括在步驟708中從相應(yīng)存儲(chǔ)裝置(即,存儲(chǔ)裝置91-93)讀取的糾錯(cuò)編碼數(shù)據(jù)。例如,表270的第一列顯示在步驟708中從驅(qū)動(dòng)器261讀取的糾錯(cuò)編碼數(shù)據(jù)。
圖5還顯示在步驟709在存儲(chǔ)裝置(例如RAM 84)中匯集的糾錯(cuò)編碼數(shù)據(jù)的示例的表(290)。表290組織為列,其中每一列包括在步驟708從相應(yīng)存儲(chǔ)裝置讀取的糾錯(cuò)編碼數(shù)據(jù)。例如,表290的第一列顯示在步驟708從驅(qū)動(dòng)器281讀取的糾錯(cuò)編碼數(shù)據(jù)。
在完成步驟709(其中在RAM 84中匯集了編碼數(shù)據(jù)87)之后,處理進(jìn)行至步驟711,其中解碼編碼數(shù)據(jù)87來(lái)產(chǎn)生解碼的數(shù)據(jù)(即,信息78)。可以通過(guò)耦合到存儲(chǔ)裝置(通過(guò)使用在RAM 84中匯集的編碼數(shù)據(jù)87)的格解碼器(即,專用電路81中的格解碼器,用于解碼編碼數(shù)據(jù)87來(lái)獲得用于一個(gè)或多個(gè)主機(jī)61-65的原始信息78)完成步驟711。格解碼器77可以用于處理從存儲(chǔ)裝置91-93接收到的編碼數(shù)據(jù)來(lái)產(chǎn)生解碼的數(shù)據(jù)。通過(guò)卷積信息78的當(dāng)前位和過(guò)去位的卷積產(chǎn)生包含糾錯(cuò)編碼數(shù)據(jù)的編碼數(shù)據(jù)。解碼器77可以是圖7或11表示的格解碼器,或任何其它格解碼器。作為選擇,解碼器77可以采用“堆棧算法”,其可以被認(rèn)為是格圖的二進(jìn)制樹(shù)形實(shí)現(xiàn)。
在某些實(shí)施例中,解碼器77包含在時(shí)間上擴(kuò)展編碼器的狀態(tài)示意圖(圖12),以便以單獨(dú)狀態(tài)示意圖來(lái)表示每個(gè)時(shí)間單元。產(chǎn)生的結(jié)構(gòu)稱為格圖,如圖7和11所示。通過(guò)具有最小漢明(Hamming)距離的格圖的路徑是用于解碼(即讀取)編碼數(shù)據(jù)87來(lái)產(chǎn)生所期望的信息78的期望路徑。優(yōu)選的最小漢明距離為0,意味著在編碼數(shù)據(jù)87和通過(guò)格圖選擇來(lái)將編碼數(shù)據(jù)87解碼為信息78的路徑之間沒(méi)有錯(cuò)誤。
通過(guò)為格圖的該分支讀取的字和分配給在該分支中的每個(gè)路徑的字,計(jì)算漢明距離。將所讀取的字和所分配的字相加而不用進(jìn)位(carryover)(XOR),以產(chǎn)生關(guān)于該分支中的每個(gè)路徑的漢明距離。例如,如果讀取的字是111,而且路徑具有分配的字010,則漢明距離是111+010=101。
最好在每個(gè)分支中的漢明距離是0。例如,如果讀取的字是111,并且在該分支中存在分配了字111的路徑,則111+111=000會(huì)表示0漢明距離。該路徑應(yīng)是該分支的期望路徑,并且分配給相同路徑的分支和信息應(yīng)是表示在編碼發(fā)生前的原始信息。
如果沒(méi)有實(shí)現(xiàn)0漢明距離,則為所讀取的編碼數(shù)據(jù)計(jì)算通過(guò)格圖的所有允許路徑,并且選擇穿過(guò)所有分支的、具有最小漢明距離的路徑作為表示編碼數(shù)據(jù)和原始信息的路徑。因此,格圖實(shí)際上是用于卷積碼的最大似然性解碼算法,即解碼器輸出選擇總是以漢明距離的形式給出最小度量(metric)的碼字。
對(duì)于讀取(解碼)處理,格圖的第一分支總是從狀態(tài)S0出發(fā),并且格圖的最后分支總是在狀態(tài)S0終止。這是開(kāi)始和終止利用卷積編碼器中初始化為0的所有存儲(chǔ)器(諸如圖14中的存儲(chǔ)器230-232)的編碼處理的指示。
對(duì)于正確操作,解碼器77經(jīng)由帶區(qū)寬度624(stripe width)、從元數(shù)據(jù)88獲得包括字的位的順序。例如,不同地排列在表270(圖4)和表290(圖5)中的位。通過(guò)說(shuō)明元數(shù)據(jù)88中的帶區(qū)寬度624,由格圖300(圖7)和500(圖11)以正確的順序處理編碼數(shù)據(jù)的各個(gè)位。
在某些實(shí)施例中,編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)字處理一部分信息,并且其中多個(gè)存儲(chǔ)裝置都不具有多于每個(gè)字的n位中的一位。
在某些實(shí)施例中,編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)字處理一部分信息,并且其中多個(gè)存儲(chǔ)裝置都不具有兩個(gè)或更多相鄰字。
處理從步驟711進(jìn)行至步驟712,以確定產(chǎn)生由請(qǐng)求者請(qǐng)求的信息所需的所有編碼數(shù)據(jù)是否已經(jīng)被解碼器77解碼。如果答案為“是”,則處理進(jìn)行至步驟713,其中主機(jī)信息接口89從解碼器77和耦合到控制器80的、參與傳送需要的任何其它部件(即,處理器82、專用電路81等)接收信息78,并且將從編碼數(shù)據(jù)87獲得的信息78傳送到請(qǐng)求主機(jī)61-65。在解碼器77處理糾錯(cuò)編碼數(shù)據(jù)87之前、期間和之后,信息78可以暫時(shí)存儲(chǔ)在存儲(chǔ)裝置(即,RAM 84、非易失性存儲(chǔ)器83、專用處理器存儲(chǔ)器等)。糾錯(cuò)編碼數(shù)據(jù)87和/或獲得的信息78可以在分配到SAN 10的請(qǐng)求主計(jì)算機(jī)61-65之前存儲(chǔ)在RAM(即,RAM 84)中。作為選擇,由于從存儲(chǔ)裝置讀取(通過(guò)圖2的讀取命令605)的片斷來(lái)匯集糾錯(cuò)編碼數(shù)據(jù)87,所以糾錯(cuò)編碼數(shù)據(jù)87可以存儲(chǔ)在非易失性存儲(chǔ)器83、另一存儲(chǔ)裝置、高速緩存等中。在某些實(shí)施例中,糾錯(cuò)編碼數(shù)據(jù)87以與先前分配到存儲(chǔ)裝置進(jìn)行存儲(chǔ)使用的格式相同的格式存儲(chǔ)在RAM 84中。
如果在步驟712已經(jīng)解碼了所有的編碼數(shù)據(jù),則執(zhí)行步驟713。步驟713將請(qǐng)求者請(qǐng)求的信息78發(fā)送到請(qǐng)求者,并且將程序控制返回到步驟705來(lái)處理另一請(qǐng)求。如果在步驟712需要解碼更多的編碼數(shù)據(jù)87,則執(zhí)行步驟715。
在步驟715,編碼數(shù)據(jù)87的格解碼可以檢測(cè)錯(cuò)誤。在某些實(shí)施例中,每當(dāng)在解碼處理中出現(xiàn)非0漢明距離,則檢測(cè)解碼錯(cuò)誤。如果在解碼編碼數(shù)據(jù)87時(shí)沒(méi)有檢測(cè)到錯(cuò)誤(即,在格圖300或500中發(fā)現(xiàn)具有0漢明距離的路徑),則控制進(jìn)行至步驟711來(lái)繼續(xù)解碼處理。在某些實(shí)施例中,通過(guò)連續(xù)檢查編碼數(shù)據(jù)的解碼來(lái)實(shí)現(xiàn)步驟715,以通過(guò)非0漢明距離檢測(cè)錯(cuò)誤。作為選擇,可以周期地檢查解碼處理。例如,連續(xù)或周期地檢查可以包括逐位、多位、逐字、多字地檢查或檢查編碼數(shù)據(jù)的其他部分、解碼數(shù)據(jù)或?qū)С鲂畔?,以檢測(cè)錯(cuò)誤。在編碼數(shù)據(jù)、解碼數(shù)據(jù)、導(dǎo)出信息及其組合中存在出錯(cuò)的情況下,如果存儲(chǔ)裝置發(fā)生故障,則控制進(jìn)行至步驟720。
如果在步驟720中存儲(chǔ)裝置沒(méi)有發(fā)生故障,則執(zhí)行步驟722。在步驟722,糾正錯(cuò)誤并且將控制返回到步驟711來(lái)恢復(fù)解碼編碼數(shù)據(jù)87。這種糾錯(cuò)會(huì)包括在出錯(cuò)(非0漢明距離)出現(xiàn)之前備份解碼處理,然后當(dāng)查看最小漢明距離的所有可能路徑時(shí)恢復(fù)解碼處理。這個(gè)最小漢明距離最好是0。
在一個(gè)實(shí)施例中,在步驟715,通過(guò)在各個(gè)存儲(chǔ)裝置內(nèi)(即在存儲(chǔ)裝置91-93的每一個(gè)內(nèi))讀取編碼數(shù)據(jù)時(shí)測(cè)量ECC(糾錯(cuò)碼)錯(cuò)誤量并且將該ECC錯(cuò)誤量與每個(gè)存儲(chǔ)裝置(即存儲(chǔ)裝置91-93)內(nèi)的出錯(cuò)限制進(jìn)行比較來(lái)完成步驟720。在步驟720,響應(yīng)于ECC錯(cuò)誤量超過(guò)關(guān)于給定存儲(chǔ)裝置的出錯(cuò)限制,系統(tǒng)識(shí)別該存儲(chǔ)裝置為發(fā)生故障的存儲(chǔ)裝置。
在作為選擇的實(shí)施例中,通過(guò)從每個(gè)存儲(chǔ)裝置(即存儲(chǔ)裝置91-93)接收自監(jiān)測(cè)分析和報(bào)告技術(shù)(即,S.M.A.R.T技術(shù))信息,并且響應(yīng)于自監(jiān)測(cè)分析和指示存儲(chǔ)裝置發(fā)生故障的報(bào)告技術(shù)信息(將存儲(chǔ)裝置識(shí)別為發(fā)生故障的存儲(chǔ)裝置)來(lái)完成步驟720。
S.M.A.R.T是自監(jiān)測(cè)分析和報(bào)告技術(shù)的首字母縮寫。該技術(shù)意欲識(shí)別用于指示驅(qū)動(dòng)器(即,存儲(chǔ)裝置91-93)故障的狀態(tài),并且設(shè)計(jì)來(lái)提供足夠的故障警告來(lái)允許在實(shí)際故障發(fā)生前進(jìn)行數(shù)據(jù)備份。存儲(chǔ)裝置可以實(shí)時(shí)監(jiān)視關(guān)于降級(jí)的特定屬性,但是不能預(yù)測(cè)瞬時(shí)驅(qū)動(dòng)故障。
關(guān)于降級(jí)的每個(gè)屬性監(jiān)測(cè)驅(qū)動(dòng)器的操作性能中的故障狀態(tài)的特定集合,并且優(yōu)化閾值來(lái)最小化“錯(cuò)誤”和“發(fā)生故障”的預(yù)測(cè)。S.M.A.R.T監(jiān)測(cè)錯(cuò)誤發(fā)生的比率,并且在降級(jí)的出錯(cuò)比率增加到不可接受的水平時(shí),發(fā)出預(yù)測(cè)故障的信號(hào)。為確定該比率,記錄出錯(cuò)事件并且與給定的屬性的全部操作數(shù)量相比。間隔(interval)定義用于測(cè)量比率的操作的數(shù)量。跟蹤操作的當(dāng)前數(shù)量的計(jì)數(shù)器稱為間隔計(jì)數(shù)器。
S.M.A.R.T測(cè)量出錯(cuò)比率,因此對(duì)于每個(gè)屬性記錄錯(cuò)誤的出現(xiàn)。計(jì)數(shù)器跟蹤關(guān)于當(dāng)前間隔期間的錯(cuò)誤量。該計(jì)數(shù)器稱為故障計(jì)數(shù)器。出錯(cuò)比率簡(jiǎn)單地是每個(gè)操作的錯(cuò)誤量。S.M.A.R.T是用來(lái)記錄出錯(cuò)比率的算法設(shè)置錯(cuò)誤量的閾值和間隔。如果錯(cuò)誤量在間隔過(guò)去前超過(guò)閾值,則認(rèn)為出錯(cuò)比率是不可接受的。如果錯(cuò)誤量在間隔過(guò)去前沒(méi)有超過(guò)閾值,則認(rèn)為出錯(cuò)比率是可以接受的。在任意一種情況下,都重置間隔和故障計(jì)數(shù)器并開(kāi)始該處理。
當(dāng)驅(qū)動(dòng)器在一段時(shí)間的運(yùn)行不可接受時(shí),S.M.A.R.T發(fā)出預(yù)測(cè)故障的信號(hào)。固件保持計(jì)數(shù)對(duì)于每個(gè)屬性來(lái)說(shuō)出錯(cuò)比率不可接受的次數(shù)。為了實(shí)現(xiàn)它,只要出錯(cuò)比率不可接受計(jì)數(shù)器(值)就遞增,而只要出錯(cuò)比率可以接受計(jì)數(shù)器就遞減(不超過(guò)0)。若計(jì)數(shù)器持續(xù)遞增以至到達(dá)預(yù)定的閾值,則發(fā)出預(yù)測(cè)故障信號(hào)。這種計(jì)數(shù)器稱為故障歷史計(jì)數(shù)器。對(duì)于每個(gè)屬性具有一個(gè)單獨(dú)的故障歷史計(jì)數(shù)器。
在作為選擇的實(shí)施例中,在步驟720,發(fā)生故障的存儲(chǔ)裝置被確定為控制器80不能與之建立(例如,通過(guò)編碼數(shù)據(jù)接口85)I/O通信的存儲(chǔ)裝置。
如果存儲(chǔ)裝置發(fā)生故障,可以經(jīng)由步驟719接入流程圖700來(lái)直接進(jìn)行至步驟725。不需要發(fā)生讀操作來(lái)搜索發(fā)生故障的驅(qū)動(dòng)器,并開(kāi)始重建發(fā)生故障的驅(qū)動(dòng)器先前保持的編碼數(shù)據(jù)。
響應(yīng)于在步驟720確定存在發(fā)生故障的存儲(chǔ)裝置,執(zhí)行步驟725來(lái)為重建數(shù)據(jù)的存儲(chǔ)分配存儲(chǔ)空間。在某些實(shí)施例中,通過(guò)使用用于所分配的存儲(chǔ)空間的備用存儲(chǔ)裝置(即,備用存儲(chǔ)裝置97)來(lái)完成步驟725。如果采用這樣的備用存儲(chǔ)裝置97來(lái)替代存儲(chǔ)裝置91-93之一,則備用存儲(chǔ)裝置97會(huì)具有與所替代的發(fā)生故障的存儲(chǔ)裝置的存儲(chǔ)容量相同或更多的存儲(chǔ)容量。另外,備用存儲(chǔ)裝置97最好是相同類型的存儲(chǔ)器,即如果存儲(chǔ)裝置91-93是具有光纖通道連接的硬盤驅(qū)動(dòng)器,則備用存儲(chǔ)裝置97也應(yīng)該是具有光纖通道連接的硬盤驅(qū)動(dòng)器。在某些實(shí)施例中,所分配的存儲(chǔ)空間可以包括一個(gè)或多個(gè)存儲(chǔ)裝置91-93、存儲(chǔ)裝置91-93的一部分、在SAN 10之內(nèi)或之外的外部存儲(chǔ)裝置、耦合到控制器80的存儲(chǔ)裝置等。在某些實(shí)施例中,重建數(shù)據(jù)包括先前存儲(chǔ)在發(fā)生故障的存儲(chǔ)裝置上的編碼數(shù)據(jù)(即,卷積編碼器產(chǎn)生的數(shù)據(jù))。
處理從步驟725進(jìn)行至步驟730,來(lái)完成(1e,14e,78f)處理解碼數(shù)據(jù)以產(chǎn)生重建數(shù)據(jù),并將重建數(shù)據(jù)存儲(chǔ)在所分配的存儲(chǔ)空間中。例如,可以通過(guò)控制器80使用格解碼器77處理解碼的數(shù)據(jù),并且經(jīng)由在RAM 84中構(gòu)造表270(圖4)或表290(圖5)的全部?jī)?nèi)容,來(lái)重建存儲(chǔ)在發(fā)生故障的存儲(chǔ)裝置上的數(shù)據(jù)的映像,并且使用寫命令(即,寫命令600,圖15)將對(duì)應(yīng)于已經(jīng)存儲(chǔ)在發(fā)生故障的驅(qū)動(dòng)器上的映像的列存儲(chǔ)在所分配的存儲(chǔ)空間(即備用存儲(chǔ)裝置97),從而完成步驟730和735。在重建存儲(chǔ)之前、期間或之后,該映像可以臨時(shí)存儲(chǔ)在存儲(chǔ)裝置(即,RAM 84)。該重建處理還恢復(fù)原來(lái)由主機(jī)提供的信息。因此,該重建處理還解碼先前編碼的數(shù)據(jù),并且如果讀取處理需要讀取已經(jīng)存儲(chǔ)在發(fā)生故障的存儲(chǔ)裝置上的編碼數(shù)據(jù)的片斷,則重建處理可以認(rèn)為是讀取處理的一部分。如果用戶期望讀取(解碼)在發(fā)生故障的卷積編碼的RAID(如圖4-5)上的數(shù)據(jù),則從發(fā)生故障的存儲(chǔ)裝置恢復(fù)丟失的編碼數(shù)據(jù)的相同重建處理還向用戶提供期望的信息。在某些實(shí)施例中,系統(tǒng)可以用于關(guān)于在所分配的存儲(chǔ)空間上存儲(chǔ)重建數(shù)據(jù)向客戶收費(fèi)。可以通過(guò)系統(tǒng)、服務(wù)提供商、第三方等向客戶收費(fèi)。該費(fèi)用可以基于所使用的存儲(chǔ)空間容量、底價(jià)(flat fee)、所使用的、所分配的存儲(chǔ)裝置的數(shù)量等。例如,這可以通過(guò)客戶同意服務(wù)提供商存儲(chǔ)數(shù)據(jù)來(lái)實(shí)現(xiàn),其中服務(wù)提供商負(fù)責(zé)按需存儲(chǔ)并取出客戶的數(shù)據(jù)。該服務(wù)商可以是存儲(chǔ)系統(tǒng)的管理者和/或在客戶和另一實(shí)體之間的商業(yè)關(guān)系中的第三方。客戶可以配有到用于存儲(chǔ)信息的系統(tǒng)的連接(即,圖1的SAN 10)??蛻艨梢允褂迷撨B接或其他裝置發(fā)送該信息到系統(tǒng)來(lái)進(jìn)行存儲(chǔ)??梢杂捎糜跍y(cè)量數(shù)據(jù)量的本領(lǐng)域公知的方法測(cè)量客戶發(fā)送或SAN 10和/或控制器80接收的信息的總量或數(shù)量。通過(guò)考慮發(fā)送來(lái)存儲(chǔ)的信息量和其它因素(諸如信息流速率、使用頻率、壓縮或非壓縮信息費(fèi)率、固定月費(fèi)率和其它考慮)來(lái)確定用于在所分配的存儲(chǔ)空間存儲(chǔ)重建數(shù)據(jù)的費(fèi)用。處理從步驟735進(jìn)行至步驟740結(jié)束。
在特定實(shí)施例中,通過(guò)解碼器77的操作完成步驟720、722和730。解碼器77可以實(shí)現(xiàn)為格解碼器來(lái)解碼從RAID存儲(chǔ)裝置(即,存儲(chǔ)裝置91-93)讀取的編碼數(shù)據(jù)。格解碼器的操作解釋如下。
在某些實(shí)施例中,對(duì)于圖7、10和11中的格解碼,由圖8所示的流程圖340的步驟341、342、343、344、345、347和348和圖9所示的流程圖360來(lái)完成步驟720和722。在圖8中,處理從步驟341開(kāi)始。處理進(jìn)行至步驟342,其中分支索引I被設(shè)置為0。格圖的分支表示卷積編碼器(圖12)的輸出中的一個(gè)字。例如,格圖300在字中具有兩個(gè)位,而格圖在一個(gè)字中具有三個(gè)位。因?yàn)楫?dāng)獲得0漢明距離時(shí)(這表示沒(méi)有檢測(cè)到錯(cuò)誤并且不存在來(lái)自發(fā)生故障的存儲(chǔ)器的丟失數(shù)據(jù),以及在分支索引I中識(shí)別的單獨(dú)路徑完全對(duì)應(yīng)于編碼數(shù)據(jù)87中的編碼數(shù)據(jù))格解碼器通常每次順序解碼一個(gè)分支,所以分支索引I是重要的。格解碼器的值是可以“先行、不按順序、逐分支”并繞過(guò)具有錯(cuò)誤的分支,并且使用錯(cuò)誤分支后的那些分支來(lái)校正錯(cuò)誤分支。
處理從步驟342進(jìn)行至判定步驟343,其中做出是從存儲(chǔ)裝置91-93獲得編碼數(shù)據(jù)87的字的所有n位,還是對(duì)于分支I某些位丟失的決定。每個(gè)字包括n位,并且n位的每組包括格解碼器300和500中的一個(gè)分支。如果對(duì)于分支I獲得所有n位,則該處理進(jìn)行至步驟344,其中在(a)從編碼數(shù)據(jù)87獲得的編碼數(shù)據(jù)的所有n位和(b)包括圖7的格圖300(作為選擇,圖11的格圖500)的分支索引I的路徑中的狀態(tài)轉(zhuǎn)移之間執(zhí)行XOR(異或)操作。例如,對(duì)于圖7的格圖300的分支索引I=0,讀取的編碼數(shù)據(jù)是11(每次處理編碼數(shù)據(jù)的單一字)。格圖允許從S0310A到S0310B或S1311B的轉(zhuǎn)移。從S0310A到S0310B的轉(zhuǎn)移表示編碼數(shù)據(jù)00,而S0310A到S1311B的轉(zhuǎn)移表示編碼數(shù)據(jù)11。在判定步驟345中,讀取的數(shù)據(jù)11和從S0310A到S1311B的轉(zhuǎn)移之間的XOR處理得出0漢明距離(0錯(cuò)誤)(11 XOR 11=00),指示這是在兩種可能之間做出的正確選擇,并且解碼和期望的解碼的信息是1。如果在判定步驟345中識(shí)別出路徑具有0漢明距離(0錯(cuò)誤),則該處理進(jìn)行至步驟347,其中選擇具有0漢明距離的路徑作為正確路徑。然后,該處理進(jìn)行至判定步驟348,其中做出通過(guò)是否在每個(gè)元數(shù)據(jù)88已處理所有數(shù)據(jù)推斷處理是否結(jié)束的評(píng)估,這確定編碼數(shù)據(jù)87的大小。假設(shè)在步驟348處理未結(jié)束,則分支索引I在步驟349增加1,并且在步驟343處理返回來(lái)嘗試讀取更多的數(shù)據(jù)。如果處理在步驟348完成,則處理前進(jìn)到步驟398,其中通過(guò)解碼編碼數(shù)據(jù)87獲得的原始信息78被發(fā)送到主機(jī)61-65,然后處理在步驟399終止。
在某些實(shí)施例中,對(duì)于圖7的格圖300或圖11的格圖500,通過(guò)經(jīng)由圖8所示的流程圖340的步驟343到步驟351來(lái)完成步驟720、725、730和735(圖6)。如果在判定步驟343中沒(méi)有獲得所有n位(即,沒(méi)有獲得分支的所有位,如圖10的虛線路徑I=1所示),則處理進(jìn)行至步驟350,其中確定丟失位Q的數(shù)量。例如,對(duì)于字的長(zhǎng)度(n=2位),在裝置263-264(圖4)之一發(fā)生故障而另一個(gè)正常操作的情況下,Q可以是1。然而,如果裝置281-285(圖5)之一發(fā)生故障,則Q會(huì)等于n。然后,該處理進(jìn)行至判定步驟351,其中做出備用存儲(chǔ)器(諸如圖1的備用存儲(chǔ)器97)是否已經(jīng)可用的詢問(wèn)。如果在步驟351答案是“否”,則處理進(jìn)行至步驟352,其中由用戶獲得備用存儲(chǔ)器來(lái)替代發(fā)生故障的存儲(chǔ)器。在某些實(shí)施例中,系統(tǒng)可以用于為備用存儲(chǔ)其分配存儲(chǔ)空間而向客戶(即,用戶)收費(fèi)。獲得備用存儲(chǔ)器97可以涉及用戶購(gòu)買備用存儲(chǔ)器,例如,如果發(fā)生故障的存儲(chǔ)器的保修期已過(guò)。當(dāng)客戶首先調(diào)用備用存儲(chǔ)器時(shí),可以電子方式實(shí)現(xiàn)該購(gòu)買。如果保修期仍然有效,則可以免費(fèi)提供備用存儲(chǔ)器。
在某些實(shí)施例中,在用戶需要備用存儲(chǔ)裝置之前,用戶不購(gòu)買備用存儲(chǔ)裝置。如果在保修期中調(diào)用備用存儲(chǔ)器,備用存儲(chǔ)器的費(fèi)用可以是0。步驟352還可以包括在利用現(xiàn)有備用存儲(chǔ)器,制造商自動(dòng)交付替代備用存儲(chǔ)器。該替代備用存儲(chǔ)器應(yīng)放置在故障存儲(chǔ)器移開(kāi)的地方。在某些實(shí)施例中,替代存儲(chǔ)器可以位于與存儲(chǔ)裝置91-93不同的物理位置上。例如,可以通過(guò)高速接口(即,因特網(wǎng)、企業(yè)內(nèi)部網(wǎng)、TCP/IP等)按需訪問(wèn)替代存儲(chǔ)器。作為保修協(xié)議的一部分,發(fā)生故障的存儲(chǔ)器可以返回到工廠來(lái)進(jìn)行故障分析。然后,該處理從步驟352進(jìn)行至步驟353,其中做出到圖9的流程圖360的步驟361的轉(zhuǎn)移。如果步驟351的答案為“是”,則處理直接進(jìn)行至步驟352和步驟353。在某些實(shí)施例中,存儲(chǔ)裝置(即,RAID 90中的存儲(chǔ)器91-93)支出到分離的物理位置。例如,通過(guò)將存儲(chǔ)裝置92-93放置在不同的房間、建筑、城市、州、國(guó)家等,存儲(chǔ)裝置91、92和93每一個(gè)可以相互物理分離。
在圖10中,假設(shè)編碼數(shù)據(jù)包括兩位的字,諸如圖12所示的編碼器編碼的數(shù)據(jù)。還假設(shè)因?yàn)闉?zāi)難性故障、具有1位寬的帶區(qū)的相鄰裝置對(duì)(諸如圖4的裝置263-264),或具有2位寬的帶區(qū)的單獨(dú)裝置(諸如圖5的裝置282)已經(jīng)丟失了所有數(shù)據(jù)。圖8-9顯示在流程圖340的步驟343中不能讀取的情況下如何重建數(shù)據(jù)。
在某些實(shí)施例中,通過(guò)經(jīng)由圖8所示的流程圖340的步驟346到步驟351完成步驟720、725、730和735(圖6)。如果在判定步驟345中沒(méi)有識(shí)別出具有0錯(cuò)誤的路徑,則處理進(jìn)行至步驟346,其中通過(guò)設(shè)置Q=n假設(shè)所處理的字的所有n位都是錯(cuò)誤的,并且處理進(jìn)行至下面的判定步驟351,然后到流程圖360(圖9)的步驟361。
在圖9中,處理從步驟361進(jìn)行至判定步驟362,其中做出在分支I中是否所有位丟失(即,Q=n),以及由于分支I的丟失是否需要重建所有n位的判定。如果在步驟362答案為“是”,處理進(jìn)行至步驟363,其中跳過(guò)丟失的分支I,并且從下一個(gè)Q-1分支(表示Q-1個(gè)字)讀取全部(Q-1)*n位。這是格圖的值,其中它可能“先行”并使用后續(xù)分支來(lái)確定來(lái)自分支I的丟失的編碼數(shù)據(jù)。然后,在步驟364中,在n個(gè)讀取位和格圖300的分支I+1到分支I+(Q-1)中允許的路徑之間的n位組中執(zhí)行XOR(異或)操作。然后,在步驟365中,在分支I+1到分支I+(Q-1)中的期望路徑是具有0漢明距離的分支(即,0錯(cuò)誤)的分支和相互連接的、具有0漢明距離的那些先前識(shí)別的分支。在解碼中,0漢明距離等效于0錯(cuò)誤。
一旦在分支I+1到I+(Q-1)中建立解碼路徑,丟失的分支I就重建為連接先前識(shí)別的分支I-1和新識(shí)別的分支I+1到I+(Q-1)中的路徑的路徑。該“連通性”在通過(guò)格圖建立正確路徑中是非常關(guān)鍵的。通過(guò)連續(xù)連接在格圖中每個(gè)分支中的各個(gè)路徑來(lái)獲得整個(gè)解碼路徑(如圖7的格圖300中的突出表示的線所示)。它是由0漢明距離識(shí)別的、重建的路徑,并且寫入在步驟351購(gòu)買的備用裝置中。然后處理從步驟365進(jìn)行至步驟366(圖9),其中分支索引遞增Q-1來(lái)說(shuō)明在該重建處理階段解碼的分支。然后,處理從步驟366進(jìn)行至步驟378,其中將所恢復(fù)的、丟失的編碼數(shù)據(jù)存儲(chǔ)在備用存儲(chǔ)器上。然后,該處理從步驟378進(jìn)行至步驟379,其中該處理返回到圖8的步驟355。
圖10給出經(jīng)由圖12所示的(2,1,3)卷積編碼器的編碼數(shù)據(jù)的數(shù)據(jù)重建的說(shuō)明示例。在圖10的情況中,所有數(shù)據(jù)丟失是包括分支索引I=1的數(shù)據(jù),這表示Q=2個(gè)丟失位,而且Q=n。最后的已知狀態(tài)是S1311B,這是僅僅對(duì)分支索引I=0計(jì)算出的。圖10由圖7的格圖300創(chuàng)建的,而且從格圖300中刪除所有不可能的狀態(tài)。對(duì)于圖10,對(duì)于分支I=1,允許的轉(zhuǎn)移僅是從S1311B到S2312C和S3313C,并且由需要為了重建分支I的、丟失/損毀的編碼數(shù)據(jù)的編碼數(shù)據(jù)做出實(shí)際進(jìn)行這兩個(gè)轉(zhuǎn)移中的哪一個(gè)的確定。為了重建丟失的數(shù)據(jù),對(duì)于分支I=1,流程圖340(圖8)“先行(look ahead)”,并且如步驟364中所述,為分支I+Q-1(分支I=2(Q=2))從編碼數(shù)據(jù)87讀取編碼數(shù)據(jù),并且按照?qǐng)D10編碼數(shù)據(jù)是01。按照?qǐng)D13中的表290,從S2312C到S4314D的轉(zhuǎn)移表示11,而從S2312C到S5315D的轉(zhuǎn)移表示00。類似地,按照?qǐng)D13中的表290,從S3313C到S6316D的轉(zhuǎn)移表示10,而從S3313C到S7317D的轉(zhuǎn)移表示01。
按照流程圖360(圖9)的步驟364,在為分支I=2(I+Q-1=2)讀取的編碼數(shù)據(jù)和由關(guān)于分支I=2的四個(gè)可能路徑表示的編碼數(shù)據(jù)之間的XOR處理給出下面的結(jié)果對(duì)于S3313C到S7317D,01 XOR 01=00,對(duì)于S3313C到S6316D,10 XOR 01=11,對(duì)于S2312C到S5315D,00 XOR 01=01,而對(duì)于S2312C到S4314D,11 XOR 01=10。因此,對(duì)于分支I=2,S3313C到S7317D表示僅有的基于0漢明距離(01 XOR 01=00)的可行路徑?;诟駡D中的解碼路徑之間所需要的連通性,在分支I=1中必須由從S1311B到S3313C的轉(zhuǎn)移表示丟失的編碼數(shù)據(jù),并且丟失的編碼數(shù)據(jù)是10。因此,關(guān)于分支I=1和I=2的編碼數(shù)據(jù)是10和01,而關(guān)于這兩個(gè)分支的編碼信息是11。假設(shè)解碼處理正在進(jìn)行,由于解碼是對(duì)兩個(gè)分支進(jìn)行的,所以在步驟366分支索引必須按Q-1=1增加,并且在步驟348再加1。重建編碼數(shù)據(jù)存儲(chǔ)在RAID 90的備用存儲(chǔ)器97中。如果這種重建作為用戶初始讀操作的一部分進(jìn)行,則在RAM 84中放置作為重建處理的一部分的原始信息,例如用于最終發(fā)送到主機(jī)61-65之一。
步驟363-366(圖9)重建在分支I中的所有n位。如果在步驟362中Q不等于n,則已經(jīng)恢復(fù)了分支I的一些位,但不是恢復(fù)了所有的位,并且處理從步驟362進(jìn)行至步驟370來(lái)部分重建分支I。
在步驟370,所讀取的可用位與格解碼器的分支I中的每個(gè)允許路徑進(jìn)行XOR。然后,處理從步驟370進(jìn)行至判定步驟371,其中做出是否存在足夠的生存信息來(lái)唯一識(shí)別分支I中對(duì)于所讀取位具有0錯(cuò)誤的期望路徑。如果答案為“是”,處理進(jìn)行至步驟372,其中選擇與原始數(shù)據(jù)和丟失的編碼數(shù)據(jù)都得出0錯(cuò)誤的分支I中的路徑。然后,處理從步驟372進(jìn)行至步驟378,其中將所恢復(fù)的、丟失的編碼數(shù)據(jù)存儲(chǔ)在備用存儲(chǔ)器上。然后,處理從步驟378進(jìn)行至步驟379,其中處理返回到圖8的步驟355。
圖10的分支I中的部分完成信息的示例是如果對(duì)于I=1取出一位,而一位丟失。在圖9的步驟362中檢測(cè)分支I=1中部分恢復(fù)的數(shù)據(jù)的存在。從S1311B到S2312C的路徑表示編碼數(shù)據(jù)01。從S1311B到S3313C的路徑表示編碼數(shù)據(jù)10。因此,如果數(shù)據(jù)的兩位對(duì)的首位或尾位可用,則經(jīng)由圖9的步驟371-372足以確定用于圖10的分支I=1的正確路徑。例如,如果首位是1而尾位是丟失位,則根據(jù)分支I=1中僅允許的路徑(具有首位1)是S1311B到S3313C,即僅可允許的、可以導(dǎo)致0漢明距離的路徑,重建的編碼數(shù)據(jù)是10。然后,在圖9的步驟378,重建數(shù)據(jù)被存儲(chǔ)在圖1的備用存儲(chǔ)器97上。如果該重建作為用戶初始讀取處理(諸如圖6的處理700)的一部分進(jìn)行,則作為重建處理的一部分獲得的原始信息放置在RAM 84。
如果在步驟371中不存在編碼數(shù)據(jù)足夠的幸存位來(lái)唯一識(shí)別分支I中對(duì)于所讀取位具有0漢明距離的路徑,則處理進(jìn)行至步驟373,其中從編碼數(shù)據(jù)87讀取下一n位來(lái)形成在格圖的分支I+1分析的字,然后處理進(jìn)行至步驟374。在步驟374中,將所讀取的n位與格解碼器的分支I+1中的每個(gè)允許路徑實(shí)現(xiàn)XOR來(lái)隔離具有0漢明距離(0錯(cuò)誤)的路徑。圖7和11是特定格解碼器300和500的示例。在分支I+1中、與部分讀取的分支I不兼容的路徑被認(rèn)為是不允許的,并且忽略它們。該處理從步驟374進(jìn)行至步驟375,其中處理選擇分支I+1中具有0漢明距離(0錯(cuò)誤)的路徑。選擇分支I中的路徑以便連接所有在分支I-1和I+1中已經(jīng)識(shí)別的路徑,這表示各個(gè)分支路徑必須穿過(guò)格圖的所有通路連接到相鄰分支的路徑上。以這種方式,識(shí)別關(guān)于分支I的丟失的編碼數(shù)據(jù)和關(guān)于分支I和分支I+1的原始信息。然后,處理從步驟375進(jìn)行至377,其中分支I索按單位遞加。然后,處理從步驟377進(jìn)行至378(對(duì)此已經(jīng)進(jìn)行描述)。
如果在一個(gè)字中有三個(gè)位(諸如圖11的格圖500所示),則分支I的恢復(fù)可以采用分支I+1和I+2的“先行”,以便找出通過(guò)分支I-1、I+1和I+2的具有0漢明距離的連接路徑。
在發(fā)生故障后,可以通過(guò)使用后臺(tái)處理或前臺(tái)處理進(jìn)行數(shù)據(jù)重建。后臺(tái)處理是控制器80獨(dú)立執(zhí)行數(shù)據(jù)重建而沒(méi)有主機(jī)61-65的參與。前臺(tái)處理是由主機(jī)61-65之一特別請(qǐng)求控制器80重建數(shù)據(jù)。可以在后臺(tái)從很靠前的帶區(qū)到很靠后的帶區(qū)地重建數(shù)據(jù)。此外,當(dāng)客戶需要時(shí),由于數(shù)據(jù)文件相互獨(dú)立編碼,所以可以在前臺(tái)重建數(shù)據(jù)。假設(shè)控制器80在后臺(tái)監(jiān)視重建效果,并且在前臺(tái)掃描哪個(gè)文件被重建,一旦在前臺(tái)重建了數(shù)據(jù),它就不需要在后臺(tái)重建了。對(duì)于編碼數(shù)據(jù)來(lái)說(shuō),不需要重建兩次,一次在前臺(tái)(基于主機(jī)61-65之一請(qǐng)求(按用戶需要)),再次在后臺(tái)(由于控制器80運(yùn)行的后臺(tái)處理忽略丟失的編碼數(shù)據(jù)已經(jīng)在前臺(tái)重建)。
在圖12中顯示了關(guān)于(2,1,3)二進(jìn)制卷積編碼的狀態(tài)示意圖200。它是圖7的格解碼器300,在圖6的、從RAID 90向主機(jī)61-65之一讀取處理700期間使用它,在從主機(jī)61-65之一向RAID 90的原始寫處理期間用來(lái)解碼由狀態(tài)示意圖200創(chuàng)建的編碼數(shù)據(jù)87。狀態(tài)示意圖200包括8個(gè)狀態(tài)S0210、S1211、S2212、S3213、S4214、S5215、S6216、S7217。以數(shù)量和方向限制在狀態(tài)示意圖200中的狀態(tài)之間的離散轉(zhuǎn)移。例如,在狀態(tài)S0210開(kāi)始的編碼處理僅可以向后轉(zhuǎn)移到S0210或向前轉(zhuǎn)移到S1211。類似地,從S1211開(kāi)始的處理僅可以轉(zhuǎn)移到S2212或S3213等。在狀態(tài)示意圖200的狀態(tài)之間的每個(gè)轉(zhuǎn)移導(dǎo)致將信息中的一位編碼為兩位糾錯(cuò)編碼數(shù)據(jù)。參考圖13的表290進(jìn)一步解釋該編碼。
圖13的表290具有四列初始狀態(tài)291、目的狀態(tài)、信息293和糾錯(cuò)編碼數(shù)據(jù)294?;跔顟B(tài)示意圖200中的總共8個(gè)狀態(tài)和從一個(gè)特定狀態(tài)到緊跟著的下一可能狀態(tài)的兩種可能轉(zhuǎn)移,在表290中具有總共16行。經(jīng)由狀態(tài)示意圖200產(chǎn)生表290,并且這里用于說(shuō)明用于產(chǎn)生編碼數(shù)據(jù)的信息的編碼和用于獲得原始信息的編碼數(shù)據(jù)的解碼。
在圖12中,顯示了突出表示的編碼路徑,包括S0210、S1211、S3213、S7217、S7217、S6216、S4214和S0210,用于示范編碼輸入信息1111000。S0210到S1211將1編碼為11。S1211到S3213將1編碼為10。S3213到S7217將1編碼為01。S7217到S7217將1編碼為10。S7217到S6216將0編碼為01。S6216到S4214將0編碼為00。最后,S4214到S0210將0編碼為11。其結(jié)果是輸入信息(即來(lái)自主機(jī)61-65的主機(jī)信息)1111000被編碼為用于在RAID 90中存儲(chǔ)的糾錯(cuò)編碼數(shù)據(jù)11100110010011。在圖7的格圖300中,解碼糾錯(cuò)編碼數(shù)據(jù)11100110010011來(lái)產(chǎn)生原始信息1111000,如圖7的突出表示的路徑所示。
在圖14中,顯示用于圖12的狀態(tài)示意圖200和圖13中的表290的二進(jìn)制(2,1,3)碼的編碼器電路220。編碼器220可以位于控制器80的專用電路81中。作為選擇,編碼器220可以實(shí)現(xiàn)在控制器80的外部。編碼器電路220每次接收一位輸入數(shù)據(jù)流U(J)221,用于進(jìn)行編碼。編碼器電路220包括m=3級(jí)移位寄存器,其包括寄存器230、231和232。對(duì)于編碼處理,寄存器230-232的初始內(nèi)容是0,因此諸如圖7的格圖300和圖11的格圖500所示的格解碼處理總是在狀態(tài)S0開(kāi)始并結(jié)束。
參照?qǐng)D14,通過(guò)n=2模2加法器(致使二進(jìn)制加法不用進(jìn)位,并且包括加法器240和加法器242)選擇性相加輸入信息流U(J)221和寄存器230、231和232的輸出來(lái)產(chǎn)生輸出V(J,1)241和輸出V(J,2)243。復(fù)用器251將各個(gè)編碼器輸出V(J,1)241和V(J,2)243串行化為編碼輸出V 250。模2加法器可以實(shí)現(xiàn)為專用電路中XOR(異或)門,或通過(guò)使用軟件、固件、專用電路等實(shí)現(xiàn)。由于模2二進(jìn)制加法是線性操作,編碼器可以運(yùn)行為線性前饋移位寄存器。對(duì)于索引J的V250的每個(gè)地增的輸出(由圖14中的V(J,1)和V(J,2)限定)稱為字。圖7的格圖300和圖11的格圖500的每個(gè)分支表示這些字之一。因此,以一個(gè)分支表示一個(gè)字來(lái)完成格解碼,從而對(duì)應(yīng)于每次傳送卷積編碼器的輸出。
圖15圖解作為SCSI寫命令的示例的寫命令600,包括起始邏輯塊地址(LBA)602、傳送長(zhǎng)度603和邏輯單元號(hào)(LUN)604。LUN 604指定重建的編碼數(shù)據(jù)由寫命令600寫入哪個(gè)備用存儲(chǔ)裝置,諸如備用存儲(chǔ)器97。起始LBA 602指示備用存儲(chǔ)器97的第一邏輯塊地址來(lái)接收數(shù)據(jù),并且傳送長(zhǎng)度指示傳送了多少數(shù)據(jù)。通過(guò)SCSI或光纖通道接口可以實(shí)現(xiàn)寫命令600。寫命令600是僅一個(gè)可以使用的可能的寫命令。其它SCSI寫命令包括寫加校驗(yàn),例如其中在寫命令成功結(jié)束前驗(yàn)證所寫的數(shù)據(jù)。
這里所述的實(shí)施例可以采用完全硬件實(shí)現(xiàn)、完全軟件實(shí)現(xiàn)或包括硬件和軟件部分的實(shí)現(xiàn)的形式。在某些實(shí)施例中,本發(fā)明用軟件實(shí)現(xiàn),包括但不限于固件、駐留軟件、微代碼等。
此外,這里所述的實(shí)施例可以采用可從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問(wèn)的計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì)提供由(或連同)計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用的程序代碼。為了描述的目的,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是包含、存儲(chǔ)、通信、傳播或傳送由(或連同)指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用的程序的任何裝置。
介質(zhì)可以電、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)(或設(shè)備或裝置)或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的例子包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可移動(dòng)計(jì)算機(jī)磁盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、剛性磁盤和光盤。光盤的當(dāng)前例子包括緊致盤只讀存儲(chǔ)器(CD-ROM)、緊致盤讀/寫(CD-R/W)和DVD。
適合存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)可以包括至少一個(gè)直接或間接通過(guò)總線連接到存儲(chǔ)器元件的處理器。存儲(chǔ)器元件可以包括在程序代碼實(shí)際執(zhí)行期間使用的局部存儲(chǔ)器、海量存儲(chǔ)裝置和高速緩存,高速緩存提供至少一些程序代碼的臨時(shí)存儲(chǔ)以便減少在執(zhí)行期間必須從海量存儲(chǔ)裝置中取出代碼的次數(shù)。
輸入/輸出或I/O裝置(包括但不限于鍵盤、顯示器、指針裝置等)可以直接或通過(guò)中間的I/O控制器連接到系統(tǒng)。
網(wǎng)絡(luò)適配器還可以連接到系統(tǒng)以允許數(shù)據(jù)處理系統(tǒng)通過(guò)中間的專用或公用網(wǎng)絡(luò)連接到其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)裝置。調(diào)制解調(diào)器、有線調(diào)制解調(diào)器和以太網(wǎng)卡只是幾個(gè)當(dāng)前可用類型的網(wǎng)絡(luò)適配器。
這里所述的實(shí)施例可以作為方法、裝置或者使用生產(chǎn)軟件、固件、硬件或其組合的標(biāo)準(zhǔn)編程和/或引擎技術(shù)實(shí)現(xiàn)的計(jì)算機(jī)程序產(chǎn)品。
在某些實(shí)施例中,申請(qǐng)人的發(fā)明包括指令,其中這些指令由處理器82(圖1)和/或控制器80(圖1)運(yùn)行來(lái)執(zhí)行圖6、8和9中所示的流程圖中的步驟。
在其他實(shí)施例中,申請(qǐng)人的發(fā)明包括駐留在任何其他計(jì)算機(jī)程序產(chǎn)品中的指令,其中這些指令由控制器80外部或內(nèi)部的計(jì)算機(jī)執(zhí)行。在任一種情況中,指令可以編碼在信息存儲(chǔ)介質(zhì)中,介質(zhì)包括磁信息存儲(chǔ)介質(zhì)、光信息存儲(chǔ)介質(zhì)、電信息存儲(chǔ)介質(zhì)等。申請(qǐng)人所謂的“電存儲(chǔ)介質(zhì)”是指諸如PROM、EPROM、EEPROM、閃速PROM、壓縮閃存、智能卡之類的裝置。
某些實(shí)施例可以指向由人或自動(dòng)處理系統(tǒng)采用計(jì)算基礎(chǔ)架構(gòu)的方法,包括將計(jì)算機(jī)可讀代碼集成進(jìn)執(zhí)行上述實(shí)施例的操作的系統(tǒng)。例如,圖6、8和9圖解使用所述實(shí)施例取出編碼數(shù)據(jù)格式的信息的步驟。代碼與系統(tǒng)(即,SAN 10)的組合能夠執(zhí)行這里所述實(shí)施例的操作的步驟。計(jì)算基礎(chǔ)架構(gòu)的部署可以在這里所述的實(shí)施例的服務(wù)、制造和/或配置期間進(jìn)行。例如,咨詢公司可以有對(duì)多個(gè)系統(tǒng)的服務(wù)責(zé)任。這種服務(wù)責(zé)任可以包括諸如系統(tǒng)升級(jí)、錯(cuò)誤診斷、性能調(diào)整和增強(qiáng)、安裝新硬件、安裝新軟件、與其他系統(tǒng)的配置等。作為該服務(wù)的一部分,或者作為單獨(dú)的服務(wù),服務(wù)人員可以根據(jù)這里所述的技術(shù)配置系統(tǒng),以便有效地允許這里所述實(shí)施例的操作。例如,該配置可以包括將計(jì)算機(jī)指令、參數(shù)、常數(shù)(即,卷積編碼類型、一個(gè)字中的位數(shù)量n、帶區(qū)寬度、存儲(chǔ)裝置數(shù)量等)、中斷向量加載到存儲(chǔ)器中,以便當(dāng)執(zhí)行代碼時(shí),系統(tǒng)可以執(zhí)行所述的技術(shù)來(lái)實(shí)現(xiàn)這里所述的實(shí)施例。
上述用于說(shuō)明目的的描述使用特定術(shù)語(yǔ)來(lái)提供對(duì)所述實(shí)施例的詳盡理解。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,這些特定細(xì)節(jié)并不是實(shí)踐實(shí)施例的操作所必須的。在其他方面,公知的電路和裝置用方框圖的形式示出,以便避免不必要地分散對(duì)實(shí)施例的注意。因此,上述對(duì)特定實(shí)施例的描述是用于說(shuō)明和描述目的。它們并不意圖窮舉或?qū)?shí)施例的操作限制于所公開(kāi)的精確形式。顯然,根據(jù)上述討論,許多修改和變型是可能的。
圖6、8和9的邏輯描述了以特定順序發(fā)生的特定操作。在替代的實(shí)現(xiàn)中,一些邏輯操作可以以不同的順序執(zhí)行、修改或刪除。此外,可以向上述邏輯添加步驟并且任何符合所述實(shí)現(xiàn)。此外,這里所述的操作可以順序發(fā)生,或者可以并行處理某些操作,或者由單個(gè)處理執(zhí)行的所述操作可以由分散的處理來(lái)執(zhí)行。
圖6、8和圖9的邏輯可以用軟件實(shí)現(xiàn)。該邏輯可以是主機(jī)的操作系統(tǒng)的一部分或應(yīng)用程序。在另一個(gè)實(shí)現(xiàn)中,該邏輯可以保存在由SAN 10管理的存儲(chǔ)區(qū)域中,或者在只讀存儲(chǔ)器或其他硬線類型的裝置中。優(yōu)選的邏輯可以在硬盤驅(qū)動(dòng)器中實(shí)現(xiàn)或者在可編程和非可編程門陣列邏輯中實(shí)現(xiàn)。
RAID領(lǐng)域中的技術(shù)人員可以開(kāi)發(fā)等效于這里所述實(shí)施例的其他實(shí)施例。上述說(shuō)明書中采用的術(shù)語(yǔ)和表示方式在這里是用作描述性的術(shù)語(yǔ),而非限制性,并且在使用這些術(shù)語(yǔ)和表示方式時(shí)并沒(méi)有意圖將其所示和描述的特征的等效物或其部分排除在外,應(yīng)當(dāng)認(rèn)識(shí)到范圍僅僅由權(quán)利要求書定義和限制。
權(quán)利要求
1.一種系統(tǒng),包括多個(gè)存儲(chǔ)裝置;耦合到所述多個(gè)存儲(chǔ)裝置的格解碼器,所述解碼器用于處理從所述多個(gè)存儲(chǔ)裝置接收到的編碼數(shù)據(jù)來(lái)產(chǎn)生解碼數(shù)據(jù),所述編碼數(shù)據(jù)包括通過(guò)信息的當(dāng)前和過(guò)去位的卷積產(chǎn)生的糾錯(cuò)編碼數(shù)據(jù);其中所述系統(tǒng)用于確定是否存在發(fā)生故障的存儲(chǔ)裝置;響應(yīng)于確定為存在發(fā)生故障的存儲(chǔ)裝置分配用于存儲(chǔ)重建數(shù)據(jù)的存儲(chǔ)空間,所述重建數(shù)據(jù)包括預(yù)先存儲(chǔ)在所述發(fā)生故障的存儲(chǔ)裝置上的編碼數(shù)據(jù);處理所述解碼數(shù)據(jù)來(lái)產(chǎn)生所述重建數(shù)據(jù);和將所述重建數(shù)據(jù)存儲(chǔ)在所述分配的存儲(chǔ)空間中。
2.如權(quán)利要求1所述的系統(tǒng),其中所述系統(tǒng)還用于測(cè)量所述解碼數(shù)據(jù)中錯(cuò)誤量;將所述錯(cuò)誤量與所述多個(gè)存儲(chǔ)裝置的出錯(cuò)限制比較;和響應(yīng)于所述錯(cuò)誤量超過(guò)存儲(chǔ)裝置的所述出錯(cuò)限制,將所述存儲(chǔ)裝置識(shí)別為發(fā)生故障的存儲(chǔ)裝置。
3.如權(quán)利要求1所述的系統(tǒng),其中所述系統(tǒng)還用于從所述多個(gè)存儲(chǔ)裝置接收自監(jiān)測(cè)分析和報(bào)告技術(shù)信息;和響應(yīng)于所述自監(jiān)測(cè)分析和指示存儲(chǔ)裝置發(fā)生故障的報(bào)告技術(shù)信息,將所述存儲(chǔ)裝置識(shí)別為所述發(fā)生故障的存儲(chǔ)裝置。
4.如權(quán)利要求1所述的系統(tǒng),其中所述編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)所述字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)所述字處理一部分所述信息,并且所述多個(gè)存儲(chǔ)裝置都不具有兩個(gè)或多個(gè)相鄰字。
5.如權(quán)利要求1所述的系統(tǒng),其中所述編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)所述字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)所述字處理一部分所述信息,并且所述多個(gè)存儲(chǔ)裝置都不具有多于每個(gè)所述字的n位中的一位。
6.如權(quán)利要求1所述的系統(tǒng),還包括元數(shù)據(jù)控制器,用于處理與所述編碼數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù),所述元數(shù)據(jù)包括用于指定所述編碼數(shù)據(jù)的存儲(chǔ)位置的位置信息。
7.如權(quán)利要求1所述的系統(tǒng),還包括元數(shù)據(jù)控制器,用于處理與所述編碼數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù),所述元數(shù)據(jù)包括用于指定編碼數(shù)據(jù)的編碼類型的編碼器信息。
8.一種存儲(chǔ)區(qū)域網(wǎng)絡(luò),包括至少一個(gè)主機(jī);多個(gè)存儲(chǔ)裝置;耦合到所述多個(gè)存儲(chǔ)裝置的格解碼器,所述解碼器用于處理從所述多個(gè)存儲(chǔ)裝置接收到的編碼數(shù)據(jù)來(lái)產(chǎn)生解碼的數(shù)據(jù),所述編碼數(shù)據(jù)包括通過(guò)信息的當(dāng)前和過(guò)去位的卷積產(chǎn)生的糾錯(cuò)編碼數(shù)據(jù);其中所述系統(tǒng)用于確定是否存在發(fā)生故障的存儲(chǔ)裝置;并且響應(yīng)于確定為存在發(fā)生故障的存儲(chǔ)裝置分配用于存儲(chǔ)重建數(shù)據(jù)的存儲(chǔ)空間,所述重建數(shù)據(jù)包括預(yù)先存儲(chǔ)在所述發(fā)生故障的存儲(chǔ)裝置上的編碼數(shù)據(jù);處理所述解碼的數(shù)據(jù)來(lái)產(chǎn)生所述重建數(shù)據(jù);和將所述重建數(shù)據(jù)存儲(chǔ)在所述分配的存儲(chǔ)空間中。
9.如權(quán)利要求8所述的存儲(chǔ)區(qū)域網(wǎng)絡(luò),其中所述網(wǎng)絡(luò)還用于測(cè)量所述解碼數(shù)據(jù)中錯(cuò)誤量;將所述錯(cuò)誤量與所述多個(gè)存儲(chǔ)裝置的每一個(gè)的出錯(cuò)限制比較;和響應(yīng)于所述錯(cuò)誤量超過(guò)存儲(chǔ)裝置的所述出錯(cuò)限制,將所述存儲(chǔ)裝置識(shí)別為發(fā)生故障的存儲(chǔ)裝置。
10.如權(quán)利要求8所述的存儲(chǔ)區(qū)域網(wǎng)絡(luò),其中所述網(wǎng)絡(luò)還用于從所述多個(gè)存儲(chǔ)裝置接收自監(jiān)測(cè)分析和報(bào)告技術(shù)信息;和響應(yīng)于所述自監(jiān)測(cè)分析和指示存儲(chǔ)裝置發(fā)生故障的報(bào)告技術(shù)信息,將所述存儲(chǔ)裝置識(shí)別為所述發(fā)生故障的存儲(chǔ)裝置。
11.如權(quán)利要求8所述的存儲(chǔ)區(qū)域網(wǎng)絡(luò),其中所述編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)所述字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)所述字處理一部分所述信息,并且所述多個(gè)存儲(chǔ)裝置都不具有兩個(gè)或多個(gè)相鄰字。
12.如權(quán)利要求8所述的存儲(chǔ)區(qū)域網(wǎng)絡(luò),其中所述編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)所述字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)所述字處理一部分所述信息,并且所述多個(gè)存儲(chǔ)裝置都不具有多于每個(gè)所述字的n位中的一位。
13.如權(quán)利要求8所述的存儲(chǔ)區(qū)域網(wǎng)絡(luò),其中所述多個(gè)存儲(chǔ)裝置分配到分離的物理位置上。
14.一種方法,包括從多個(gè)存儲(chǔ)裝置接收編碼數(shù)據(jù);通過(guò)使用格解碼器解碼所述編碼數(shù)據(jù)來(lái)產(chǎn)生解碼的數(shù)據(jù);確定是否存在發(fā)生故障的存儲(chǔ)裝置;響應(yīng)于確定為存在發(fā)生故障的存儲(chǔ)裝置分配用于存儲(chǔ)重建數(shù)據(jù)的存儲(chǔ)空間,所述重建數(shù)據(jù)包括預(yù)先存儲(chǔ)在所述發(fā)生故障的存儲(chǔ)裝置上的編碼數(shù)據(jù);處理所述解碼的數(shù)據(jù)來(lái)產(chǎn)生所述重建數(shù)據(jù);和將所述重建數(shù)據(jù)存儲(chǔ)在所述分配的存儲(chǔ)空間中。
15.如權(quán)利要求14所述的方法,其中所述確定步驟還包括測(cè)量所述解碼數(shù)據(jù)中錯(cuò)誤量;將所述錯(cuò)誤量與所述多個(gè)存儲(chǔ)裝置的出錯(cuò)限制比較;和響應(yīng)于所述錯(cuò)誤量超過(guò)存儲(chǔ)裝置的所述出錯(cuò)限制,將所述存儲(chǔ)裝置識(shí)別為發(fā)生故障的存儲(chǔ)裝置。
16.如權(quán)利要求14所述的方法,其中所述確定步驟還包括從所述多個(gè)存儲(chǔ)裝置接收自監(jiān)測(cè)分析和報(bào)告技術(shù)信息;和響應(yīng)于所述自監(jiān)測(cè)分析和指示存儲(chǔ)裝置發(fā)生故障的報(bào)告技術(shù)信息,將所述存儲(chǔ)裝置識(shí)別為所述發(fā)生故障的存儲(chǔ)裝置。
17.如權(quán)利要求14所述的方法,還包括處理與所述編碼數(shù)據(jù)相關(guān)聯(lián)的元數(shù)據(jù),所述元數(shù)據(jù)包括指定所述編碼數(shù)據(jù)的編碼類型的編碼器信息。
18.如權(quán)利要求14所述的方法,還包括為所述分配存儲(chǔ)空間向客戶收費(fèi)。
19.如權(quán)利要求14所述的方法,還包括為將所述重建數(shù)據(jù)存儲(chǔ)在所述分配的存儲(chǔ)空間向客戶收費(fèi)。
20.如權(quán)利要求14所述的方法,其中所述編碼數(shù)據(jù)包括一個(gè)或多個(gè)字,每個(gè)所述字包括n位,其中n大于0,從卷積編碼器產(chǎn)生的每個(gè)所述字處理一部分所述信息,并且所述多個(gè)存儲(chǔ)裝置都不具有兩個(gè)或多個(gè)相鄰字。
21.一種包括計(jì)算機(jī)可使用介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,該介質(zhì)具有在所述介質(zhì)中實(shí)現(xiàn)的計(jì)算機(jī)可讀程序,其中當(dāng)計(jì)算機(jī)可讀程序在計(jì)算機(jī)上執(zhí)行時(shí),使計(jì)算機(jī)執(zhí)行權(quán)利要求14-20中的任意一個(gè)的步驟。
22.一種用于配置計(jì)算基礎(chǔ)架構(gòu)的方法,包括將計(jì)算機(jī)可讀代碼集成到系統(tǒng)中,其中代碼和所述系統(tǒng)組合能夠執(zhí)行權(quán)利要求14-20中的任意一個(gè)的步驟。
全文摘要
一種使用卷積編碼來(lái)提供寫入某些裝置中的分帶區(qū)數(shù)據(jù)的冗余度的獨(dú)立裝置冗余陣列。在卷積編碼處理中不使用奇偶校驗(yàn)。格解碼用于從RAID讀取數(shù)據(jù),并且根據(jù)最小而且最好是0漢明距離(用于選擇通過(guò)格圖的連接路徑)從一個(gè)或多個(gè)發(fā)生故障的存儲(chǔ)裝置中重建丟失的編碼數(shù)據(jù)。
文檔編號(hào)G11C29/00GK1862500SQ20061005899
公開(kāi)日2006年11月15日 申請(qǐng)日期2006年3月9日 優(yōu)先權(quán)日2005年5月9日
發(fā)明者丹尼爾·J·威納爾斯基, 克雷格·A·克萊因, 尼爾斯·豪斯坦 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1