一種修復(fù)出錯(cuò)數(shù)據(jù)的方法和設(shè)備的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種修復(fù)出錯(cuò)數(shù)據(jù)的方法和設(shè)備,屬于計(jì)算機(jī)領(lǐng)域。該方法包括:當(dāng)讀取固態(tài)硬盤(pán)包括的存儲(chǔ)塊中的數(shù)據(jù)時(shí),對(duì)該存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取該頁(yè)中出錯(cuò)的數(shù)據(jù);如果該頁(yè)中出錯(cuò)的數(shù)據(jù)的第一個(gè)數(shù)小于或等于預(yù)設(shè)第一門(mén)限,則對(duì)該頁(yè)中的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查和糾正ECC修復(fù);如果第一個(gè)數(shù)大于預(yù)設(shè)第一門(mén)限,則根據(jù)該頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和該存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將該頁(yè)中出錯(cuò)的數(shù)據(jù)替換為獲取的數(shù)據(jù),固定表項(xiàng)包括備用空間中存儲(chǔ)的各數(shù)據(jù)的存儲(chǔ)位置。該設(shè)備包括:第一獲取模塊、第一修復(fù)模塊和第一替換模塊。本發(fā)明可以大大降低發(fā)生不可糾故障的概率,以避免輕易的將該存儲(chǔ)塊標(biāo)記為壞塊。
【專(zhuān)利說(shuō)明】一種修復(fù)出錯(cuò)數(shù)據(jù)的方法和設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種修復(fù)出錯(cuò)數(shù)據(jù)的方法和設(shè)備。
【背景技術(shù)】
[0002]SSD (Solid State Disk,固態(tài)硬盤(pán))是用固態(tài)電子存儲(chǔ)芯片陣列制成的硬盤(pán),由控制單元和存儲(chǔ)單元組成。存儲(chǔ)單元由Flash芯片構(gòu)成,由于工藝和成本的因素,導(dǎo)致Flash芯片存在一定的故障率,當(dāng)Flash芯片出現(xiàn)故障時(shí)會(huì)損壞存儲(chǔ)的數(shù)據(jù),因此,修復(fù)出錯(cuò)數(shù)據(jù)的方法受到了廣泛地關(guān)注。
[0003]目前,修復(fù)出錯(cuò)數(shù)據(jù)的方法,具體為:當(dāng)讀取SSD的Flash芯片包括的存儲(chǔ)塊中的數(shù)據(jù)時(shí),對(duì)于該存儲(chǔ)塊中的某一個(gè)頁(yè),檢查該頁(yè)中出錯(cuò)的數(shù)據(jù),如果出錯(cuò)的數(shù)據(jù)個(gè)數(shù)沒(méi)有超過(guò)預(yù)設(shè)第一門(mén)限,則對(duì)該頁(yè)中出錯(cuò)的數(shù)據(jù)進(jìn)行ECC (Error Correcting Code,錯(cuò)誤檢查和糾正)修復(fù),并返回正確的數(shù)據(jù);如果出錯(cuò)的數(shù)據(jù)個(gè)數(shù)超過(guò)預(yù)設(shè)第一門(mén)限,則將該存儲(chǔ)塊標(biāo)記為壞塊,后續(xù)不再使用該存儲(chǔ)塊,同時(shí)從預(yù)設(shè)個(gè)數(shù)個(gè)存儲(chǔ)塊中選擇與該頁(yè)的頁(yè)標(biāo)識(shí)相同的頁(yè),根據(jù)選擇的頁(yè)中的數(shù)據(jù),判斷該頁(yè)的數(shù)據(jù)是否可以進(jìn)行RAID (Redundant Arrays ofInexpensive Disks,獨(dú)立冗余磁盤(pán)陣列)修復(fù),如果是,則對(duì)該頁(yè)進(jìn)行RAID修復(fù),并返回正確的數(shù)據(jù),否則,數(shù)據(jù)讀取錯(cuò)誤。
[0004]在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問(wèn)題:
[0005]當(dāng)某個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)個(gè)數(shù)超過(guò)預(yù)設(shè)第一門(mén)限時(shí),只能對(duì)該存儲(chǔ)塊進(jìn)行RAID修復(fù),而RAID修復(fù)需要根據(jù)預(yù)設(shè)個(gè)數(shù)個(gè)存儲(chǔ)塊中的數(shù)據(jù)進(jìn)行修復(fù),修復(fù)數(shù)據(jù)的時(shí)間較長(zhǎng),效率過(guò)低;并且將整個(gè)存儲(chǔ)塊被標(biāo)記為壞塊后,SSD的容量減小,后續(xù)只能使用沒(méi)有被標(biāo)記為壞塊的存儲(chǔ)塊,使沒(méi)有被標(biāo)記為壞塊的存儲(chǔ)塊使用頻繁,從而降低SSD的壽命和性能。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明實(shí)施例提供了一種修復(fù)出錯(cuò)數(shù)據(jù)的方法和設(shè)備。所述技術(shù)方案如下:
[0007]第一方面,提供了一種修復(fù)出錯(cuò)數(shù)據(jù)的方法,所述方法包括:
[0008]當(dāng)讀取固態(tài)硬盤(pán)包括的存儲(chǔ)塊中的數(shù)據(jù)時(shí),對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù);
[0009]如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第一個(gè)數(shù)小于或等于預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查和糾正ECC修復(fù);
[0010]如果所述第一個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則根據(jù)所述頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將所述頁(yè)中出錯(cuò)的數(shù)據(jù)替換為獲取的數(shù)據(jù),所述固定表項(xiàng)包括所述備用空間中存儲(chǔ)的各數(shù)據(jù)的存儲(chǔ)位置。
[0011]結(jié)合第一方面,在上述第一方面的第一種可能的實(shí)現(xiàn)方式中,所述如果所述第一個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則根據(jù)所述頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和已存儲(chǔ)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將所述頁(yè)中出錯(cuò)數(shù)據(jù)替換為獲取的數(shù)據(jù)之后,還包括:[0012]對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行第二次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù);
[0013]如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第二個(gè)數(shù)小于或等于所述預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行ECC修復(fù);
[0014]如果所述第二個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則將所述存儲(chǔ)塊標(biāo)記為壞塊,并根據(jù)所述頁(yè)的頁(yè)標(biāo)識(shí),從預(yù)設(shè)個(gè)數(shù)個(gè)存儲(chǔ)塊中獲取數(shù)據(jù);
[0015]根據(jù)獲取的數(shù)據(jù),判斷是否對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行獨(dú)立冗余磁盤(pán)陣列RAID修復(fù),如果是,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行RAID修復(fù)。
[0016]結(jié)合第一方面,在上述第一方面的第二種可能的實(shí)現(xiàn)方式中,所述對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù)之后,還包括:
[0017]獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置;
[0018]獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù);
[0019]選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
[0020]結(jié)合第一方面,在上述第一方面的第三種可能的實(shí)現(xiàn)方式中,所述對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù)之后,還包括:
[0021]獲取所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù);
[0022]根據(jù)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù),統(tǒng)計(jì)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù);
[0023]選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和所述頁(yè)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
[0024]結(jié)合第一方面,在上述第一方面的第四種可能的實(shí)現(xiàn)方式中,所述對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù)之后,還包括:
[0025]獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置;
[0026]獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù);
[0027]根據(jù)統(tǒng)計(jì)的出錯(cuò)個(gè)數(shù),從所述存儲(chǔ)塊中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置中選擇第二預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和其對(duì)應(yīng)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
[0028]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第一方面的第四種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在上述第一方面的第五種可能的實(shí)現(xiàn)方式中,所述如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第二個(gè)數(shù)小于或等于所述預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行ECC修復(fù)之后,還包括:
[0029]獲取固態(tài)硬盤(pán)中的空閑存儲(chǔ)塊,根據(jù)所述空閑存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),將所述存儲(chǔ)塊中的數(shù)據(jù)搬移到所述空閑存儲(chǔ)塊中。
[0030]結(jié)合第一方面的第五種可能的實(shí)現(xiàn)方式,在上述第一方面的第六種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0031 ] 將所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng)替換為所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)。
[0032]另一方面,提供了一種修復(fù)出錯(cuò)數(shù)據(jù)的裝置,所述裝置包括:[0033]第一獲取模塊,用于當(dāng)讀取固態(tài)硬盤(pán)包括的存儲(chǔ)塊中的數(shù)據(jù)時(shí),對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù);
[0034]第一修復(fù)模塊,用于如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第一個(gè)數(shù)小于或等于預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查和糾正ECC修復(fù);
[0035]第一替換模塊,用于如果所述第一個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則根據(jù)所述頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將所述頁(yè)中出錯(cuò)的數(shù)據(jù)替換為獲取的數(shù)據(jù),所述固定表項(xiàng)包括所述備用空間中存儲(chǔ)的各數(shù)據(jù)的存儲(chǔ)位置。
[0036]結(jié)合第二方面,在上述第二方面的第一種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:
[0037]第二獲取模塊,用于對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行第二次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù);
[0038]第二修復(fù)模塊,用于如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第二個(gè)數(shù)小于或等于所述預(yù)設(shè)第ー門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行ECC修復(fù);
[0039]標(biāo)記模塊,用于如果所述第二個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則將所述存儲(chǔ)塊標(biāo)記為壞塊,井根據(jù)所述頁(yè)的頁(yè)標(biāo)識(shí),從預(yù)設(shè)個(gè)數(shù)個(gè)存儲(chǔ)塊中獲取數(shù)據(jù);
[0040]第三修復(fù)模塊,用于根據(jù)獲取的數(shù)據(jù),判斷是否對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行獨(dú)立冗余磁盤(pán)陣列RAID修復(fù),如果是,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行RAID修復(fù)。
[0041]結(jié)合第二方面,在上述第二方面的第二種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:
[0042]第三獲取模塊,用于獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置;
[0043]第一統(tǒng)計(jì)模塊,用于獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù);
[0044]第一存儲(chǔ)模塊,用于選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
[0045]結(jié)合第二方面,在上述第二方面的第三種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:
[0046]第四獲取模塊,用于獲取所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù);
[0047]第二統(tǒng)計(jì)模塊,用于根據(jù)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù),統(tǒng)計(jì)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù);
[0048]第二存儲(chǔ)模塊,用于選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和所述頁(yè)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
[0049]結(jié)合第二方面,在上述第二方面的第四種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:
[0050]第五獲取模塊,用于獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置;
[0051]第三統(tǒng)計(jì)模塊,用于獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù);
[0052]第三存儲(chǔ)模塊,用于根據(jù)統(tǒng)計(jì)的出錯(cuò)個(gè)數(shù),從所述存儲(chǔ)塊中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置中選擇第二預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和其對(duì)應(yīng)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
[0053]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二方面的第四種可能的實(shí)現(xiàn)方式中的任ー種可能的實(shí)現(xiàn)方式,在上述第二方面的第五種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:[0054]搬移模塊,用于獲取固態(tài)硬盤(pán)中的空閑存儲(chǔ)塊,根據(jù)所述空閑存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),將所述存儲(chǔ)塊中的數(shù)據(jù)搬移到所述空閑存儲(chǔ)塊中。
[0055]結(jié)合第二方面的第五種可能的實(shí)現(xiàn)方式,在上述第二方面的第六種可能的實(shí)現(xiàn)方式中,所述設(shè)備還包括:
[0056]第二替換模塊,用于將所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng)替換為所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)。
[0057]第三方面,提供了一種修復(fù)出錯(cuò)數(shù)據(jù)的設(shè)備,所述設(shè)備包括存儲(chǔ)器和處理器,用于執(zhí)行所述的ー種修復(fù)出錯(cuò)數(shù)據(jù)的方法。
[0058]在本發(fā)明實(shí)施例中,對(duì)該存儲(chǔ)塊中某個(gè)頁(yè)的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,當(dāng)該頁(yè)中的數(shù)據(jù)第一次ECC不可糾時(shí),將該頁(yè)的備用空間中存儲(chǔ)的數(shù)據(jù)替換出錯(cuò)的數(shù)據(jù)。其中,在每個(gè)頁(yè)OOB空間中的備用空間中存儲(chǔ)出錯(cuò)概率大的數(shù)據(jù),不僅充分利用了 OOB空間,并且將該頁(yè)的備用空間中存儲(chǔ)的數(shù)據(jù)替換出錯(cuò)的數(shù)據(jù)可以大大降低發(fā)生不可糾故障的概率,以避免輕易的將該存儲(chǔ)塊標(biāo)記為壞塊。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0059]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0060]圖1是本發(fā)明實(shí)施例提供的一種修復(fù)出錯(cuò)數(shù)據(jù)的方法流程圖;
[0061]圖2是本發(fā)明實(shí)施例提供的另ー種修復(fù)出錯(cuò)數(shù)據(jù)的方法流程圖;
[0062]圖3是本發(fā)明實(shí)施例提供的另ー種修復(fù)出錯(cuò)數(shù)據(jù)的方法流程圖;
[0063]圖4是本發(fā)明實(shí)施例提供的另ー種修復(fù)出錯(cuò)數(shù)據(jù)的方法流程圖;
[0064]圖5是本發(fā)明實(shí)施例提供的一種修復(fù)出錯(cuò)數(shù)據(jù)的裝置結(jié)構(gòu)示意圖;
[0065]圖6是本發(fā)明實(shí)施例提供的另ー種修復(fù)出錯(cuò)數(shù)據(jù)的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0066]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)ー步地詳細(xì)描述。
[0067]本發(fā)明實(shí)施例提供了一種修復(fù)出錯(cuò)數(shù)據(jù)的方法,參見(jiàn)圖1,該方法包括:
[0068]步驟101:當(dāng)讀取固態(tài)硬盤(pán)包括的存儲(chǔ)塊中的數(shù)據(jù)時(shí),對(duì)該存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取該頁(yè)中出錯(cuò)的數(shù)據(jù);
[0069]步驟102:如果該頁(yè)中出錯(cuò)的數(shù)據(jù)的第一個(gè)數(shù)小于或等于預(yù)設(shè)第一門(mén)限,則對(duì)該頁(yè)中的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查和糾正ECC修復(fù);
[0070]步驟103:如果第一個(gè)數(shù)大于預(yù)設(shè)第一門(mén)限,則根據(jù)該頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和該存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將該頁(yè)中出錯(cuò)的數(shù)據(jù)替換為獲取的數(shù)據(jù),固定表項(xiàng)包括備用空間中存儲(chǔ)的各數(shù)據(jù)的存儲(chǔ)位置。
[0071]在本發(fā)明實(shí)施例中,對(duì)該存儲(chǔ)塊中某個(gè)頁(yè)的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,當(dāng)該頁(yè)中的數(shù)據(jù)第一次ECC不可糾時(shí),將該頁(yè)的備用空間中存儲(chǔ)的數(shù)據(jù)替換出錯(cuò)的數(shù)據(jù),其中,在每個(gè)頁(yè)OOB空間中的備用空間中存儲(chǔ)出錯(cuò)概率大的數(shù)據(jù),不僅充分利用了 OOB空間,并且將該頁(yè)的備用空間中存儲(chǔ)的數(shù)據(jù)替換出錯(cuò)的數(shù)據(jù)可以大大降低發(fā)生不可糾故障的概率,以避免輕易的將該存儲(chǔ)塊標(biāo)記為壞塊。
[0072]本發(fā)明實(shí)施例提供了一種修復(fù)出錯(cuò)數(shù)據(jù)的方法。其中,F(xiàn)lash芯片的內(nèi)部分為多個(gè)存儲(chǔ)塊,每個(gè)存儲(chǔ)塊由多個(gè)頁(yè)組成,每個(gè)頁(yè)中包括主數(shù)據(jù)空間和00B(0ut of Band Data,冗余空間)空間,OOB空間用于存儲(chǔ)ECC數(shù)據(jù),由于OOB空間中存儲(chǔ)的ECC數(shù)據(jù)比OOB的空間小,所以在存儲(chǔ)塊的每個(gè)頁(yè)中,除去主數(shù)據(jù)空間和真正存儲(chǔ)ECC數(shù)據(jù)的空間之外,每個(gè)頁(yè)中還存在一定的備用空間,該備用空間中可以存儲(chǔ)發(fā)生故障率最高的存儲(chǔ)位置的數(shù)據(jù)。其中,在本發(fā)明實(shí)施例中,存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng)中存儲(chǔ)該存儲(chǔ)塊的備用空間中的各數(shù)據(jù)的存儲(chǔ)位置,當(dāng)對(duì)該存儲(chǔ)塊中每個(gè)頁(yè)的備用空間中進(jìn)行數(shù)據(jù)備份時(shí),根據(jù)固定表項(xiàng)中存儲(chǔ)的存儲(chǔ)位置,從每個(gè)頁(yè)中分別獲取數(shù)據(jù)并存儲(chǔ)在其對(duì)應(yīng)的備用空間中。參見(jiàn)圖2,該方法包括:
[0073]步驟201:當(dāng)?shù)谝淮螌?duì)該存儲(chǔ)塊中寫(xiě)入數(shù)據(jù)時(shí),從該存儲(chǔ)塊的某個(gè)頁(yè)中隨機(jī)選擇第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,將選擇的存儲(chǔ)位置依次存儲(chǔ)在該存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng)中;
[0074]其中,存儲(chǔ)塊包括的每個(gè)頁(yè)的存儲(chǔ)空間相等,針對(duì)于整個(gè)存儲(chǔ)塊可以在該存儲(chǔ)塊中的某個(gè)頁(yè)中隨機(jī)選擇第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,即該存儲(chǔ)塊中每個(gè)頁(yè)對(duì)應(yīng)的備用空間中存儲(chǔ)的數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)位置相同。
[0075]例如,該存儲(chǔ)塊包括3個(gè)頁(yè),每個(gè)頁(yè)存儲(chǔ)IOObit的數(shù)據(jù),即每個(gè)頁(yè)中存儲(chǔ)數(shù)據(jù)的存儲(chǔ)位置為1-100,假如第一預(yù)設(shè)數(shù)值為4,且選擇的第一個(gè)存儲(chǔ)位置為第2bit,第二個(gè)存儲(chǔ)位置為第45bit,第三個(gè)存儲(chǔ)位置為第70bit以及第四個(gè)存儲(chǔ)位置為第90bit,將選擇的存儲(chǔ)位置2、45、70和90依次存儲(chǔ)在如下表I所示的固定表項(xiàng)中。
[0076]表1
【權(quán)利要求】
1.一種修復(fù)出錯(cuò)數(shù)據(jù)的方法,其特征在于,所述方法包括: 當(dāng)讀取固態(tài)硬盤(pán)包括的存儲(chǔ)塊中的數(shù)據(jù)時(shí),對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù); 如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第一個(gè)數(shù)小于或等于預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查和糾正ECC修復(fù); 如果所述第一個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則根據(jù)所述頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將所述頁(yè)中出錯(cuò)的數(shù)據(jù)替換為獲取的數(shù)據(jù),所述固定表項(xiàng)包括所述備用空間中存儲(chǔ)的各數(shù)據(jù)的存儲(chǔ)位置。
2.如權(quán)利要求1所述的方法,其特征在于,所述如果所述第一個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則根據(jù)所述頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和已存儲(chǔ)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將所述頁(yè)中出錯(cuò)數(shù)據(jù)替換為獲取的數(shù)據(jù)之后,還包括: 對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行第二次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù); 如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第二個(gè)數(shù)小于或等于所述預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行ECC修復(fù); 如果所述第二個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則將所述存儲(chǔ)塊標(biāo)記為壞塊,并根據(jù)所述頁(yè)的頁(yè)標(biāo)識(shí),從預(yù)設(shè)個(gè)數(shù)個(gè)存儲(chǔ)塊中獲取數(shù)據(jù); 根據(jù)獲取的數(shù)據(jù),判斷是否對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行獨(dú)立冗余磁盤(pán)陣列RAID修復(fù),如果是,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行RAID修復(fù)。
3.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù)之后,還包括: 獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置; 獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù); 選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
4.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù)之后,還包括: 獲取所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù); 根據(jù)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù),統(tǒng)計(jì)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù); 選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和所述頁(yè)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
5.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù)之后,還包括: 獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置; 獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù); 根據(jù)統(tǒng)計(jì)的出錯(cuò)個(gè)數(shù),從所述存儲(chǔ)塊中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置中選擇第二預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和其對(duì)應(yīng)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
6.如權(quán)利要求1-5任一所述的方法,其特征在于,所述如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第二個(gè)數(shù)小于或等于所述預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行ECC修復(fù)之后,還包括:獲取固態(tài)硬盤(pán)中的空閑存儲(chǔ)塊,根據(jù)所述空閑存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),將所述存儲(chǔ)塊中的數(shù)據(jù)搬移到所述空閑存儲(chǔ)塊中。
7.如權(quán)利要求6所述的方法,其特征在于,所述方法還包括: 將所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng)替換為所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)。
8.一種修復(fù)出錯(cuò)數(shù)據(jù)的設(shè)備,其特征在于,所述設(shè)備包括: 第一獲取模塊,用于當(dāng)讀取固態(tài)硬盤(pán)包括的存儲(chǔ)塊中的數(shù)據(jù)時(shí),對(duì)所述存儲(chǔ)塊的某個(gè)頁(yè)中的數(shù)據(jù)進(jìn)行第一次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù); 第一修復(fù)模塊,用于如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第一個(gè)數(shù)小于或等于預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行錯(cuò)誤檢查和糾正ECC修復(fù); 第一替換模塊,用于如果所述第一個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則根據(jù)所述頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置和所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),從備用空間中獲取數(shù)據(jù),并將所述頁(yè)中出錯(cuò)的數(shù)據(jù)替換為獲取的數(shù)據(jù),所述固定表項(xiàng)包括所述備用空間中存儲(chǔ)的各數(shù)據(jù)的存儲(chǔ)位置。
9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述設(shè)備還包括: 第二獲取模塊,用于對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行第二次錯(cuò)誤檢查,獲取所述頁(yè)中出錯(cuò)的數(shù)據(jù); 第二修復(fù)模塊,用于如果所述頁(yè)中出錯(cuò)的數(shù)據(jù)的第二個(gè)數(shù)小于或等于所述預(yù)設(shè)第一門(mén)限,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行ECC修復(fù); 標(biāo)記模塊,用于如果所述第二`個(gè)數(shù)大于所述預(yù)設(shè)第一門(mén)限,則將所述存儲(chǔ)塊標(biāo)記為壞塊,并根據(jù)所述頁(yè)的頁(yè)標(biāo)識(shí),從預(yù)設(shè)個(gè)數(shù)個(gè)存儲(chǔ)塊中獲取數(shù)據(jù); 第三修復(fù)模塊,用于根據(jù)獲取的數(shù)據(jù),判斷是否對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行獨(dú)立冗余磁盤(pán)陣列RAID修復(fù),如果是,則對(duì)所述頁(yè)中的數(shù)據(jù)進(jìn)行RAID修復(fù)。
10.如權(quán)利要求8所述的設(shè)備,其特征在于,所述設(shè)備還包括: 第三獲取模塊,用于獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置; 第一統(tǒng)計(jì)模塊,用于獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù); 第一存儲(chǔ)模塊,用于選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
11.如權(quán)利要求8所述的設(shè)備,其特征在于,所述設(shè)備還包括: 第四獲取模塊,用于獲取所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù); 第二統(tǒng)計(jì)模塊,用于根據(jù)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù),統(tǒng)計(jì)所述頁(yè)中的每個(gè)存儲(chǔ)位置已出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù); 第二存儲(chǔ)模塊,用于選擇出錯(cuò)個(gè)數(shù)最大的第一預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和所述頁(yè)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
12.如權(quán)利要求8所述的設(shè)備,其特征在于,所述設(shè)備還包括: 第五獲取模塊,用于獲取所述存儲(chǔ)塊中的每個(gè)頁(yè)中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置; 第三統(tǒng)計(jì)模塊,用于獲取存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù),并統(tǒng)計(jì)存儲(chǔ)位置相同的出錯(cuò)的數(shù)據(jù)的出錯(cuò)個(gè)數(shù); 第三存儲(chǔ)模塊,用于根據(jù)統(tǒng)計(jì)的出錯(cuò)個(gè)數(shù),從所述存儲(chǔ)塊中出錯(cuò)的數(shù)據(jù)的存儲(chǔ)位置中選擇第二預(yù)設(shè)數(shù)值個(gè)存儲(chǔ)位置,并將選擇的存儲(chǔ)位置和其對(duì)應(yīng)的頁(yè)標(biāo)識(shí)存儲(chǔ)在所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)中。
13.如權(quán)利要求8-12任一所述的設(shè)備,其特征在于,所述設(shè)備還包括: 搬移模塊,用于獲取固態(tài)硬盤(pán)中的空閑存儲(chǔ)塊,根據(jù)所述空閑存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng),將所述存儲(chǔ)塊中的數(shù)據(jù)搬移到所述空閑存儲(chǔ)塊中。
14.如權(quán)利要求13所述的設(shè)備,其特征在于,所述設(shè)備還包括: 第二替換模塊,用于將所述存儲(chǔ)塊對(duì)應(yīng)的固定表項(xiàng)替換為所述存儲(chǔ)塊對(duì)應(yīng)的臨時(shí)表項(xiàng)。
15.一種修復(fù)出錯(cuò)數(shù)據(jù)的設(shè)備,其特征在于,所述設(shè)備包括存儲(chǔ)器和處理器,用于執(zhí)行如權(quán)利要求1至7任一權(quán) 利要求所述的一種修復(fù)出錯(cuò)數(shù)據(jù)的方法。
【文檔編號(hào)】G06F11/10GK103455386SQ201310381426
【公開(kāi)日】2013年12月18日 申請(qǐng)日期:2013年8月28日 優(yōu)先權(quán)日:2013年8月28日
【發(fā)明者】鮑慧強(qiáng), 王大勇, 王榮生 申請(qǐng)人:華為技術(shù)有限公司