一种修复出错数据的方法和设备的制作方法

文档序号:6509192阅读:191来源:国知局
一种修复出错数据的方法和设备的制作方法
【专利摘要】本发明公开了一种修复出错数据的方法和设备,属于计算机领域。该方法包括:当读取固态硬盘包括的存储块中的数据时,对该存储块的某个页中的数据进行第一次错误检查,获取该页中出错的数据;如果该页中出错的数据的第一个数小于或等于预设第一门限,则对该页中的数据进行错误检查和纠正ECC修复;如果第一个数大于预设第一门限,则根据该页中出错的数据的存储位置和该存储块对应的固定表项,从备用空间中获取数据,并将该页中出错的数据替换为获取的数据,固定表项包括备用空间中存储的各数据的存储位置。该设备包括:第一获取模块、第一修复模块和第一替换模块。本发明可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
【专利说明】一种修复出错数据的方法和设备
【技术领域】
[0001]本发明涉及计算机领域,特别涉及一种修复出错数据的方法和设备。
【背景技术】
[0002]SSD (Solid State Disk,固态硬盘)是用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元组成。存储单元由Flash芯片构成,由于工艺和成本的因素,导致Flash芯片存在一定的故障率,当Flash芯片出现故障时会损坏存储的数据,因此,修复出错数据的方法受到了广泛地关注。
[0003]目前,修复出错数据的方法,具体为:当读取SSD的Flash芯片包括的存储块中的数据时,对于该存储块中的某一个页,检查该页中出错的数据,如果出错的数据个数没有超过预设第一门限,则对该页中出错的数据进行ECC (Error Correcting Code,错误检查和纠正)修复,并返回正确的数据;如果出错的数据个数超过预设第一门限,则将该存储块标记为坏块,后续不再使用该存储块,同时从预设个数个存储块中选择与该页的页标识相同的页,根据选择的页中的数据,判断该页的数据是否可以进行RAID (Redundant Arrays ofInexpensive Disks,独立冗余磁盘阵列)修复,如果是,则对该页进行RAID修复,并返回正确的数据,否则,数据读取错误。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005]当某个页中出错的数据个数超过预设第一门限时,只能对该存储块进行RAID修复,而RAID修复需要根据预设个数个存储块中的数据进行修复,修复数据的时间较长,效率过低;并且将整个存储块被标记为坏块后,SSD的容量减小,后续只能使用没有被标记为坏块的存储块,使没有被标记为坏块的存储块使用频繁,从而降低SSD的寿命和性能。

【发明内容】

[0006]为了解决现有技术的问题,本发明实施例提供了一种修复出错数据的方法和设备。所述技术方案如下:
[0007]第一方面,提供了一种修复出错数据的方法,所述方法包括:
[0008]当读取固态硬盘包括的存储块中的数据时,对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据;
[0009]如果所述页中出错的数据的第一个数小于或等于预设第一门限,则对所述页中的数据进行错误检查和纠正ECC修复;
[0010]如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和所述存储块对应的固定表项,从备用空间中获取数据,并将所述页中出错的数据替换为获取的数据,所述固定表项包括所述备用空间中存储的各数据的存储位置。
[0011]结合第一方面,在上述第一方面的第一种可能的实现方式中,所述如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和已存储的固定表项,从备用空间中获取数据,并将所述页中出错数据替换为获取的数据之后,还包括:[0012]对所述页中的数据进行第二次错误检查,获取所述页中出错的数据;
[0013]如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复;
[0014]如果所述第二个数大于所述预设第一门限,则将所述存储块标记为坏块,并根据所述页的页标识,从预设个数个存储块中获取数据;
[0015]根据获取的数据,判断是否对所述页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对所述页中的数据进行RAID修复。
[0016]结合第一方面,在上述第一方面的第二种可能的实现方式中,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
[0017]获取所述存储块中的每个页中出错的数据的存储位置;
[0018]获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
[0019]选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在所述存储块对应的临时表项中。
[0020]结合第一方面,在上述第一方面的第三种可能的实现方式中,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
[0021]获取所述页中的每个存储位置已出错的数据;
[0022]根据所述页中的每个存储位置已出错的数据,统计所述页中的每个存储位置已出错的数据的出错个数;
[0023]选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和所述页的页标识存储在所述存储块对应的临时表项中。
[0024]结合第一方面,在上述第一方面的第四种可能的实现方式中,所述对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据之后,还包括:
[0025]获取所述存储块中的每个页中出错的数据的存储位置;
[0026]获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
[0027]根据统计的出错个数,从所述存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在所述存储块对应的临时表项中。
[0028]结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中的任一种可能的实现方式,在上述第一方面的第五种可能的实现方式中,所述如果所述页中出错的数据的第二个数小于或等于所述预设第一门限,则对所述页中的数据进行ECC修复之后,还包括:
[0029]获取固态硬盘中的空闲存储块,根据所述空闲存储块对应的固定表项,将所述存储块中的数据搬移到所述空闲存储块中。
[0030]结合第一方面的第五种可能的实现方式,在上述第一方面的第六种可能的实现方式中,所述方法还包括:
[0031 ] 将所述存储块对应的固定表项替换为所述存储块对应的临时表项。
[0032]另一方面,提供了一种修复出错数据的装置,所述装置包括:[0033]第一获取模块,用于当读取固态硬盘包括的存储块中的数据时,对所述存储块的某个页中的数据进行第一次错误检查,获取所述页中出错的数据;
[0034]第一修复模块,用于如果所述页中出错的数据的第一个数小于或等于预设第一门限,则对所述页中的数据进行错误检查和纠正ECC修复;
[0035]第一替换模块,用于如果所述第一个数大于所述预设第一门限,则根据所述页中出错的数据的存储位置和所述存储块对应的固定表项,从备用空间中获取数据,并将所述页中出错的数据替换为获取的数据,所述固定表项包括所述备用空间中存储的各数据的存储位置。
[0036]结合第二方面,在上述第二方面的第一种可能的实现方式中,所述设备还包括:
[0037]第二获取模块,用于对所述页中的数据进行第二次错误检查,获取所述页中出错的数据;
[0038]第二修复模块,用于如果所述页中出错的数据的第二个数小于或等于所述预设第ー门限,则对所述页中的数据进行ECC修复;
[0039]标记模块,用于如果所述第二个数大于所述预设第一门限,则将所述存储块标记为坏块,井根据所述页的页标识,从预设个数个存储块中获取数据;
[0040]第三修复模块,用于根据获取的数据,判断是否对所述页中的数据进行独立冗余磁盘阵列RAID修复,如果是,则对所述页中的数据进行RAID修复。
[0041]结合第二方面,在上述第二方面的第二种可能的实现方式中,所述设备还包括:
[0042]第三获取模块,用于获取所述存储块中的每个页中出错的数据的存储位置;
[0043]第一统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
[0044]第一存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置存储在所述存储块对应的临时表项中。
[0045]结合第二方面,在上述第二方面的第三种可能的实现方式中,所述设备还包括:
[0046]第四获取模块,用于获取所述页中的每个存储位置已出错的数据;
[0047]第二统计模块,用于根据所述页中的每个存储位置已出错的数据,统计所述页中的每个存储位置已出错的数据的出错个数;
[0048]第二存储模块,用于选择出错个数最大的第一预设数值个存储位置,并将选择的存储位置和所述页的页标识存储在所述存储块对应的临时表项中。
[0049]结合第二方面,在上述第二方面的第四种可能的实现方式中,所述设备还包括:
[0050]第五获取模块,用于获取所述存储块中的每个页中出错的数据的存储位置;
[0051]第三统计模块,用于获取存储位置相同的出错的数据,并统计存储位置相同的出错的数据的出错个数;
[0052]第三存储模块,用于根据统计的出错个数,从所述存储块中出错的数据的存储位置中选择第二预设数值个存储位置,并将选择的存储位置和其对应的页标识存储在所述存储块对应的临时表项中。
[0053]结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中的任ー种可能的实现方式,在上述第二方面的第五种可能的实现方式中,所述设备还包括:[0054]搬移模块,用于获取固态硬盘中的空闲存储块,根据所述空闲存储块对应的固定表项,将所述存储块中的数据搬移到所述空闲存储块中。
[0055]结合第二方面的第五种可能的实现方式,在上述第二方面的第六种可能的实现方式中,所述设备还包括:
[0056]第二替换模块,用于将所述存储块对应的固定表项替换为所述存储块对应的临时表项。
[0057]第三方面,提供了一种修复出错数据的设备,所述设备包括存储器和处理器,用于执行所述的ー种修复出错数据的方法。
[0058]在本发明实施例中,对该存储块中某个页的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,将该页的备用空间中存储的数据替换出错的数据。其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了 OOB空间,并且将该页的备用空间中存储的数据替换出错的数据可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
【专利附图】

【附图说明】
[0059]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0060]图1是本发明实施例提供的一种修复出错数据的方法流程图;
[0061]图2是本发明实施例提供的另ー种修复出错数据的方法流程图;
[0062]图3是本发明实施例提供的另ー种修复出错数据的方法流程图;
[0063]图4是本发明实施例提供的另ー种修复出错数据的方法流程图;
[0064]图5是本发明实施例提供的一种修复出错数据的装置结构示意图;
[0065]图6是本发明实施例提供的另ー种修复出错数据的装置结构示意图。
【具体实施方式】
[0066]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进ー步地详细描述。
[0067]本发明实施例提供了一种修复出错数据的方法,參见图1,该方法包括:
[0068]步骤101:当读取固态硬盘包括的存储块中的数据时,对该存储块的某个页中的数据进行第一次错误检查,获取该页中出错的数据;
[0069]步骤102:如果该页中出错的数据的第一个数小于或等于预设第一门限,则对该页中的数据进行错误检查和纠正ECC修复;
[0070]步骤103:如果第一个数大于预设第一门限,则根据该页中出错的数据的存储位置和该存储块对应的固定表项,从备用空间中获取数据,并将该页中出错的数据替换为获取的数据,固定表项包括备用空间中存储的各数据的存储位置。
[0071]在本发明实施例中,对该存储块中某个页的数据进行第一次错误检查,当该页中的数据第一次ECC不可纠时,将该页的备用空间中存储的数据替换出错的数据,其中,在每个页OOB空间中的备用空间中存储出错概率大的数据,不仅充分利用了 OOB空间,并且将该页的备用空间中存储的数据替换出错的数据可以大大降低发生不可纠故障的概率,以避免轻易的将该存储块标记为坏块。
[0072]本发明实施例提供了一种修复出错数据的方法。其中,Flash芯片的内部分为多个存储块,每个存储块由多个页组成,每个页中包括主数据空间和00B(0ut of Band Data,冗余空间)空间,OOB空间用于存储ECC数据,由于OOB空间中存储的ECC数据比OOB的空间小,所以在存储块的每个页中,除去主数据空间和真正存储ECC数据的空间之外,每个页中还存在一定的备用空间,该备用空间中可以存储发生故障率最高的存储位置的数据。其中,在本发明实施例中,存储块对应的固定表项中存储该存储块的备用空间中的各数据的存储位置,当对该存储块中每个页的备用空间中进行数据备份时,根据固定表项中存储的存储位置,从每个页中分别获取数据并存储在其对应的备用空间中。參见图2,该方法包括:
[0073]步骤201:当第一次对该存储块中写入数据时,从该存储块的某个页中随机选择第一预设数值个存储位置,将选择的存储位置依次存储在该存储块对应的固定表项中;
[0074]其中,存储块包括的每个页的存储空间相等,针对于整个存储块可以在该存储块中的某个页中随机选择第一预设数值个存储位置,即该存储块中每个页对应的备用空间中存储的数据对应的存储位置相同。
[0075]例如,该存储块包括3个页,每个页存储IOObit的数据,即每个页中存储数据的存储位置为1-100,假如第一预设数值为4,且选择的第一个存储位置为第2bit,第二个存储位置为第45bit,第三个存储位置为第70bit以及第四个存储位置为第90bit,将选择的存储位置2、45、70和90依次存储在如下表I所示的固定表项中。
[0076]表1
【权利要求】
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任一权 利要求所述的一种修复出错数据的方法。
【文档编号】G06F11/10GK103455386SQ201310381426
【公开日】2013年12月18日 申请日期:2013年8月28日 优先权日:2013年8月28日
【发明者】鲍慧强, 王大勇, 王荣生 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1