CN103455386A - 一种修复出错数据的方法和设备 - Google Patents
一种修复出错数据的方法和设备 Download PDFInfo
- Publication number
- CN103455386A CN103455386A CN2013103814261A CN201310381426A CN103455386A CN 103455386 A CN103455386 A CN 103455386A CN 2013103814261 A CN2013103814261 A CN 2013103814261A CN 201310381426 A CN201310381426 A CN 201310381426A CN 103455386 A CN103455386 A CN 103455386A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- memory location
- storage block
- makeing mistakes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种修复出错数据的方法和设备,属于计算机领域。该方法包括:当读取固态硬盘包括的存储块中的数据时,对该存储块的某个页中的数据进行第一次错误检查,获取该页中出错的数据;如果该页中出错的数据的第一个数小于或等于预设第一门限,则对该页中的数据进行错误检查和纠正ECC修复;如果第一个数大于预设第一门限,则根据该页中出错的数据的存储位置和该存储块对应的固定表项,从备用空间中获取数据,并将该页中出错的数据替换为获取的数据,固定表项包括备用空间中存储的各数据的存储位置。该设备包括:第一获取模块、第一修复模块和第一替换模块。本发明可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
Description
技术领域
本发明涉及计算机领域,特别涉及一种修复出错数据的方法和设备。
背景技术
SSD(Solid State Disk,固态硬盘)是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成。存储单元由Flash芯片构成,由于工艺和成本的因素,导致Flash芯片存在一定的故障率,当Flash芯片出现故障时会损坏存储的数据,因此,修复出错数据的方法受到了广泛地关注。
目前,修复出错数据的方法,具体为:当读取SSD的Flash芯片包括的存储块中的数据时,对于该存储块中的某一个页,检查该页中出错的数据,如果出错的数据个数没有超过预设第一门限,则对该页中出错的数据进行ECC(ErrorCorrecting Code,错误检查和纠正)修复,并返回正确的数据;如果出错的数据个数超过预设第一门限,则将该存储块标记为坏块,后续不再使用该存储块,同时从预设个数个存储块中选择与该页的页标识相同的页,根据选择的页中的数据,判断该页的数据是否可以进行RAID(Redundant Arrays of InexpensiveDisks,独立冗余磁盘阵列)修复,如果是,则对该页进行RAID修复,并返回正确的数据,否则,数据读取错误。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
当某个页中出错的数据个数超过预设第一门限时,只能对该存储块进行RAID修复,而RAID修复需要根据预设个数个存储块中的数据进行修复,修复数据的时间较长,效率过低;并且将整个存储块被标记为坏块后,SSD的容量减小,后续只能使用没有被标记为坏块的存储块,使没有被标记为坏块的存储块使用频繁,从而降低SSD的寿命和性能。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种修复出错数据的方法和设备。所述技术方案如下:
第一方面,提供了一种修复出错数据的方法,所述方法包括:
当读取固态硬盘包括的存储块中的数据时,对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据;
如果所述页中出错的数据的第一个数小于或等于预设第一门限,则对所述页中的数据进行错误检查和纠正ECC修复;
如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和所述存储块对应的固定表项,从备用空间中获取数据,并将所述页中出错的数据替换为获取的数据,所述固定表项包括所述备用空间中存储的各数据的存储位置。
结合第一方面,在上述第一方面的第一种可能的实现方式中,所述如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和已存储的固定表项,从备用空间中获取数据,并将所述页中出错数据替换为获取的数据之后,还包括:
对所述页中的数据进行第二次错误检查,获取所述页中出错的数据;
如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复;
如果所述第二个数大于所述预设第一门限,则将所述存储块标记为坏块,并根据所述页的页标识,从预设个数个存储块中获取数据;
根据获取的数据,判断是否对所述页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对所述页中的数据进行RAID修复。
结合第一方面,在上述第一方面的第二种可能的实现方式中,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述存储块中的每个页中出错的数据的存储位置;
获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在所述存储块对应的临时表项中。
结合第一方面,在上述第一方面的第三种可能的实现方式中,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述页中的每个存储位置已出错的数据;
根据所述页中的每个存储位置已出错的数据,统计所述页中的每个存储位置已出错的数据的出错个数;
选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和所述页的页标识存储在所述存储块对应的临时表项中。
结合第一方面,在上述第一方面的第四种可能的实现方式中,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述存储块中的每个页中出错的数据的存储位置;
获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
根据统计的出错个数,从所述存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在所述存储块对应的临时表项中。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中的任一种可能的实现方式,在上述第一方面的第五种可能的实现方式中,所述如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复之后,还包括:
获取固态硬盘中的空闲存储块,根据所述空闲存储块对应的固定表项,将所述存储块中的数据搬移到所述空闲存储块中。
结合第一方面的第五种可能的实现方式,在上述第一方面的第六种可能的实现方式中,所述方法还包括:
将所述存储块对应的固定表项替换为所述存储块对应的临时表项。
另一方面,提供了一种修复出错数据的装置,所述装置包括:
第一获取模块,用于当读取固态硬盘包括的存储块中的数据时,对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据;
第一修复模块,用于如果所述页中出错的数据的第一个数小于或等于预设第一门限,则对所述页中的数据进行错误检查和纠正ECC修复;
第一替换模块,用于如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和所述存储块对应的固定表项,从备用空间中获取数据,并将所述页中出错的数据替换为获取的数据,所述固定表项包括所述备用空间中存储的各数据的存储位置。
结合第二方面,在上述第二方面的第一种可能的实现方式中,所述设备还包括:
第二获取模块,用于对所述页中的数据进行第二次错误检查,获取所述页中出错的数据;
第二修复模块,用于如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复;
标记模块,用于如果所述第二个数大于所述预设第一门限,则将所述存储块标记为坏块,并根据所述页的页标识,从预设个数个存储块中获取数据;
第三修复模块,用于根据获取的数据,判断是否对所述页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对所述页中的数据进行RAID修复。
结合第二方面,在上述第二方面的第二种可能的实现方式中,所述设备还包括:
第三获取模块,用于获取所述存储块中的每个页中出错的数据的存储位置;
第一统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
第一存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在所述存储块对应的临时表项中。
结合第二方面,在上述第二方面的第三种可能的实现方式中,所述设备还包括:
第四获取模块,用于获取所述页中的每个存储位置已出错的数据;
第二统计模块,用于根据所述页中的每个存储位置已出错的数据,统计所述页中的每个存储位置已出错的数据的出错个数;
第二存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和所述页的页标识存储在所述存储块对应的临时表项中。
结合第二方面,在上述第二方面的第四种可能的实现方式中,所述设备还包括:
第五获取模块,用于获取所述存储块中的每个页中出错的数据的存储位置;
第三统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
第三存储模块,用于根据统计的出错个数,从所述存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在所述存储块对应的临时表项中。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中的任一种可能的实现方式,在上述第二方面的第五种可能的实现方式中,所述设备还包括:
搬移模块,用于获取固态硬盘中的空闲存储块,根据所述空闲存储块对应的固定表项,将所述存储块中的数据搬移到所述空闲存储块中。
结合第二方面的第五种可能的实现方式,在上述第二方面的第六种可能的实现方式中,所述设备还包括:
第二替换模块,用于将所述存储块对应的固定表项替换为所述存储块对应的临时表项。
第三方面,提供了一种修复出错数据的设备,所述设备包括存储器和处理器,用于执行所述的一种修复出错数据的方法。
在本发明实施例中,对该存储块中某个页的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,将该页的备用空间中存储的数据替换出错的数据。其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了OOB空间,并且将该页的备用空间中存储的数据替换出错的数据可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种修复出错数据的方法流程图;
图2是本发明实施例提供的另一种修复出错数据的方法流程图;
图3是本发明实施例提供的另一种修复出错数据的方法流程图;
图4是本发明实施例提供的另一种修复出错数据的方法流程图;
图5是本发明实施例提供的一种修复出错数据的装置结构示意图;
图6是本发明实施例提供的另一种修复出错数据的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种修复出错数据的方法,参见图1,该方法包括:
步骤101:当读取固态硬盘包括的存储块中的数据时,对该存储块的某个页中的数据进行第一次错误检查,获取该页中出错的数据;
步骤102:如果该页中出错的数据的第一个数小于或等于预设第一门限,则对该页中的数据进行错误检查和纠正ECC修复;
步骤103:如果第一个数大于预设第一门限,则根据该页中出错的数据的存储位置和该存储块对应的固定表项,从备用空间中获取数据,并将该页中出错的数据替换为获取的数据,固定表项包括备用空间中存储的各数据的存储位置。
在本发明实施例中,对该存储块中某个页的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,将该页的备用空间中存储的数据替换出错的数据,其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了OOB空间,并且将该页的备用空间中存储的数据替换出错的数据可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
本发明实施例提供了一种修复出错数据的方法。其中,Flash芯片的内部分为多个存储块,每个存储块由多个页组成,每个页中包括主数据空间和OOB(Outof Band Data,冗余空间)空间,OOB空间用于存储ECC数据,由于OOB空间中存储的ECC数据比OOB的空间小,所以在存储块的每个页中,除去主数据空间和真正存储ECC数据的空间之外,每个页中还存在一定的备用空间,该备用空间中可以存储发生故障率最高的存储位置的数据。其中,在本发明实施例中,存储块对应的固定表项中存储该存储块的备用空间中的各数据的存储位置,当对该存储块中每个页的备用空间中进行数据备份时,根据固定表项中存储的存储位置,从每个页中分别获取数据并存储在其对应的备用空间中。参见图2,该方法包括:
步骤201:当第一次对该存储块中写入数据时,从该存储块的某个页中随机选择第一预设数值个存储位置,将选择的存储位置依次存储在该存储块对应的固定表项中;
其中,存储块包括的每个页的存储空间相等,针对于整个存储块可以在该存储块中的某个页中随机选择第一预设数值个存储位置,即该存储块中每个页对应的备用空间中存储的数据对应的存储位置相同。
例如,该存储块包括3个页,每个页存储100bit的数据,即每个页中存储数据的存储位置为1-100,假如第一预设数值为4,且选择的第一个存储位置为第2bit,第二个存储位置为第45bit,第三个存储位置为第70bit以及第四个存储位置为第90bit,将选择的存储位置2、45、70和90依次存储在如下表1所示的固定表项中。
表1
存储位置 | 2、45、70、90 |
步骤202:当写入每个页的数据后,根据该存储块对应的固定表项中的存储位置,从每个页的数据中获取对应的数据,将获取的数据写入每个页的备用空间中;
具体地,当写入每个页的数据后,根据该存储块对应固定表项中存储的存储位置,从每个页的数据中获取对应的数据,并根据该存储块对应固定表项中存储的存储位置的顺序,将获取的数据依次写入每个页的备用空间中。
其中,每个页对应的备用空间的大小相等,且等于第一预设数值,并且固定表项中存储的存储位置和备用空间中存储的数据是一一对应关系。
例如,从第一个页的数据中获取存储位置为第2bit的数据为0,存储位置为第45bit的数据为1,存储位置为第70bit的数据为0以及存储位置为第90bit的数据为0,则将获取的4个数据0100存储在第一个页的备用空间中;从第二个页的数据中获取存储位置为第2bit的数据为0,存储位置为第45bit的数据为0,存储位置为第70bit的数据为0以及存储位置为第90bit的数据为1,则将获取的4个数据0001存储在第二个页的备用空间中;从第三个页的数据中获取存储位置为第2bit的数据为1,存储位置为第45bit的数据为1,存储位置为第70bit的数据为0以及存储位置为第90bit的数据为0,则将获取的4个数据1100存储在第三个页的备用空间中。
其中,向该存储块中写入数据后,当用户下次需要使用该存储块中的数据时,可以从该存储块中读取数据。
步骤203:当读取该存储块中的数据时,对该存储块中的每个页中的数据分别进行第一次错误检查,获取每个页中出错的数据;
具体地,读取该存储块中的数据,对该存储块中的每个页中的主数据空间中存储的数据进行第一次错误检查,获取每个页中出错的数据。
步骤204:获取该存储块中的每个页中出错的数据的存储位置,并统计获取的存储位置相同的出错的数据的出错个数;
具体地,获取该存储块中的每个页中存储的数据的存储位置,获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数。
例如,第一个页中出错的数据对应的存储位置为2、30、65、70,第二个页中出错的数据对应的存储位置为2、34、45、78,第三个页中出错的数据对应的存储位置为2、65、70、90,第四个页中出错的数据对应的存储位置为10、45、65、70,则统计该存储块中存储位置为2的出错的数据的出错个数为3,存储位置为10的出错的数据的出错个数为1,存储位置为30的出错的数据的出错个数为1,存储位置为34的出错的数据的出错个数为1,存储位置为45的出错的数据的出错个数为2,存储位置为65的出错的数据的出错个数为3,存储位置为70的出错的数据的出错个数为3,存储位置为78的出错的数据的出错个数为1,存储位置为90的出错的数据的出错个数为1。
步骤205:选择出错个数最大的第一预设数值个位置,并将选择的存储位置存储在该存储块对应的临时表项中;
例如,选择出错个数最大的4个存储位置分别为2、45、65和70,将选择的存储位置2、45、65和70依次存储在如下表2所示的临时表项中。
表2
存储位置 | 2、45、65、70 |
步骤206:对于该存储块中的某个页,统计该页出错的数据的第一个数,如果该第一个数小于或等于预设第一门限,则对该页中的数据进行ECC修复,结束操作;
具体地,对于该存储块中的某个页,统计该页出错的数据的第一个数,将该第一个数和预设第一门限进行比较,如果该第一个数小于或等于预设第一门限,则确定该页的数据ECC可纠,根据该页的OOB空间中存储的ECC数据,对该页中的数据进行ECC修复,结束操作。
其中,对该存储块中写入数据时,对该存储块的每个页中的主数据空间中存储的数据进行ECC校验,得到该存储块的每个页对应的ECC数据,将每个页对应的ECC数据存储在其对应的OOB空间中。
步骤207:如果该第一个数大于预设第一门限,则根据该页的出错的数据的存储位置和该存储块对应的固定表项,从该页的备用空间中获取数据,并将该页中出错的数据替换为获取的数据;
具体地,如果该第一个数大于预设第一门限,则确定该页的数据ECC不可纠,根据该页的出错的数据的存储位置,获取出错的数据的存储位置在固定表项中的位置顺序,根据出错的数据的存储位置在固定表项中的位置顺序,从备用空间中获取对应的数据,并将该页中出错的数据替换为获取的数据。
其中,在SSD刚开始使用时,存储块的每个页中的数据发生ECC不可纠故障的概率比较小,随着时间的增加,每个页中的数据发生ECC不可纠故障的概率也会增大,由于开启备用空间功能后,在对该存储块的每个页中写数据时需要去查找该存储块对应的固定表项以进行备用空间数据的备份,会引入一定的延时,所以在SSD开始使用时可关闭备用空间功能,只有当对某个页进行第一次ECC纠错后监测到出错的数据的第一个数大于第一预设阈值时,才通知系统开启备用空间功能。
其中,第一预设阈值小于预设第一门限,如此,当某个页出错的数据的第一个数大于第一预设阈值且小于或等于预设第一门限,则开启备用空间功能,当下次读取该存储块中的数据时,如果该存储块中出错的数据的第一个数大于第二预设阈值且小于或等于预设第一门限,则将该存储块的数据进行ECC修复后搬移到某个空闲的存储块中,并根据该空闲存储块对应的固定表项对备用空间中进行数据备份。
其中,当开启备用空间功能后,如果在该Flash中的某个空闲存储块中写入数据时,可以根据该空闲存储块对应的固定表项,直接在该存储块的备用空间中对高故障率的数据进行备份。
其中,第一预设阈值小于第二预设阈值。
步骤208:对该页的数据进行第二次错误检查,获取该页出错的数据;
具体地,对该页中的主数据空间中存储的数据进行第二次错误检查,获取该页的出错的数据。
步骤209:统计该页出错的数据的第二个数,如果该第二个数小于或等于预设第一门限,则对该页中的数据进行ECC修复;
具体地,统计该页出错的数据的第二个数,将该第二个数和预设第一门限进行比较,如果该第二个数小于或等于预设第一门限,则确定该页的数据ECC可纠,根据该页的OOB空间中存储的ECC数据,对该页中的数据进行ECC修复。
步骤210:获取固态硬盘中的空闲存储块,根据该空闲存储块对应的固定表项,将该存储块中的数据搬移到获取的空闲存储块中,结束操作;
具体地,获取固态硬盘中的空闲存储块,将该存储块中的主数据空间中存储的数据和OOB空间中存储的ECC数据搬移到获取的空闲存储块中,并根据该空闲存储块对应的固定表项中的存储位置,从该空闲存储块的每个页搬移的数据中获取该存储位置对应的数据,并存储在该空闲存储块中每个页的备用空间中,结束操作。
进一步地,将该存储块对应的固定表项替换为该存储块对应的临时表项,当下次在该存储块中写入数据时,根据替换后的固定表项中存储的存储位置,对该存储块中每个页的备用空间中进行数据备份。
其中,当某个页的数据发生第一次ECC不可纠时,而通过利用备用空间中存储的数据替换出错的数据后,该页的数据发生第二次ECC可纠并对该页的数据进行ECC修复后,应通知系统,在空闲时将该存储块修复后的数据搬移到其他空闲存储块中,以防止该存储块中更多的数据出错,从而导致第二次ECC也不可纠。同时通过存储块中的数据搬移后,搬移后的数据出现第一次ECC不可纠的概率特别小,所以读取搬移后的数据只需一次ECC便可,可大大提高效率。
步骤211:如果该第二个数大于预设第一门限,则将该存储块标记为坏块,并根据该页的页标识,从预设个数个存储块中获取数据;
具体地,如果该第二个数大于预设第一门限,则将该存储块标记为坏块,并根据该页的页标识,从预设个数个存储块中获取与该页的页标识相同的页,并从获取的页中读取数据。
步骤212:根据获取的数据,判断是否对该页中的数据进行RAID修复,如果是,则对该页的数据进行RAID修复,结束操作。
具体地,对获取的数据进行错误检查以及对RAID冗余存储块中与该页的页标识相同的页中的数据进行错误检查,如果RAID冗余存储块中该页标识对应的页中的数据ECC可纠,则统计预设个数个存储块中该页标识对应的页中的数据ECC不可纠的个数,如果ECC不可纠的个数小于或等于预设第二门限,则确定该页中的数据可以进行RAID修复,根据RAID冗余存储块中该页的数据对该存储块中该页的数据进行RAID修复,结束操作。
其中,事先对预设个数个存储块中页标识相同的页中的数据进行RAID校验,并将校验的结果存储在该预设个数个存储块对应的RAID冗余存储块中的该页标识对应的页中。
进一步地,如果ECC不可纠的个数大于预设第二门限,则确定该页中的数据不可以进行RAID修复,该页中的数据读取错误,结束操作。
例如,该存储块中的第二个页中出错的数据的第二个数为20,预设第一门限为5,由于第二个数大于预设第一门限,则将该存储块标记为坏块,假如预设个数16,预设第二门限为3,则获取该16个存储块中第二个页的数据,并对获取的每个存储块的第二个页的数据进行错误检查,以及对RAID冗余存储块中的第二页的数据进行错误检查,如果RAID冗余存储块中的第二个页的数据ECC可纠,且该16个存储块中第二个页的数据ECC不可纠的个数为2小于预设第二门限3,则确定该页的数据可以进行RAID修复,根据RAID冗余存储块中第二个页的数据对该存储块中第二个页的数据进行RAID修复,并返回正确的数据。
在本发明实施例中,当对该存储块写入数据时,根据该存储块对应的固定表项,从该存储块的每个页中获取对应的数据并写入每个页的备用空间中。当读取该存储块中的数据时,对该存储块中某个页的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,用该页的备用空间中存储的数据替换出错的数据,并对该页中的数据进行第二次错误检查,当该页中的数据再次ECC不可纠时执行RAID修复。其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了OOB空间,并且根据每个页的备用空间中存储的数据替换出错的数据并进行第二次错误检查,可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
本发明实施例提供了一种修复出错数据的方法。其中,Flash芯片的内部分为多个存储块,每个存储块由多个页组成,每个页中包括主数据空间和OOB空间,OOB空间用于存储ECC数据,由于OOB空间中存储的ECC数据比OOB的空间小,所以在存储块的每个页中,除去主数据空间和真正存储ECC数据的空间之外,每个页中还存在一定的备用空间,该备用空间中可以存储发生故障率最高的存储位置的数据。其中,在本发明实施例中,存储块对应的固定表项中存储存储位置与页标识的对应关系,每个页标识对应的存储位置的个数与每个页的备用空间的大小相等,且页标识对应的存储位置为该页中已出错的数据出错个数最多的存储位置,当对该存储块中每个页的备用空间中进行数据备份时,根据该页的页标识,从固定表项中获取对应的存储位置,根据获取的存储位置从该页的数据中获取对应的数据,并存储在该页的备用空间中。参见图3,该方法包括:
步骤301:当第一次对该存储块中写入数据时,从该存储块中的每个页中随机选择第一预设数值个存储位置,将选择的存储位置和每个页的页标识存储在该存储块对应的固定表项中;
其中,固定表项中存储页标识与存储位置的对应关系。
其中,固定表项中每个页标识对应的存储位置可以是相同的,也可以是不同的。
例如,该存储块包括3个页,每个页存储100bit的数据,即每个页中存储数据的存储位置为1-100,假如第一预设数值为4,从第一个页中选择的第一个存储位置为第2bit,第二个存储位置为第45bit,第三个存储位置为第70bit以及第四个存储位置为第90bit,从第二个页中选择的存储位置的第一个存储位置为第2bit,第二个存储位置为第50bit,第三个存储位置为第56bit以及第四个存储位置为第80bit,从第三个页中选择的第一个存储位置为第5bit,第二个存储位置为第45bit,第三个存储位置为第80bit以及第四个存储位置为第90bit,将第一个页中的存储位置2、45、70和90以及第一个页的页标识Name1存储在如下表1所示的固定表项中,将第一个页中的存储位置2、50、56和80以及第二个页的页标识Name2存储在如下表1所示的固定表项中,以及将第一个页中的存储位置5、45、80和90以及第三个页的页标识Name3存储在如下表1所示的固定表项中。
表1
页标识 | 存储位置 |
Name1 | 2、45、70、90 |
Name2 | 2、50、56、80 |
Name3 | 5、45、80、90 |
步骤302:当写入每个页的数据后,根据该存储块对应的固定表项中的存储位置,从每个页的数据中获取对应的数据,将获取的数据写入每个页的备用空间中;
具体地,当写入每个页的数据后,根据该存储块对应的固定表项中存储的存储位置,从每个页的数据中获取对应的数据,并根据该存储块对应的固定表项中存储的存储位置的顺序,将获取的数据依次写入每个页的备用空间中。
其中,每个页对应的备用空间的大小相等,且等于第一预设数值,并且固定表项中存储的存储位置和备用空间中存储的数据是一一对应关系。
例如,从第一个页的数据中获取存储位置为第2bit的数据为0,存储位置为第45bit的数据为1,存储位置为第70bit的数据为0以及存储位置为第90bit的数据为0,则将获取的4个数据0100存储在第一个页的备用空间中;从第二个页的数据中获取存储位置为第2bit的数据为0,存储位置为第50bit的数据为0,存储位置为第56bit的数据为0以及存储位置为第80bit的数据为1,则将获取的4个数据0001存储在第二个页的备用空间中;从第三个页的数据中获取存储位置为第5bit的数据为1,存储位置为第45bit的数据为1,存储位置为第80bit的数据为0以及存储位置为第90bit的数据为0,则将获取的4个数据1100存储在第三个页的备用空间中。
其中,向该存储块中写入数据后,当用户下次需要使用该存储块中的数据时,可以从该存储块中读取数据。
步骤303:当读取该存储块中的数据时,对该存储块中的每个页中的数据分别进行第一次错误检查,获取当前时刻该存储块中每个页出错的数据;
具体地,读取该存储块中的数据,对该存储块中的每个页中的主数据空间中存储的数据分别进行第一次错误检查,获取当前时刻该存储块中每个页出错的数据。
步骤304:对于该存储块中的某一个页,获取该页中的每个存储位置已出错的数据;
其中,可以根据上述步骤304获取该存储块中的其他页中的每个存储位置已出错的数据。
步骤305:根据该页中的每个存储位置已出错的数据,统计该页中的每个存储位置已出错的数据的出错个数;
其中,可以根据上述步骤305统计该存储块中的其他页中的每个存储位置已出错的数据的出错个数。
例如,第一个页中的第2bit的存储位置已出错的数据为0、1、1和0,第30bit的存储位置已出错的数据为1、1、0、1和0,第45bit的存储位置已出错的数据为1、1和0,第70bit的存储位置已出错的数据为1、1、0、1和0,第75bit的存储位置已出错的数据为1、0、1和0,第90bit的存储位置已出错的数据为0、1和0,其他存储位置没有已出错的数据,则第一个页中第2bit的存储位置已出错的数据的出错个数为4,第30bit的存储位置已出错的数据的出错个数为5,第45bit的存储位置已出错的数据的出错个数为3,第70bit的存储位置已出错的数据的出错个数为5,第75bit的存储位置已出错的数据的出错个数为4,第90bit的存储位置已出错的数据的出错个数为3;
第一个页中的第2bit的存储位置已出错的数据为1、1、1和0,第45bit的存储位置已出错的数据为1、1、0、1和0,第50bit的存储位置已出错的数据为1、1和0,第56bit的存储位置已出错的数据为1、1、0、1和0,第75bit的存储位置已出错的数据为1、0、1和0,第80bit的存储位置已出错的数据为0、1和0,其他存储位置没有已出错的数据,则第一个页中第2bit的存储位置已出错的数据的出错个数为4,第45bit的存储位置已出错的数据的出错个数为5,第50bit的存储位置已出错的数据的出错个数为3,第56bit的存储位置已出错的数据的出错个数为5,第75bit的存储位置已出错的数据的出错个数为4,第80bit的存储位置已出错的数据的出错个数为3;
第一个页中的第5bit的存储位置已出错的数据为0、1、1和0,第30bit的存储位置已出错的数据为1、1、0、1和0,第45bit的存储位置已出错的数据为1、1和0,第70bit的存储位置已出错的数据为1、1、0、1和0,第85bit的存储位置已出错的数据为1、0、1和0,第90bit的存储位置已出错的数据为0、1和0,其他存储位置没有已出错的数据,则第一个页中第5bit的存储位置已出错的数据的出错个数为4,第30bit的存储位置已出错的数据的出错个数为5,第45bit的存储位置已出错的数据的出错个数为3,第70bit的存储位置已出错的数据的出错个数为5,第85bit的存储位置已出错的数据的出错个数为4,第90bit的存储位置已出错的数据的出错个数为3。
步骤306:选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和该页的标识存储在该存储块对应的临时表项中;
其中,临时表项中存储页标识与位置编号的对应关系。
例如,从第一个页中选择出错个数最大的4个存储位置分别为2、30、70和75,从第二个页中选择出错个数最大的4个存储位置分别为2、45、56和75,从第三个页中选择出错个数最大的4个存储位置分别为5、30、70和85,将第一个页的页标识Name1和选择的存储位置2、30、70和75存储在如下表2所示的临时表项中,将第二个页的页标识Name2和选择的存储位置2、45、56和75存储在如下表2所示的临时表项中,以及将第三个页的页标识Name3和选择的存储位置5、30、70和85存储在如下表2所示的临时表项中。
表2
页标识 | 存储位置 |
Name1 | 2、30、70、75 |
Name2 | 2、45、56、75 |
Name3 | 5、30、70、85 |
步骤307:统计当前时刻该页出错的数据的第一个数,如果该第一个数小于或等于预设第一门限,则对该页中的数据进行ECC修复,结束操作;
具体地,统计该中每个页出错的数据的第一个数,将该第一个数和预设第一门限进行比较,如果该第一个数小于或等于预设第一门限,则确定该页的数据ECC可纠,根据该页的OOB空间中存储的ECC数据,对该页中的数据进行ECC修复,结束操作。
其中,对该存储块中写入数据时,对该存储块的每个页中的主数据空间中存储的数据进行ECC校验,得到该存储块的每个页对应的ECC数据,将每个页对应的ECC数据存储在其对应的OOB空间中。
步骤308:如果该第一个数大于预设第一门限,则根据该页出错的数据的存储位置和该存储块对应的固定表项,从该页的备用空间中获取数据,并将该页中出错的数据替换为获取的数据;
具体地,如果该第一个数大于预设第一门限,则确定该页的数据ECC不可纠,根据该页的出错的数据的存储位置和该页的页标识,获取出错的数据的存储位置在固定表项中的位置顺序,根据出错的数据的存储位置在固定表项中的位置顺序,从该页的备用空间中获取对应的数据,并将该页中出错的数据替换为获取的数据。
其中,根据该页的出错的数据的存储位置和该页的页标识,获取出错的数据的存储位置在固定表项中的位置顺序的具体操作为:根据该页的页标识,从该存储块对应的固定表项中获取对应的存储位置,根据该页的出错的数据的存储位置,从获取的存储位置中确定该页的出错的数据的存储位置在固定表项中的位置顺序。
其中,在SSD刚开始使用时,存储块的每个页中的数据发生ECC不可纠故障的概率比较小,随着时间的增加,每个页中的数据发生ECC不可纠故障的概率也会增大,由于开启备用空间功能后,在对该存储块的每个页中写数据时需要去查找该存储块对应的固定表项以进行备用空间数据的备份,会引入一定的延时,所以在SSD开始使用时可关闭备用空间功能,只有当对某个页进行第一次ECC纠错后监测到出错的数据的第一个数大于第一预设阈值时,才通知系统开启备用空间功能。
其中,第一预设阈值小于预设第一门限,如此,当某个页出错的数据的第一个数大于第一预设阈值且小于或等于预设第一门限,则开启备用空间功能,当下次读取该存储块中的数据时,如果该存储块中出错的数据的第一个数大于第二预设阈值且小于或等于预设第一门限,则将该存储块的数据进行ECC修复后搬移到某个空闲的存储块中,并根据该空闲存储块对应的固定表项对备用空间中进行数据备份。
其中,当开启备用空间功能后,如果在该Flash中的某个空闲存储块中写入数据时,可以根据该空闲存储块对应的固定表项,直接在该存储块的备用空间中对高故障率的数据进行备份。
其中,第一预设阈值小于第二预设阈值。
步骤309:对该页的数据进行第二次错误检查,获取该页出错的数据;
具体地,对该页中的主数据空间中存储的数据和ECC数据进行第二次错误检查,获取该页的出错的数据。
步骤310:统计该页出错的数据的第二个数,如果该第二个数小于或等于预设第一门限,则对该页中的数据进行ECC修复;
具体地,统计该页出错的数据的第二个数,将该第二个数和预设第一门限进行比较,如果该第二个数小于或等于预设第一门限,则确定该页的数据ECC可纠,根据该页的OOB空间中存储的ECC数据,对该页中的数据进行ECC修复。
步骤311:获取固态硬盘中的空闲存储块,根据该空闲存储块对应的固定表项,将该存储块中的数据搬移到获取的空闲存储块中,结束操作;
具体地,获取固态硬盘中的空闲存储块,将该存储块中的主数据空间中存储的数据和OOB空间中存储的ECC数据搬移到获取的空闲存储块中,并根据该空闲存储块对应的固定表项中的存储位置,从空闲该存储块的每个页搬移的数据中获取该存储位置对应的数据,并存储在该空闲存储块中每个页的备用空间中,结束操作。
进一步地,将该存储块对应的固定表项替换为该存储块对应的临时表项,当下次在该存储块中写入数据时,根据替换后的固定表项中存储的存储位置,对该存储块中每个页的备用空间中进行数据备份。
其中,当某个页的数据发生第一次ECC不可纠时,而通过利用备用空间中存储的数据替换出错的数据后,该页的数据发生第二次ECC可纠并对该页的数据进行ECC修复后,应通知系统,在空闲时将该存储块修复后的数据搬移到其他空闲存储块中,以防止该存储块中更多的数据出错,从而导致第二次ECC也不可纠。同时通过存储块中的数据搬移后,搬移后的数据出现第一次ECC不可纠的概率特别小,所以读取搬移后的数据只需一次ECC便可,可大大提高效率。
步骤312:如果该第二个数大于预设第一门限,则将该存储块标记为坏块,并根据该页的页标识,从预设个数个存储块中获取数据;
具体地,如果该第二个数大于预设第一门限,则将该存储块标记为坏块,并根据该页的页标识,从预设个数个存储块中获取与该页的页标识相同的页,并从获取的页中读取数据。
步骤313:根据获取数据,判断是否对该页中的数据进行RAID修复,如果是,则对该页的数据进行RAID修复,结束操作。
具体地,对获取的数据进行错误检查以及对RAID冗余存储块中与该页的页标识相同的页中的数据进行错误检查,如果RAID冗余存储块中该页标识对应的页中的数据ECC可纠,则统计预设个数个存储块中该页标识对应的页中的数据ECC不可纠的个数,如果ECC不可纠的个数小于或等于预设第二门限,则确定该页中的数据可以进行RAID修复,根据RAID冗余存储块中该页的数据对该存储块中该页的数据进行RAID修复,结束操作。
其中,事先对预设个数个存储块中页标识相同的页中的数据进行RAID校验,并将校验的结果存储在该预设个数个存储块对应的RAID冗余存储块中的该页标识对应的页中。
进一步地,如果ECC不可纠的个数大于预设第二门限,则确定该页中的数据不可以进行RAID修复,该页中的数据读取错误,结束操作。
例如,该存储块中的第二个页中出错的数据的第二个数为20,预设第一门限为5,由于第二个数大于预设第一门限,则将该存储块标记为坏块,假如预设个数16,预设第二门限为3,则获取该16个存储块中第二个页的数据,并对获取的每个存储块的第二个页的数据进行错误检查,以及对RAID冗余存储块中的第二页的数据进行错误检查,如果RAID冗余存储块中的第二个页的数据ECC可纠,且该16个存储块中第二个页的数据ECC不可纠的个数为2小于预设第二门限3,则确定该页的数据可以进行RAID修复,根据RAID冗余存储块中第二个页的数据对该存储块中第二个页的数据进行RAID修复,并返回正确的数据。
在本发明实施例中,该存储块对应的固定表项中存储每个页中的每个位置已存储的数据的出错个数最大的第一预设数值个存储位置,当读取该存储块中的数据时,对该存储块中某个页中的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,用该页的备用空间中存储的数据替换出错的数据,并对该页中的数据进行第二次错误检查,当该页中的数据再次ECC不可纠时执行RAID修复。其中,固定表项中存储的存储位置是根据每个存储位置对应的数据历史出错的个数获取的,提高了备用空间中存储的数据的有效性,并且在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了OOB空间,而且根据每个页的备用空间中存储的数据替换出错的数据并进行第二次错误检查,可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
本发明实施例提供了一种修复出错数据的方法。其中,Flash芯片的内部分为多个存储块,每个存储块由多个页组成,每个页中包括主数据空间和OOB空间,OOB空间用于存储ECC数据,由于OOB空间中存储的ECC数据比OOB的空间小,所以在存储块的每个页中,除去主数据空间和真正存储ECC数据的空间之外,每个页中还存在一定的备用空间,该备用空间中可以存储发生故障率最高的存储位置的数据。其中,在本发明实施例中,存储块对应的固定表项中存储存储位置与页标识的对应关系,每个页标识对应的存储位置的个数不一定相等,且该固定表项中存储的所有存储位置的个数等于该存储块的所有备用空间的大小,当对该存储块中每个页的备用空间中进行数据备份时,根据该页的页标识,从固定表项中获取对应的存储位置,根据获取的存储位置从该页的数据中获取对应的数据,并存储在该存储块的备用空间中。参见图4,该方法包括:
步骤401:当第一次对该存储块中写入数据时,从该存储块中随机选择第二预设数值个存储位置,将选择的存储位置和其对应的页标识存储在该存储块对应的固定表项中;
其中,固定表项中存储页标识与位置编号的对应关系。
其中,对于一个存储块,该存储块中的每个页中的不一定都会出现出错的数据,当某个页中没有出现出错的数据时,该页对应的备用空间可能会浪费,所以本发明实施例是从该存储块中选择第二预设数值个存储位置,不会导致某个页的备用空间的浪费。
例如,该存储块包括3个页,每个页存储100bit的数据,即每个页中存储数据的存储位置为1-100,假如第一预设数值为4,当第一次对该存储块中写入数据时,从该存储块的第一个页中随机选择2个存储位置,分别为第2bit和第45bit,从该存储块的第二个页中随机选择6个存储位置,分别为第2bit、第5bit、第34bit、第56bit、第80bit和第90bit,从该存储块的第三个页中随机选择4个存储位置,分别为第2bit、第34bit、第60bit和第90bit,将第一个页的页标识Name1和从第一个页中选择的位置2和45存储在如下表1所示的固定表项中,将第二个页的页标识Name2和从第二个页中选择的位置2、5、34、56、80和90存储在如下表1所示的固定表项中,以及将第三个页的页标识Name3和从第三个页中选择的位置2、34、60和90存储在如下表1所示的固定表项中。
表1
页标识 | 存储位置 |
Name1 | 2、45 |
Name2 | 2、5、34、56、80、90 |
Name3 | 2、34、60、90 |
步骤402:当写入每个页的数据后,根据该存储块对应的固定表项中的存储位置,从该存储块的数据中获取对应的数据,将获取的数据写入该存储块的备用空间中;
具体地,当写入每个页的数据后,根据该存储块对应的固定表项中存储的存储位置,从该存储块的数据中获取对应的数据,并根据该存储块对应的固定表项中存储的存储位置的顺序,将获取的数据依次写入该存储块的备用空间中。
其中,第二预设数值为该存储块中每个页的备用空间的大小之和,并且固定表项中存储的存储位置和备用空间中存储的数据是一一对应关系。
例如,从第一个页的数据中获取存储位置为第2bit的数据为0,存储位置为第45bit的数据为1,从第二个页的数据中获取存储位置为第2bit的数据为1,存储位置为第5bit的数据为1,存储位置为第34bit的数据为0,存储位置为第56bit的数据为1,存储位置为第80bit的数据为0,存储位置为第90bit的数据为1,从第三个页的数据中获取存储位置为第2bit的数据为0,存储位置为第34bit的数据为1,存储位置为第60bit的数据为0,存储位置为第90bit的数据为1。将从第一个页中获取的2个数据01和从第二个页中获取的前2个数据11存储在第一个页的备用空间中;从第二个页的数据中获取的后4个数据0101存储在第二个页的备用空间中;从第三个页的数据中获取的4个数据0101存储在第三个页的备用空间中。
其中,向该存储块中写入数据后,当用户下次需要使用该存储块中的数据时,可以从该存储块中读取数据。
步骤403:当读取该存储块中的数据时,对该存储块中的每个页中的数据分别进行第一次错误检查,获取该存储块中的出错的数据;
具体地,读取该存储块中的数据,对该存储块中的每个页中的主数据空间中存储的数据分别进行第一次错误检查,获取该存储块中的出错的数据。
步骤404:获取该存储块中的每个页中出错的数据的存储位置,并统计获取的存储位置相同的出错的数据的出错个数;
具体地,获取该存储块中的每个页中出错的数据的存储位置,获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数。
例如,第一个页中出错的数据的存储位置分别为2、5、30、45和60,第二个页中出错的数据的存储位置分别为2、5、30、45、60、80和90,第三个页中出错的数据的存储位置分别为2、5、34和56;统计存储位置为2的出错的数据的出错个数为3,存储位置为5的出错的数据的出错个数为3,存储位置为30的出错的数据的出错个数为2,存储位置为34的出错的数据的出错个数为1,存储位置为45的出错的数据的出错个数为2,存储位置为56的出错的数据的出错个数为1,存储位置为60的出错的数据的出错个数为2,存储位置为80的出错的数据的出错个数为1,以及存储位置为90的出错的数据的出错个数为1。
步骤405:根据统计的出错个数,从该存储块中出错的数据对应的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在该存储块对应的临时表项中;
具体地,根据统计的出错个数,对该存储块中出错的数据对应的存储位置进行排序,得到该存储块中出错的数据对应的存储位置的顺序,根据该存储块中出错的数据对应的存储位置的顺序,选择第二预设数值个存储位置。
其中,可以根据出错个数从大到小对该存储块中出错的数据对应的存储位置进行排序。
例如,根据统计的出错个数对该存储块中出错的数据对应的存储位置进行排序,得到该存储块中出错的数据对应的存储位置的顺序为2、5、30、45、60、34、80、90,选择排序靠前的12个存储位置分别为第一个页中的第2bit、第二个页中的第2bit、第三个页中的第2bit、第一个页中的第5bit、第二个页中的第5bit、第三个页中的第5bit、第一个页中的第30bit、第二个页中的第30bit、第一个页中的第45bit、第二个页中的第45bit、第一个页中的第60bit和第二个页中的第60bit;将第一个页的页标识Name1和第一个页中的存储位置2、5、30、45和60存储在如下表2所示的临时表项中,将第二个页的页标识Name2和第三个页中的存储位置2、5、30、45和60存储在如下表2所示的临时表项中,以及将第三个页的页标识Name3和第三个页中的存储位置2和5存储在如下表2所示的临时表项中。
表2
页标识 | 存储位置 |
Name1 | 2、5、30、45、60 |
Name2 | 2、5、30、45、60 |
Name3 | 2、5 |
步骤406:对于该存储块中的某个页,统计该页出错的数据的第一个数,如果该第一个数小于或等于预设第一门限,则对该页中的数据进行ECC修复,结束操作;
具体地,对于该存储块中的某个页,统计该页出错的数据的第一个数,将该第一个数和预设第一门限进行比较,如果该第一个数小于或等于预设第一门限,则确定该页的数据ECC可纠,根据该页的OOB空间中存储的ECC数据,对该页中的数据进行ECC修复,结束操作。
其中,对该存储块中写入数据时,对该存储块的每个页中的主数据空间中存储的数据进行ECC校验,得到该存储块的每个页对应的ECC数据,将每个页对应的ECC数据存储在其对应的OOB空间中。
步骤407:如果该第一个数大于预设第一门限,则根据该页出错的数据的存储位置和该存储块对应的固定表项,从该存储块的备用空间中获取数据,并将该页中出错的数据替换为获取的数据;
具体地,如果该第一个数大于预设第一门限,则确定该页的数据ECC不可纠,根据该页的出错的数据的存储位置,获取出错的数据的存储位置在固定表项中的位置顺序,根据出错的数据的存储位置在固定表项中的位置顺序,从该存储块的备用空间中获取对应的数据,并将该页中出错的数据替换为获取的数据。
其中,在SSD刚开始使用时,存储块的每个页中的数据发生ECC不可纠故障的概率比较小,随着时间的增加,每个页中的数据发生ECC不可纠故障的概率也会增大,由于开启备用空间功能后,在对该存储块的每个页中写数据时需要去查找该存储块对应的固定表项以进行备用空间数据的备份,会引入一定的延时,所以在SSD开始使用时可关闭备用空间功能,只有当对某个页进行第一次ECC纠错后监测到出错的数据的第一个数大于第一预设阈值时,才通知系统开启备用空间功能。
其中,第一预设阈值小于预设第一门限,如此,当某个页出错的数据的第一个数大于第一预设阈值且小于或等于预设第一门限,则开启备用空间功能,当下次读取该存储块中的数据时,如果该存储块中出错的数据的第一个数大于第二预设阈值且小于或等于预设第一门限,则将该存储块的数据进行ECC修复后搬移到某个空闲的存储块中,并根据该空闲存储块对应的固定表项对备用空间中进行数据备份。
其中,当开启备用空间功能后,如果在该Flash中的某个空闲存储块中写入数据时,可以根据该空闲存储块对应的固定表项,直接在该存储块的备用空间中对高故障率的数据进行备份。
其中,第一预设阈值小于第二预设阈值。
步骤408:对该页的数据进行第二次错误检查,获取该页出错的数据;
具体地,对该页中的主数据空间中存储的数据进行第二次错误检查,获取该页的出错的数据。
步骤409:统计该页出错的数据的第二个数,如果该第二个数小于或等于预设第一门限,则对该页中的数据进行ECC修复;
具体地,统计该页出错的数据的第二个数,将该第二个数和预设第一门限进行比较,如果该第二个数小于或等于预设第一门限,则确定该页的数据ECC可纠,根据该页的OOB空间中存储的ECC数据,对该页中的数据进行ECC修复。
步骤410:获取固态硬盘中的空闲存储块,根据该空闲存储块对应的固定表项,将该存储块中的数据搬移到获取的空闲存储块中,结束操作;
具体地,获取固态硬盘中的空闲存储块,将该存储块中的主数据空间中存储的数据和OOB空间中存储的ECC数据搬移到获取的空闲存储块中,并根据该空闲存储块对应的固定表项中的存储位置,从该空闲存储块的搬移的数据中获取该存储位置对应的数据,并存储在该空闲存储块中的备用空间中,结束操作。
进一步地,将该存储块对应的固定表项替换为该存储块对应的临时表项,当下次在该存储块中写入数据时,根据替换后的固定表项中存储的存储位置,对该存储块中的备用空间中进行数据备份。
其中,当某个页的数据发生第一次ECC不可纠时,而通过利用备用空间中存储的数据替换出错的数据后,该页的数据发生第二次ECC可纠并对该页的数据进行ECC修复后,应通知系统,在空闲时将该存储块修复后的数据搬移到其他空闲存储块中,以防止该存储块中更多的数据出错,从而导致第二次ECC也不可纠。同时通过存储块中的数据搬移后,搬移后的数据出现第一次ECC不可纠的概率特别小,所以读取搬移后的数据只需一次ECC便可,可大大提高效率。
步骤411:如果该第二个数大于预设第一门限,则将该存储块标记为坏块,并根据该页的页标识,从预设个数个存储块中获取数据;
具体地,如果该第二个数大于预设第一门限,则将该存储块标记为坏块,并根据该页的页标识,从预设个数个存储块中获取与该页的页标识相同的页,并从获取的页中读取数据。
步骤412:根据获取的数据,判断是否对该页中的数据进行RAID修复,如果是,则对该页的数据进行RAID修复,结束操作。
具体地,对获取的数据进行错误检查以及对RAID冗余存储块中与该页的页标识相同的页中的数据进行错误检查,如果RAID冗余存储块中该页标识对应的页中的数据ECC可纠,则统计预设个数个存储块中该页标识对应的页中的数据ECC不可纠的个数,如果ECC不可纠的个数小于或等于预设第二门限,则确定该页中的数据可以进行RAID修复,根据RAID冗余存储块中该页的数据对该存储块中该页的数据进行RAID修复,结束操作。
其中,事先对预设个数个存储块中页标识相同的页中的数据进行RAID校验,并将校验的结果存储在该预设个数个存储块对应的RAID冗余存储块中的该页标识对应的页中。
进一步地,如果ECC不可纠的个数大于预设第二门限,则确定该页中的数据不可以进行RAID修复,该页中的数据读取错误,结束操作。
例如,该存储块中的第二个页中出错的数据的第二个数为20,预设第一门限为5,由于第二个数大于预设第一门限,则将该存储块标记为坏块,假如预设个数16,预设第二门限为3,则获取该16个存储块中第二个页的数据,并对获取的每个存储块的第二个页的数据进行错误检查,以及对RAID冗余存储块中的第二页的数据进行错误检查,如果RAID冗余存储块中的第二个页的数据ECC可纠,且该16个存储块中第二个页的数据ECC不可纠的个数为2小于预设第二门限3,则确定该页的数据可以进行RAID修复,根据RAID冗余存储块中第二个页的数据对该存储块中第二个页的数据进行RAID修复,并返回正确的数据。
在本发明实施例中,当读取该存储块中的数据时,对该存储块中某个页中的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,将该存储块的备用空间中存储的数据替换出错的数据,并对该页中的数据进行第二次错误检查,当该页中的数据再次ECC不可纠时执行RAID修复。其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了OOB空间,并且根据每个页的备用空间中存储的数据替换出错的数据并进行第二次错误检查,可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
参见图5,本发明实施例提供了一种修复出错数据的装置,该装置包括:
第一获取模块501,用于当读取固态硬盘包括的存储块中的数据时,对该存储块的某个页中的数据进行第一次错误检查,获取该页中出错的数据;
第一修复模块502,用于如果该页中出错的数据的第一个数小于或等于预设第一门限,则对该页中的数据进行错误检查和纠正ECC修复;
第一替换模块503,用于如果该第一个数大于所述预设第一门限,则根据该页中出错的数据的存储位置和该存储块对应的固定表项,从备用空间中获取数据,并将该页中出错的数据替换为获取的数据,该固定表项包括所述备用空间中存储的各数据的存储位置。
其中,该设备还包括:
第二获取模块,用于对该页中的数据进行第二次错误检查,获取该页中出错的数据;
第二修复模块,用于如果该页中出错的数据的第二个数小于或等于所述预设第一门限,则对该页中的数据进行ECC修复;
标记模块,用于如果该第二个数大于所述预设第一门限,则将该存储块标记为坏块,并根据该页的页标识,从预设个数个存储块中获取数据;
第三修复模块,用于根据获取的数据,判断是否对该页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对该页中的数据进行RAID修复。
进一步地,该设备还包括:
第三获取模块,用于获取该存储块中的每个页中出错的数据的存储位置;
第一统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
第一存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在该存储块对应的临时表项中。
进一步地,该设备还包括:
第四获取模块,用于获取该页中的每个存储位置已出错的数据;
第二统计模块,用于根据该页中的每个存储位置已出错的数据,统计该页中的每个存储位置已出错的数据的出错个数;
第二存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和该页的页标识存储在该存储块对应的临时表项中。
进一步地,该设备还包括:
第五获取模块,用于获取该存储块中的每个页中出错的数据的存储位置;
第三统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
第三存储模块,用于根据统计的出错个数,从该存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在该存储块对应的临时表项中。
进一步地,该设备还包括:
搬移模块,用于获取固态硬盘中的空闲存储块,根据该空闲存储块对应的固定表项,将该存储块中的数据搬移到该空闲存储块中。
进一步地,该设备还包括:
第二替换模块,用于将该存储块对应的固定表项替换为该存储块对应的临时表项。
在本发明实施例中,对该存储块中某个页的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,将该页的备用空间中存储的数据替换出错的数据,其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了OOB空间,并且将该页的备用空间中存储的数据替换出错的数据可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
参见图6,本发明实施例提供了一种修复出错数据的设备,该设备包括:
存储器601和处理器602,用于执行如下修复出错数据的方法:
当读取固态硬盘包括的存储块中的数据时,对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据;
如果所述页中出错的数据的第一个数小于或等于预设第一门限,则对所述页中的数据进行错误检查和纠正ECC修复;
如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和所述存储块对应的固定表项,从备用空间中获取数据,并将所述页中出错的数据替换为获取的数据,所述固定表项包括所述备用空间中存储的各数据的存储位置。
进一步地,所述如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和已存储的固定表项,从备用空间中获取数据,并将所述页中出错数据替换为获取的数据之后,还包括:
对所述页中的数据进行第二次错误检查,获取所述页中出错的数据;
如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复;
如果所述第二个数大于所述预设第一门限,则将所述存储块标记为坏块,并根据所述页的页标识,从预设个数个存储块中获取数据;
根据获取的数据,判断是否对所述页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对所述页中的数据进行RAID修复。
进一步地,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述存储块中的每个页中出错的数据的存储位置;
获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在所述存储块对应的临时表项中。
进一步地,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述页中的每个存储位置已出错的数据;
根据所述页中的每个存储位置已出错的数据,统计所述页中的每个存储位置已出错的数据的出错个数;
选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和所述页的页标识存储在所述存储块对应的临时表项中。
进一步地,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述存储块中的每个页中出错的数据的存储位置;
获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
根据统计的出错个数,从所述存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在所述存储块对应的临时表项中。
进一步地,所述如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复之后,还包括:
获取固态硬盘中的空闲存储块,根据所述空闲存储块对应的固定表项,将所述存储块中的数据搬移到所述空闲存储块中。
进一步地,所述方法还包括:
将所述存储块对应的固定表项替换为所述存储块对应的临时表项。
在本发明实施例中,对该存储块中某个页的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,将该页的备用空间中存储的数据替换出错的数据。其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了OOB空间,并且将该页的备用空间中存储的数据替换出错的数据可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
需要说明的是:上述实施例提供的修复出错数据的设备在修复出错数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的修复出错数据的设备与修复出错数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种修复出错数据的方法,其特征在于,所述方法包括:
当读取固态硬盘包括的存储块中的数据时,对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据;
如果所述页中出错的数据的第一个数小于或等于预设第一门限,则对所述页中的数据进行错误检查和纠正ECC修复;
如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和所述存储块对应的固定表项,从备用空间中获取数据,并将所述页中出错的数据替换为获取的数据,所述固定表项包括所述备用空间中存储的各数据的存储位置。
2.如权利要求1所述的方法,其特征在于,所述如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和已存储的固定表项,从备用空间中获取数据,并将所述页中出错数据替换为获取的数据之后,还包括:
对所述页中的数据进行第二次错误检查,获取所述页中出错的数据;
如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复;
如果所述第二个数大于所述预设第一门限,则将所述存储块标记为坏块,并根据所述页的页标识,从预设个数个存储块中获取数据;
根据获取的数据,判断是否对所述页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对所述页中的数据进行RAID修复。
3.如权利要求1所述的方法,其特征在于,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述存储块中的每个页中出错的数据的存储位置;
获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在所述存储块对应的临时表项中。
4.如权利要求1所述的方法,其特征在于,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述页中的每个存储位置已出错的数据;
根据所述页中的每个存储位置已出错的数据,统计所述页中的每个存储位置已出错的数据的出错个数;
选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和所述页的页标识存储在所述存储块对应的临时表项中。
5.如权利要求1所述的方法,其特征在于,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
获取所述存储块中的每个页中出错的数据的存储位置;
获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
根据统计的出错个数,从所述存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在所述存储块对应的临时表项中。
6.如权利要求1-5任一所述的方法,其特征在于,所述如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复之后,还包括:
获取固态硬盘中的空闲存储块,根据所述空闲存储块对应的固定表项,将所述存储块中的数据搬移到所述空闲存储块中。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
将所述存储块对应的固定表项替换为所述存储块对应的临时表项。
8.一种修复出错数据的设备,其特征在于,所述设备包括:
第一获取模块,用于当读取固态硬盘包括的存储块中的数据时,对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据;
第一修复模块,用于如果所述页中出错的数据的第一个数小于或等于预设第一门限,则对所述页中的数据进行错误检查和纠正ECC修复;
第一替换模块,用于如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和所述存储块对应的固定表项,从备用空间中获取数据,并将所述页中出错的数据替换为获取的数据,所述固定表项包括所述备用空间中存储的各数据的存储位置。
9.如权利要求8所述的设备,其特征在于,所述设备还包括:
第二获取模块,用于对所述页中的数据进行第二次错误检查,获取所述页中出错的数据;
第二修复模块,用于如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复;
标记模块,用于如果所述第二个数大于所述预设第一门限,则将所述存储块标记为坏块,并根据所述页的页标识,从预设个数个存储块中获取数据;
第三修复模块,用于根据获取的数据,判断是否对所述页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对所述页中的数据进行RAID修复。
10.如权利要求8所述的设备,其特征在于,所述设备还包括:
第三获取模块,用于获取所述存储块中的每个页中出错的数据的存储位置;
第一统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
第一存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在所述存储块对应的临时表项中。
11.如权利要求8所述的设备,其特征在于,所述设备还包括:
第四获取模块,用于获取所述页中的每个存储位置已出错的数据;
第二统计模块,用于根据所述页中的每个存储位置已出错的数据,统计所述页中的每个存储位置已出错的数据的出错个数;
第二存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和所述页的页标识存储在所述存储块对应的临时表项中。
12.如权利要求8所述的设备,其特征在于,所述设备还包括:
第五获取模块,用于获取所述存储块中的每个页中出错的数据的存储位置;
第三统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
第三存储模块,用于根据统计的出错个数,从所述存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在所述存储块对应的临时表项中。
13.如权利要求8-12任一所述的设备,其特征在于,所述设备还包括:
搬移模块,用于获取固态硬盘中的空闲存储块,根据所述空闲存储块对应的固定表项,将所述存储块中的数据搬移到所述空闲存储块中。
14.如权利要求13所述的设备,其特征在于,所述设备还包括:
第二替换模块,用于将所述存储块对应的固定表项替换为所述存储块对应的临时表项。
15.一种修复出错数据的设备,其特征在于,所述设备包括存储器和处理器,用于执行如权利要求1至7任一权利要求所述的一种修复出错数据的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310381426.1A CN103455386B (zh) | 2013-08-28 | 2013-08-28 | 一种修复出错数据的方法和设备 |
EP14772049.4A EP2857971B1 (en) | 2013-08-28 | 2014-03-11 | Method and device for repairing error data |
PCT/CN2014/073234 WO2015027700A1 (zh) | 2013-08-28 | 2014-03-11 | 一种修复出错数据的方法和设备 |
US14/501,368 US9280301B2 (en) | 2013-08-28 | 2014-09-30 | Method and device for recovering erroneous data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310381426.1A CN103455386B (zh) | 2013-08-28 | 2013-08-28 | 一种修复出错数据的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103455386A true CN103455386A (zh) | 2013-12-18 |
CN103455386B CN103455386B (zh) | 2016-11-23 |
Family
ID=49737789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310381426.1A Active CN103455386B (zh) | 2013-08-28 | 2013-08-28 | 一种修复出错数据的方法和设备 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2857971B1 (zh) |
CN (1) | CN103455386B (zh) |
WO (1) | WO2015027700A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015027700A1 (zh) * | 2013-08-28 | 2015-03-05 | 华为技术有限公司 | 一种修复出错数据的方法和设备 |
US9280301B2 (en) | 2013-08-28 | 2016-03-08 | Huawei Technologies Co., Ltd. | Method and device for recovering erroneous data |
CN106502583A (zh) * | 2016-10-12 | 2017-03-15 | 记忆科技(深圳)有限公司 | 一种降低固态硬盘响应延迟的方法 |
CN106645302A (zh) * | 2016-09-13 | 2017-05-10 | 杭州华为数字技术有限公司 | 一种硫化检测方法及相关设备 |
CN107168650A (zh) * | 2017-05-10 | 2017-09-15 | 合肥联宝信息技术有限公司 | 一种对bios的存储器中的数据的处理方法及装置 |
WO2018041151A1 (zh) * | 2016-08-30 | 2018-03-08 | 中兴通讯股份有限公司 | 数据存储的方法、装置以及非易失性存储器 |
CN107992268A (zh) * | 2017-11-24 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种坏块标记的方法及相关装置 |
CN108170366A (zh) * | 2016-12-06 | 2018-06-15 | 华为技术有限公司 | 存储设备中的存储介质管理方法、装置和存储设备 |
CN108614664A (zh) * | 2016-12-09 | 2018-10-02 | 北京京存技术有限公司 | 基于NANDflash的读错误处理方法和装置 |
CN108829785A (zh) * | 2018-05-31 | 2018-11-16 | 沈文策 | 数据库中故障表的修复方法、装置、电子设备及存储介质 |
CN109614052A (zh) * | 2018-12-13 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种数据巡检方法、装置和计算机可读存储介质 |
CN110471789A (zh) * | 2019-07-02 | 2019-11-19 | 深圳市金泰克半导体有限公司 | 固态硬盘纠错方法及固态硬盘 |
CN110888820A (zh) * | 2018-09-07 | 2020-03-17 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN111459708A (zh) * | 2020-03-11 | 2020-07-28 | 深圳佰维存储科技股份有限公司 | 坏块处理方法及装置 |
CN116880781A (zh) * | 2023-09-08 | 2023-10-13 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI697006B (zh) * | 2019-05-09 | 2020-06-21 | 點序科技股份有限公司 | 快閃記憶體管理方法及快閃記憶體 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1498371A (zh) * | 2002-01-31 | 2004-05-19 | 松下电器产业株式会社 | 存储器件、终端设备、和数据修复系统 |
CN102479555A (zh) * | 2010-11-23 | 2012-05-30 | 海力士半导体有限公司 | 储存存储器的错误信息的装置和方法 |
CN102592680A (zh) * | 2011-01-12 | 2012-07-18 | 北京兆易创新科技有限公司 | 一种存储芯片的修复装置和方法 |
US20130159603A1 (en) * | 2011-12-20 | 2013-06-20 | Fusion-Io, Inc. | Apparatus, System, And Method For Backing Data Of A Non-Volatile Storage Device Using A Backing Store |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455386B (zh) * | 2013-08-28 | 2016-11-23 | 华为技术有限公司 | 一种修复出错数据的方法和设备 |
-
2013
- 2013-08-28 CN CN201310381426.1A patent/CN103455386B/zh active Active
-
2014
- 2014-03-11 WO PCT/CN2014/073234 patent/WO2015027700A1/zh active Application Filing
- 2014-03-11 EP EP14772049.4A patent/EP2857971B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1498371A (zh) * | 2002-01-31 | 2004-05-19 | 松下电器产业株式会社 | 存储器件、终端设备、和数据修复系统 |
CN102479555A (zh) * | 2010-11-23 | 2012-05-30 | 海力士半导体有限公司 | 储存存储器的错误信息的装置和方法 |
CN102592680A (zh) * | 2011-01-12 | 2012-07-18 | 北京兆易创新科技有限公司 | 一种存储芯片的修复装置和方法 |
US20130159603A1 (en) * | 2011-12-20 | 2013-06-20 | Fusion-Io, Inc. | Apparatus, System, And Method For Backing Data Of A Non-Volatile Storage Device Using A Backing Store |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280301B2 (en) | 2013-08-28 | 2016-03-08 | Huawei Technologies Co., Ltd. | Method and device for recovering erroneous data |
CN103455386B (zh) * | 2013-08-28 | 2016-11-23 | 华为技术有限公司 | 一种修复出错数据的方法和设备 |
WO2015027700A1 (zh) * | 2013-08-28 | 2015-03-05 | 华为技术有限公司 | 一种修复出错数据的方法和设备 |
WO2018041151A1 (zh) * | 2016-08-30 | 2018-03-08 | 中兴通讯股份有限公司 | 数据存储的方法、装置以及非易失性存储器 |
CN107783725A (zh) * | 2016-08-30 | 2018-03-09 | 南京中兴新软件有限责任公司 | 数据存储的方法、装置以及非易失性存储器 |
CN106645302B (zh) * | 2016-09-13 | 2020-04-28 | 杭州华为数字技术有限公司 | 一种硫化检测方法及相关设备 |
CN106645302A (zh) * | 2016-09-13 | 2017-05-10 | 杭州华为数字技术有限公司 | 一种硫化检测方法及相关设备 |
CN106502583A (zh) * | 2016-10-12 | 2017-03-15 | 记忆科技(深圳)有限公司 | 一种降低固态硬盘响应延迟的方法 |
US10901629B2 (en) | 2016-12-06 | 2021-01-26 | Huawei Technologies Co., Ltd. | Method and apparatus for managing health of a storage medium in a storage device |
CN108170366A (zh) * | 2016-12-06 | 2018-06-15 | 华为技术有限公司 | 存储设备中的存储介质管理方法、装置和存储设备 |
CN108614664A (zh) * | 2016-12-09 | 2018-10-02 | 北京京存技术有限公司 | 基于NANDflash的读错误处理方法和装置 |
CN107168650B (zh) * | 2017-05-10 | 2020-05-01 | 合肥联宝信息技术有限公司 | 一种对bios的存储器中的数据的处理方法及装置 |
CN107168650A (zh) * | 2017-05-10 | 2017-09-15 | 合肥联宝信息技术有限公司 | 一种对bios的存储器中的数据的处理方法及装置 |
CN107992268A (zh) * | 2017-11-24 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种坏块标记的方法及相关装置 |
CN107992268B (zh) * | 2017-11-24 | 2021-08-10 | 郑州云海信息技术有限公司 | 一种坏块标记的方法及相关装置 |
CN108829785A (zh) * | 2018-05-31 | 2018-11-16 | 沈文策 | 数据库中故障表的修复方法、装置、电子设备及存储介质 |
CN110888820B (zh) * | 2018-09-07 | 2022-01-25 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN110888820A (zh) * | 2018-09-07 | 2020-03-17 | 慧荣科技股份有限公司 | 数据储存装置以及非挥发式存储器控制方法 |
CN109614052A (zh) * | 2018-12-13 | 2019-04-12 | 郑州云海信息技术有限公司 | 一种数据巡检方法、装置和计算机可读存储介质 |
CN109614052B (zh) * | 2018-12-13 | 2022-05-10 | 郑州云海信息技术有限公司 | 一种数据巡检方法、装置和计算机可读存储介质 |
CN110471789A (zh) * | 2019-07-02 | 2019-11-19 | 深圳市金泰克半导体有限公司 | 固态硬盘纠错方法及固态硬盘 |
CN111459708A (zh) * | 2020-03-11 | 2020-07-28 | 深圳佰维存储科技股份有限公司 | 坏块处理方法及装置 |
CN111459708B (zh) * | 2020-03-11 | 2023-08-29 | 深圳佰维存储科技股份有限公司 | 坏块处理方法及装置 |
CN116880781A (zh) * | 2023-09-08 | 2023-10-13 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
CN116880781B (zh) * | 2023-09-08 | 2023-12-26 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103455386B (zh) | 2016-11-23 |
EP2857971B1 (en) | 2016-08-17 |
EP2857971A4 (en) | 2015-05-13 |
EP2857971A1 (en) | 2015-04-08 |
WO2015027700A1 (zh) | 2015-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455386A (zh) | 一种修复出错数据的方法和设备 | |
CN102023815B (zh) | 在固态存储器中实现raid | |
US8417989B2 (en) | Method and system for extra redundancy in a raid system | |
CN106486170B (zh) | 固态硬盘的潜在坏块定位方法及装置 | |
US20150242269A1 (en) | Memory Redundancy to Replace Addresses with Multiple Errors | |
US20080148130A1 (en) | Method and apparatus of cache assisted error detection and correction in memory | |
CN101379566B (zh) | 用于修复高速缓存阵列中单元的装置、系统和方法 | |
CN104156174A (zh) | 基于条带的固态硬盘raid实现方法及装置 | |
TWI512742B (zh) | 非揮發性快閃記憶體擦除異常存儲塊修復方法和裝置 | |
CN104360957A (zh) | 一种维持闪存损耗均衡的方法 | |
US10509697B2 (en) | Data storage device and operating method therefor | |
US20130166991A1 (en) | Non-Volatile Semiconductor Memory Device Using Mats with Error Detection and Correction and Methods of Managing the Same | |
CN105808371A (zh) | 数据备份与恢复方法、控制芯片及存储装置 | |
US9280301B2 (en) | Method and device for recovering erroneous data | |
CN101882472A (zh) | 具可变动错误校正码机制的快闪储存装置及其控制方法 | |
CN103678025B (zh) | 一种磁盘阵列中的磁盘故障处理方法 | |
CN105489242A (zh) | 数据储存器件及其操作方法 | |
CN113220221B (zh) | 存储器控制器与数据处理方法 | |
US20100138603A1 (en) | System and method for preventing data corruption after power failure | |
CN203311409U (zh) | 一种Nand Flash的坏列管理装置 | |
CN105575439B (zh) | 一种存储单元失效纠错的方法及存储器 | |
CN103902232A (zh) | 一种写入的数据的方法及装置 | |
CN103823637A (zh) | 一种数据处理方法及设备 | |
CN210136722U (zh) | 一种存储器 | |
CN105183589A (zh) | 一种磁盘阵列容错装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |