本公開涉及計算機(jī)技術(shù)領(lǐng)域,具體地,涉及一種數(shù)據(jù)存儲方法及裝置。
背景技術(shù):
隨著數(shù)據(jù)存儲技術(shù)的高速發(fā)展,諸如SSD(Solid State Drives,固態(tài)硬盤)等等數(shù)據(jù)存儲裝置由于具有讀寫速度快、抗震動、低功耗、無噪音、低熱量、以及質(zhì)量輕等特點,已被廣泛應(yīng)用于軍事、車載、工業(yè)、醫(yī)療、和航空等領(lǐng)域。
在使用數(shù)據(jù)存儲裝置(比如SSD)讀寫數(shù)據(jù)時,可能會產(chǎn)生隨機(jī)錯誤。目前,可以通過引入糾錯編解碼器來糾正隨機(jī)錯誤,比如,LDPC(Low Density Parity Check Code,低密度奇偶校驗碼)編解碼器,等等。為了進(jìn)一步提升數(shù)據(jù)的可靠性,還可以在多個數(shù)據(jù)通道間引入RAID(Redundant Arrays of Independent Disks,磁盤陣列)。
技術(shù)實現(xiàn)要素:
本公開的目的是提供一種數(shù)據(jù)存儲方法及裝置,用于提升數(shù)據(jù)存儲裝置的數(shù)據(jù)處理能力。
第一方面,提供一種數(shù)據(jù)存儲方法,應(yīng)用于數(shù)據(jù)存儲裝置,包括:
通過同一磁盤陣列RAID條帶的至少一個數(shù)據(jù)通道寫入數(shù)據(jù);
分別對通過所述至少一個數(shù)據(jù)通道中的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理;
對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼;
存儲編碼處理后所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)及所述校驗碼。
可選的,對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼,包括:
對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行異或運算,得到所述校驗碼。
可選的,在存儲編碼處理后所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)及所述校驗碼之后,還包括:
在讀取通過所述至少一個數(shù)據(jù)通道寫入的數(shù)據(jù)時,對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行解碼處理;
若通過第一數(shù)據(jù)通道進(jìn)行讀取的第一數(shù)據(jù)解碼錯誤,則根據(jù)所述校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù),恢復(fù)所述第一數(shù)據(jù),其中,所述第一數(shù)據(jù)通道為所述至少一個數(shù)據(jù)通道中的任一數(shù)據(jù)通道,所述其他數(shù)據(jù)通道為所述至少一個數(shù)據(jù)通道中除所述第一數(shù)據(jù)通道外的全部數(shù)據(jù)通道。
可選的,根據(jù)所述校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù),恢復(fù)所述第一數(shù)據(jù),包括:
對所述校驗碼進(jìn)行解碼處理;
對解碼后的校驗碼及通過所述其他數(shù)據(jù)通道讀取的數(shù)據(jù)進(jìn)行異或運算,得到所述第一數(shù)據(jù)的恢復(fù)數(shù)據(jù);
根據(jù)所述第一數(shù)據(jù)原有的數(shù)據(jù)長度,對所述恢復(fù)數(shù)據(jù)進(jìn)行截取,以恢復(fù)所述第一數(shù)據(jù)。
可選的,分別對通過所述至少一個數(shù)據(jù)通道中的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理,包括:
通過LDPC編碼器,或BCH編碼器分別對通過所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理。
第二方面,提供一種數(shù)據(jù)存儲裝置,包括:
存儲器,用于存儲數(shù)據(jù);
控制器,用于通過冗余磁盤陣列RAID條帶包括的至少一個數(shù)據(jù)通道寫入數(shù)據(jù);分別對通過所述至少一個數(shù)據(jù)通道中的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理;對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼;及,將編碼處理后所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)和所述校驗碼存儲到所述存儲器中。
可選的,所述控制器用于:
對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行異或運算,得到所述校驗碼。
可選的,所述控制器還用于:
在將編碼處理后所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)和所述校驗碼存儲到所述存儲器中之后,在讀取通過所述至少一個數(shù)據(jù)通道寫入的數(shù)據(jù)時,對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行解碼處理;
若通過第一數(shù)據(jù)通道進(jìn)行讀取的第一數(shù)據(jù)解碼錯誤,則根據(jù)所述校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù),恢復(fù)所述第一數(shù)據(jù),其中,所述第一數(shù)據(jù)通道為所述至少一個數(shù)據(jù)通道中的任一數(shù)據(jù)通道,所述其他數(shù)據(jù)通道為所述至少一個數(shù)據(jù)通道中除所述第一數(shù)據(jù)通道外的全部數(shù)據(jù)通道。
可選的,所述控制器用于:
對所述校驗碼進(jìn)行解碼處理;
對解碼后的校驗碼及通過所述其他數(shù)據(jù)通道讀取的數(shù)據(jù)進(jìn)行異或運算,得到所述第一數(shù)據(jù)的恢復(fù)數(shù)據(jù);
根據(jù)所述第一數(shù)據(jù)原有的數(shù)據(jù)長度,對所述恢復(fù)數(shù)據(jù)進(jìn)行截取,以恢復(fù)所述第一數(shù)據(jù)。
可選的,所述控制器用于:
通過LDPC編碼器,或BCH編碼器分別對通過所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理。
本公開實施例中,可以通過同一RAID條帶的至少一個數(shù)據(jù)通道寫入數(shù)據(jù),然后對每個數(shù)據(jù)通道寫入的數(shù)據(jù)均進(jìn)行編碼處理,再對每個數(shù)據(jù)通道編碼處理之后的數(shù)據(jù)進(jìn)行校驗運算,最后存儲編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)及校驗碼??梢?,校驗運算針對的是每個數(shù)據(jù)通道編碼處理后的數(shù)據(jù)而不是原始寫入的數(shù)據(jù),這樣,無需將校驗碼進(jìn)行編碼處理,減少了數(shù)據(jù)存儲裝置的計算量,提升了數(shù)據(jù)存儲裝置的數(shù)據(jù)處理效率。
本公開的其他特征和優(yōu)點將在隨后的具體實施方式部分予以詳細(xì)說明。
附圖說明
附圖是用來提供對本公開的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與下面的具體實施方式一起用于解釋本公開,但并不構(gòu)成對本公開的限制。在附圖中:
圖1是相關(guān)技術(shù)中寫數(shù)據(jù)通路的架構(gòu)示意圖。
圖2是相關(guān)技術(shù)中恢復(fù)數(shù)據(jù)通路的架構(gòu)示意圖。
圖3為本公開實施例中數(shù)據(jù)存儲方法的流程圖。
圖4是本公開實施例中寫數(shù)據(jù)通路的架構(gòu)示意圖。
圖5是本公開實施例中恢復(fù)數(shù)據(jù)通路的架構(gòu)示意圖。
圖6是本公開實施例中數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本公開的具體實施方式進(jìn)行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實施方式僅用于說明和解釋本公開,并不用于限制本公開。
在對本公開提供的數(shù)據(jù)存儲方法進(jìn)行說明之前,首先對本公開涉及的相關(guān)技術(shù)進(jìn)行說明。
本公開實施例中,數(shù)據(jù)存儲裝置例如可以是SSD,即,用固態(tài)電子存儲芯片陣列制成的硬盤。目前,SSD的存儲介質(zhì)一般可以有兩種,一種是采用閃存(FLASH)芯片作為存儲介質(zhì),另外一種是采用動態(tài)隨機(jī)存取存儲器(Dynamic Random Access Memory,DRAM)作為存儲介質(zhì)。其中,采用FLASH芯片作為存儲介質(zhì)的SSD,它的外觀可以被制作成多種模樣,例如:筆記本硬盤、微硬盤、存儲卡等樣式。
首先,對目前的數(shù)據(jù)存儲裝置寫數(shù)據(jù)的寫通道RAID架構(gòu)進(jìn)行說明。請參見圖1,要將4Kbits的數(shù)據(jù)通過份屬于同一RAID條帶的四個數(shù)據(jù)通道(通道0-通道3)進(jìn)行寫入,每個數(shù)據(jù)通道寫入Kbits的數(shù)據(jù),將四個數(shù)據(jù)通道寫入的4個Kbits的數(shù)據(jù)進(jìn)行RAID的校驗運算,進(jìn)而得到Kbits的校驗碼,然后將四個數(shù)據(jù)通道寫入的數(shù)據(jù)以及校驗碼分別進(jìn)行LDPC編碼處理,編碼處理后將在數(shù)據(jù)中加入校驗位,那么將得到分別對應(yīng)于四個數(shù)據(jù)通道的4個Nbits的編碼數(shù)據(jù),以及Nbits的編碼后的校驗碼??梢?,這樣的方式需要對Kbits的校驗碼進(jìn)行LDPC編碼,運算量較大。
請參見圖2,圖2為目前的數(shù)據(jù)恢復(fù)RAID架構(gòu)示意圖。在以圖1所示的方式寫入數(shù)據(jù)之后,通過RAID條帶的四個數(shù)據(jù)通道讀取寫入的數(shù)據(jù),分別將每個數(shù)據(jù)通道的數(shù)據(jù)進(jìn)行LDPC解碼處理,便能得到寫入的4Kbits的數(shù)據(jù)。但是如果其中的一個數(shù)據(jù)通道輸出數(shù)據(jù)無法被LDPC解碼器正確恢復(fù)(圖2所示的通道1),那么可以通過RAID的異或運算,利用同一RAID條帶的其他數(shù)據(jù)通道,也就是通道0、通道2、及通道3的數(shù)據(jù)來恢復(fù)解碼失敗的數(shù)據(jù)。
本公開基于上述的相關(guān)技術(shù),提供一種數(shù)據(jù)存儲方法,能夠在確保存儲的數(shù)據(jù)的可靠性的前提下,有效減小數(shù)據(jù)存儲裝置的計算量。請參見圖3,圖3是根據(jù)一示例性實施例示出的一種數(shù)據(jù)存儲方法的流程圖,該方法可以應(yīng)用于數(shù)據(jù)存儲裝置。如圖3所示,該方法包括以下步驟:
步驟S31:通過同一磁盤陣列RAID條帶的至少一個數(shù)據(jù)通道寫入數(shù)據(jù)。
步驟S32:分別對通過至少一個數(shù)據(jù)通道中的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理。
步驟S33:對編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼。
步驟S34:存儲編碼處理后每個數(shù)據(jù)通道寫入的數(shù)據(jù)及校驗碼。
在寫入數(shù)據(jù)時,可以通過份屬于同一RAID條帶的至少一個數(shù)據(jù)通道來寫入數(shù)據(jù),對于至少一個數(shù)據(jù)通道究竟是多少個數(shù)據(jù)通道,本公開實施例不作限定,可以根據(jù)實際的情況來確定,比如,可以是四個數(shù)據(jù)通道,也可以是八個數(shù)據(jù)通道,等等。在寫入數(shù)據(jù)時,可以根據(jù)至少一個數(shù)據(jù)通道的數(shù)量,將要寫入的數(shù)據(jù)分成相應(yīng)的份數(shù),然后分別通過至少一個數(shù)據(jù)通道來寫入。
數(shù)據(jù)分通道寫入后,可以分別對每個數(shù)據(jù)通道寫入的每份數(shù)據(jù)進(jìn)行編碼處理,對于如何進(jìn)行編碼處理,本公開實施例不作限定。
可選的,可以通過LDPC編碼器,或BCH編碼器,或其他的編碼器分別對通過每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理。
請參見圖4,圖4以通過4個數(shù)據(jù)通道(通道0-通道3)寫入4Kbits的數(shù)據(jù)為例,那么每個數(shù)據(jù)通道寫入Kbits的數(shù)據(jù)。數(shù)據(jù)分通道寫入后,比如可以通過LDPC編碼器分別對每個數(shù)據(jù)通道寫入的Kbits的數(shù)據(jù)進(jìn)行編碼處理,編碼后,可能會在原來的Kbits的數(shù)據(jù)的基礎(chǔ)上加入了新的校驗位,進(jìn)而得到加入校驗位的Nbits的編碼數(shù)據(jù)。對數(shù)據(jù)進(jìn)行編碼處理能夠提升數(shù)據(jù)的容錯能力,有利于數(shù)據(jù)的保護(hù)。
在分別對每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理后,可以再對編碼處理后的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼。對于校驗運算的方式,本公開實施例不作限定??蛇x的,可以對編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行異或運算,進(jìn)而得到校驗碼。
請繼續(xù)參見圖4,由于LDPC糾錯碼是一種線性分組碼,由同一個生成矩陣G(或校驗矩陣H)所約束的碼字集合中,任意挑選兩個碼字做異或運算得到的結(jié)果仍然屬于該集合。因此,可以通過LDPC編碼后的數(shù)據(jù)進(jìn)行異或運算,來生成校驗碼,即,如圖4所示的,可以對四個數(shù)據(jù)通道編碼處理后得到的四個Nbits的編碼數(shù)據(jù)進(jìn)行異或運算,進(jìn)而得到Nbits的校驗碼。可見,將編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行異或運算得到的校驗碼無需再次進(jìn)行編碼處理,相較于圖1所示的相關(guān)技術(shù)中的寫通路架構(gòu)而言,本公開實施例的技術(shù)方案減少了對RAID校驗碼進(jìn)行編碼處理的操作,減小的運算量,提升了數(shù)據(jù)存儲裝置的數(shù)據(jù)處理效率。
在進(jìn)行完編碼處理及得到RAID校驗碼之后,可以分別存儲至少一個通道寫入的編碼后的數(shù)據(jù)以及校驗碼,如圖4所示的,分別將四個通道編碼后的4個Nbits的編碼數(shù)據(jù)以及Nbits的校驗碼存入緩存,以提升數(shù)據(jù)的可靠性。
可選的,在讀取通過至少一個數(shù)據(jù)通道寫入的數(shù)據(jù)時,對編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行解碼處理,若通過第一數(shù)據(jù)通道進(jìn)行讀取的第一數(shù)據(jù)解碼錯誤,則可以根據(jù)校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù),恢復(fù)第一數(shù)據(jù)。其中,第一數(shù)據(jù)通道可以是至少一個數(shù)據(jù)通道中的任一數(shù)據(jù)通道,其他數(shù)據(jù)通道可以是至少一個數(shù)據(jù)通道中除第一數(shù)據(jù)通道外的全部數(shù)據(jù)通道。
也就是說,在讀數(shù)據(jù)時,可以先分別對存儲的每個數(shù)據(jù)通道的數(shù)據(jù)進(jìn)行解碼處理,如果每個數(shù)據(jù)通道的數(shù)據(jù)均解碼成功,便能夠順利讀取之前寫入的數(shù)據(jù)。但如果其中有一個通道的數(shù)據(jù)解碼失敗,那么可以通過RAID校驗碼以及其他數(shù)據(jù)通道的數(shù)據(jù)來恢復(fù)解碼失敗的數(shù)據(jù)。
請參見圖5,在讀取數(shù)據(jù)時,可以先分別對四個通道(通道0-通道3)編碼后的四個Nbits的編碼數(shù)據(jù)進(jìn)行解碼處理,如果解碼成功便能夠恢復(fù)原始寫入的數(shù)據(jù),如果第一數(shù)據(jù)通道,比如圖5所示的通道1解碼失敗,那么可以通過校驗碼以及通道0、通道2、及通道3的數(shù)據(jù),恢復(fù)通道1的Kbits的數(shù)據(jù),即第一數(shù)據(jù)。對于如何通過校驗碼及其他數(shù)據(jù)通道讀取的數(shù)據(jù)來恢復(fù)第一數(shù)據(jù),本公開實施例不作限定,以下對可能的方式進(jìn)行說明。
可選的,在第一數(shù)據(jù)通道的數(shù)據(jù)恢復(fù)失敗時,可以對校驗碼進(jìn)行解碼處理,然后對解碼后的校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù)進(jìn)行異或運算,得到第一數(shù)據(jù)的恢復(fù)數(shù)據(jù),再根據(jù)第一數(shù)據(jù)原有的數(shù)據(jù)長度,對恢復(fù)數(shù)據(jù)進(jìn)行截取,以恢復(fù)第一數(shù)據(jù)。
請繼續(xù)參見圖5,第一數(shù)據(jù)通道比如為圖5所示的通道1,第一數(shù)據(jù)比如為需要通過圖5所示的通道1進(jìn)行讀取的Kbits的數(shù)據(jù)。在恢復(fù)時,可以對存儲的編碼后的RAID校驗碼進(jìn)行LDPC解碼,由于存儲的校驗碼是未經(jīng)編碼處理的,那么解碼后得到的可能是Nbits長度的校驗碼,那么經(jīng)異或運算恢復(fù)通道1的數(shù)據(jù)時可能得到的是Nbits長度的恢復(fù)數(shù)據(jù),那么由于要恢復(fù)的通道1的數(shù)據(jù)原有的長度為Kbits,那么可以對恢復(fù)數(shù)據(jù)進(jìn)行截取,比如截取前Kbits的數(shù)據(jù),進(jìn)而得到要恢復(fù)的通道1的數(shù)據(jù)??梢?,數(shù)據(jù)存儲裝置存儲的數(shù)據(jù)容錯能力較強(qiáng),數(shù)據(jù)的可靠性較高。
基于同一發(fā)明構(gòu)思,本公開還提供了一種數(shù)據(jù)存儲的裝置,該數(shù)據(jù)存儲裝置能夠執(zhí)行上述的數(shù)據(jù)存儲方法。請參考圖6,圖6是根據(jù)一示例性實施例示出的一種數(shù)據(jù)存儲的裝置的示意圖。如圖6所示,該裝置600包括存儲器601和控制器602。
存儲器601,用于存儲數(shù)據(jù);
控制器602,用于通過冗余磁盤陣列RAID條帶包括的至少一個數(shù)據(jù)通道寫入數(shù)據(jù);分別對通過至少一個數(shù)據(jù)通道中的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理;對編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼;及,將編碼處理后每個數(shù)據(jù)通道寫入的數(shù)據(jù)和校驗碼存儲到存儲器601中。
可選的,控制器602用于:
對編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行異或運算,得到校驗碼。
可選的,控制器602還用于:
在將編碼處理后每個數(shù)據(jù)通道寫入的數(shù)據(jù)和校驗碼存儲到存儲器601中之后,在讀取通過至少一個數(shù)據(jù)通道寫入的數(shù)據(jù)時,對編碼處理后的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行解碼處理;
若通過第一數(shù)據(jù)通道進(jìn)行讀取的第一數(shù)據(jù)解碼錯誤,則根據(jù)校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù),恢復(fù)第一數(shù)據(jù),其中,第一數(shù)據(jù)通道為至少一個數(shù)據(jù)通道中的任一數(shù)據(jù)通道,其他數(shù)據(jù)通道為至少一個數(shù)據(jù)通道中除第一數(shù)據(jù)通道外的全部數(shù)據(jù)通道。
可選的,控制器602用于:
對校驗碼進(jìn)行解碼處理;
對解碼后的校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù)進(jìn)行異或運算,得到第一數(shù)據(jù)的恢復(fù)數(shù)據(jù);
根據(jù)第一數(shù)據(jù)原有的數(shù)據(jù)長度,對恢復(fù)數(shù)據(jù)進(jìn)行截取,以恢復(fù)第一數(shù)據(jù)。
可選的,控制器602用于:
通過LDPC編碼器,或BCH編碼器分別對通過每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將固態(tài)硬盤的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得數(shù)據(jù)存儲裝置執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
具體來講,本申請實施例中的一種數(shù)據(jù)存儲方法對應(yīng)的計算機(jī)程序指令可以被存儲在光盤,硬盤,U盤等存儲介質(zhì)上,當(dāng)存儲介質(zhì)中的與一種數(shù)據(jù)存儲方法對應(yīng)的計算機(jī)程序指令被一數(shù)據(jù)存儲裝置,比如固態(tài)硬盤讀取或被執(zhí)行時,包括如下步驟:
通過同一磁盤陣列RAID條帶的至少一個數(shù)據(jù)通道寫入數(shù)據(jù);
分別對通過所述至少一個數(shù)據(jù)通道中的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理;
對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼;
存儲編碼處理后所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)及所述校驗碼。
可選的,所述存儲介質(zhì)中存儲的與步驟:對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行校驗運算,得到校驗碼,對應(yīng)的計算機(jī)指令在被執(zhí)行過程中,包括:
對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行異或運算,得到所述校驗碼。
可選的,所述存儲介質(zhì)中存儲的與步驟:存儲編碼處理后所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)及所述校驗碼,對應(yīng)的計算機(jī)指令在被執(zhí)行之后,還包括:
在讀取通過所述至少一個數(shù)據(jù)通道寫入的數(shù)據(jù)時,對編碼處理后的所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行解碼處理;
若通過第一數(shù)據(jù)通道進(jìn)行讀取的第一數(shù)據(jù)解碼錯誤,則根據(jù)所述校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù),恢復(fù)所述第一數(shù)據(jù),其中,所述第一數(shù)據(jù)通道為所述至少一個數(shù)據(jù)通道中的任一數(shù)據(jù)通道,所述其他數(shù)據(jù)通道為所述至少一個數(shù)據(jù)通道中除所述第一數(shù)據(jù)通道外的全部數(shù)據(jù)通道。
可選的,所述存儲介質(zhì)中存儲的與步驟:根據(jù)所述校驗碼及通過其他數(shù)據(jù)通道讀取的數(shù)據(jù),恢復(fù)所述第一數(shù)據(jù),對應(yīng)的計算機(jī)指令在被執(zhí)行過程中,包括:
對所述校驗碼進(jìn)行解碼處理;
對解碼后的校驗碼及通過所述其他數(shù)據(jù)通道讀取的數(shù)據(jù)進(jìn)行異或運算,得到所述第一數(shù)據(jù)的恢復(fù)數(shù)據(jù);
根據(jù)所述第一數(shù)據(jù)原有的數(shù)據(jù)長度,對所述恢復(fù)數(shù)據(jù)進(jìn)行截取,以恢復(fù)所述第一數(shù)據(jù)。
可選的,所述存儲介質(zhì)中存儲的與步驟:分別對通過所述至少一個數(shù)據(jù)通道中的每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理,對應(yīng)的計算機(jī)指令在被執(zhí)行過程中,包括:
通過LDPC編碼器,或BCH編碼器分別對通過所述每個數(shù)據(jù)通道寫入的數(shù)據(jù)進(jìn)行編碼處理。
以上所述,以上實施例僅用以對本公開的技術(shù)方案進(jìn)行了詳細(xì)介紹,但以上實施例的說明只是用于幫助理解本公開的方法及其核心思想,不應(yīng)理解為對本公開的限制。本技術(shù)領(lǐng)域的技術(shù)人員在本公開揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本公開的保護(hù)范圍之內(nèi)。