CN108182126B - 一种硬盘处理方法及电子设备 - Google Patents

一种硬盘处理方法及电子设备 Download PDF

Info

Publication number
CN108182126B
CN108182126B CN201810001220.4A CN201810001220A CN108182126B CN 108182126 B CN108182126 B CN 108182126B CN 201810001220 A CN201810001220 A CN 201810001220A CN 108182126 B CN108182126 B CN 108182126B
Authority
CN
China
Prior art keywords
data
length
determining
solid state
unit
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.)
Active
Application number
CN201810001220.4A
Other languages
English (en)
Other versions
CN108182126A (zh
Inventor
杨安荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN201810001220.4A priority Critical patent/CN108182126B/zh
Publication of CN108182126A publication Critical patent/CN108182126A/zh
Application granted granted Critical
Publication of CN108182126B publication Critical patent/CN108182126B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Abstract

本发明公开了一种硬盘处理方法及电子设备,当检测到固态硬盘中有存储单元出现故障时,确定出现故障的存储单元的数量,根据出现故障的存储单元的数量确定校验单元的数量,从固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元,根据校验单元以及数据存储单元中的数据,确定出现故障的存储单元中的数据。本方案通过根据出现故障的存储单元的数量读取对应数量的校验单元,从而对出现故障的存储单元中的数据进行恢复,实现了无论出现故障的存储单元数量为1个还是2个,都可以进行数据恢复,避免了现有技术中只有当一个存储单元出现故障时,才能进行数据恢复,而不能在两个存储单元同时出现故障时进行数据恢复的问题。

Description

一种硬盘处理方法及电子设备
技术领域
本发明涉及控制领域,尤其涉及一种硬盘处理方法及电子设备。
背景技术
在固态硬盘SSD控制器中应用RAID技术,将一组数据分成若干个数据块分别写在SSD的不同存储单元中,同时对这些数据块利用RAID技术生成校验信息,并将校验信息也存储在SSD的不同的存储单元中,当有一个固态硬盘存储单元出现故障时,通过校验单元及除该出现故障的固态硬盘存储单元外的其他存储单元恢复该故障固态硬盘存储单元中的数据。
然而,在固态硬盘的应用中,可能会出现两个固态硬盘存储单元出现故障的情况,此时,若再通过一个校验单元,则不能实现对出现故障的两个固态硬盘存储单元中的数据进行恢复。
发明内容
有鉴于此,本发明提供一种硬盘处理方法及电子设备,以解决现有技术在固态硬盘应用中,当出现两个固态硬盘存储单元出现故障时,不能通过一个校验单元对出现故障的两个存储单元进行数据恢复的问题,其具体方案如下:
一种硬盘处理方法,应用于固态硬盘SSD,包括:
当检测到所述固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的所述固态硬盘存储单元的数量;
根据所述出现故障的固态硬盘存储单元的数量确定校验单元的数量;
从所述固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元;
根据所述校验单元及所述数据存储单元中的数据,确定所述出现故障的固态硬盘存储单元中的数据。
进一步的,生成校验单元,包括:
确定数据存储单元中数据块的长度,根据所述数据块的长度确定校验信息,将所述校验信息存储至存储单元。
进一步的,生成校验单元,包括:
确定通道数量,根据所述通道数量确定校验信息,将所述校验信息存储至存储单元。
进一步的,所述确定数据存储单元中数据块的长度,根据所述数据块的长度确定校验信息,包括:
确定数据块的两个不同长度值,所述两个不同长度值包括:第一长度及第二长度;
比较所述第一长度及第二长度的大小;
当所述第一长度大于第二长度时,确定所述第二长度的数值为数据块的个数;
根据所述数据块的个数、第一长度及第二长度确定校验信息。
进一步的,所述确定通道数量,根据所述通道数量确定校验信息,包括:
确定通道数量与数据长度是否符合预定关系,所述预定关系包括:所述通道数量小于数据块的长度,所述数据长度为所述数据块长度的倍数;
若是,根据所述数据块的长度确定校验信息。
进一步的,所述根据所述数据块的长度确定校验信息,包括:
确定所述通道数量比所述数据块长度小的数值为第一数值;
设置第一数值个数的通道,使通道数量为所述通道数量与第一数值相加的和,所述第一数值个数的通道对应的数据为0;
根据所述通道数量确定校验信息。
一种电子设备,应用于固态硬盘SSD,包括:数量确定单元,读取单元及数据恢复单元,其中:
数量确定单元用于当检测到所述固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的所述固态硬盘存储单元的数量,根据所述出现故障的固态硬盘存储单元的数量确定校验单元的数量;
所述读取单元用于从所述固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元;
所述数据恢复单元用于根据所述校验单元及所述数据存储单元中的数据,确定所述出现故障的固态硬盘存储单元中的数据。
进一步的,还包括:生成单元,
所述生成单元用于生成校验单元,包括:确定数据存储单元中数据块的长度,根据所述数据块的长度确定校验信息,将所述校验信息存储至存储单元,生成校验单元。
进一步的,还包括:生成单元,
所述生成单元用于生成校验单元,包括:确定通道数量,根据所述通道数量确定校验信息,将所述校验信息存储至存储单元,生成校验单元。
进一步的,所述生成单元确定数据存储单元中数据块的长度,根据所述数据块的长度确定校验信息,包括:
所述生成单元确定数据块的两个不同长度值,所述两个不同长度值包括:第一长度及第二长度,比较所述第一长度及第二长度的大小,当所述第一长度大于第二长度时,确定所述第二长度的数值为数据块的个数,根据所述数据块的个数、第一长度及第二长度确定校验信息。
从上述技术方案可以看出,本申请公开的硬盘处理方法及电子设备,当检测到固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的固态硬盘存储单元的数量,根据出现故障的固态硬盘存储单元的数量确定校验单元的数量,从固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元,根据校验单元以及数据存储单元中的数据,确定出现故障的固态硬盘存储单元中的数据。本方案通过根据出现故障的固态硬盘存储单元的数量读取对应数量的校验单元,从而对出现故障的固态硬盘存储单元中的数据进行恢复,实现了无论出现故障的固态硬盘存储单元数量为1个还是2个,都可以进行数据恢复,避免了现有技术中只有当一个固态硬盘存储单元出现故障时,才能进行数据恢复,而不能再两个固态硬盘存储单元同时出现故障时进行数据恢复的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种硬盘处理方法的流程图;
图2为本发明实施例公开的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种硬盘处理方法,应用于固态硬盘SSD,其流程图如图1所示,包括:
步骤S11、当检测到固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的固态硬盘存储单元的数量;
当固态硬盘中有固态硬盘存储单元出现故障时,该固态硬盘存储单元内的数据为不可获取或不可发送的状态,此时,为了获取该出现故障的固态硬盘存储单元中的数据,需要根据固态硬盘中的其他存储单元获取,具体的,读取其他未出现故障的存储单元中的校验单元,该校验单元仅为1个,利用校验单元以及其他未出现故障的存储单元共同生成出现故障的存储单元中的数据。
当出现故障的固态硬盘存储单元仅为一个时,可以采用上述方式进行数据的恢复,当出现故障的固态硬盘存储单元为两个时,则无法获取故障存储单元中的数据。因此,需要首先确定出现故障的固态硬盘存储单元的数量。
步骤S12、根据出现故障的固态硬盘存储单元的数量确定校验单元的数量;
出现故障的固态硬盘存储单元的数量与校验单元的数量相同。
只有当明确了出现故障的固态硬盘存储单元的数量才能读取对应数量的校验单元,以保证校验单元的数量能与出现故障的固态硬盘存储单元的数量相同。
步骤S13、从固态硬盘中未出现故障的存储单元中读取数据存储单元及校验单元;
当出现故障的固态硬盘存储单元仅为1个时,只需要利用其它未出现故障的存储单元中的1个校验单元即可;当出现故障的固态硬盘存储单元为2个时,利用其它未出现故障的存储单元中的2个校验单元进行数据恢复。
步骤S14、根据生成的校验单元及固态硬盘中除出现故障的固态硬盘存储单元及校验单元外的其他存储单元中的数据,确定出现故障的固态硬盘存储单元中的数据。
当固态硬盘中存储单元总数量为N时,若出现故障的存储单元为1个,则从未出现故障的N-1个存储单元中读取1个校验单元,利用该校验单元以及剩余N-2个存储单元中的数据,确定该出现故障的1个存储单元中的数据;
当固态硬盘中存储单元总数量为N时,若出现故障的存储单元为2个,则从未出现故障的N-2个存储单元中读取2个校验单元,利用该2个校验单元以及剩余N-4个存储单元中的数据,确定出现故障的2个存储单元中的数据。
例如:当固态硬盘中有7个存储单元时,该7个存储单元中有2个为校验单元,其中有2个数据存储单元出现故障,无法读取其中的数据,此时,从剩余未出现故障的5个存储单元中,读取2个校验单元,以及剩下的3个数据存储单元,通过这2个校验单元以及3个数据存储单元共同确定出现故障的2个存储单元中的数据。
进一步的,在进行数据读取的过程中,数据存储单元与校验单元分别用各自独立对应的通道进行数据传输,从而实现数据通道与校验通道并行读写。
具体的,可以为:为校验单元分配一个通道,其余通道为数据存储单元的数据传输通道,此时,无论校验单元为1个还是2个,均只通过这一个通道进行数据传输;还可以为:为每一个校验单元分别分配一个通道,其余通道为数据存储单元的数据传输通道,数据存储单元可以为几个数据存储单元公用一个通道,也可以为每一个数据存储单元各自独立分配一个通道,避免引起某个通道的读写冲突,从而有效提高数据吞吐量。
进一步的,在数据存储单元及校验单元生成阶段,是将一组数据分成若干个数据块,分别写在不同的固态硬盘存储单元中,即生成了数据存储单元;同时,对这些数据块利用RAID技术生成校验信息,并将校验信息也存储在其他未被写入数据块的固态硬盘存储单元中,即生成了校验单元。
具体的,生成校验单元可以包括:
确定数据存储单元中数据块的长度,根据数据块的长度确定校验信息,将校验信息存储至存储单元。
具体的,在生成校验信息时,通常将每一个第一级数据块分成若干个大小为128的子数据块,即第一级子数据块,将每一个第一级子数据块分成若干个第二级子数据块,以便于减小数据的计算量。采用N*N大小的第二级子数据块来生成,但是,当数据的长度不是生成校验信息的数据的个数的倍数时,就无法按照N*N的第二级子数据块来生成校验信息。
此时,可以采用以下方式进行校验信息的生成:
确定第二级子数据块的两个不同长度值,两个不同长度值包括:第一长度及第二长度,比较第一长度及第二长度的大小,当第一长度大于第二长度时,确定第二长度的数值为数据块的个数,根据数据块的个数、第一长度及第二长度确定校验信息。
确定第二级子数据块的两个不同长度值,可以具体包括:根据数据长度确定第二级子数据块的两个不同长度值,两个不同长度值包括:第一长度及第二长度,且第一长度加1与第二长度加1的数值均为质数。
其中,固态硬盘中的数据是按照条带(stripe)的方式进行组织并存储在固态硬盘的存储单元中,组成一个条带的数据块的个数就称为条带的长度,条带中每个数据块的大小称为数据长度。
根据数据长度确定第二级子数据块的两个不同长度值,可以包括:确定数据长度为n的倍数,第一长度与第二长度相加的和为n。
例如:设n为128,数据长度为128的倍数,那么,选取的第一长度与第二长度可以分别为58和70,其中,58+1和70+1均为质数,同时,58+70=128,条带中数据块的个数最多为58。
在生成校验信息的过程中,可以通过两个不同大小的第二级子数据块,即第二级子数据块的个数为列数与第一长度为行数的第二级子数据块,和第二级子数据块的个数为行数与第二长度为行数的第二级子数据块交替运算,分别计算以第一长度和第二长度为大小的校验信息,即:
通过58*58+70*58+58*58+70*58+...交替进行计算,分别计算58*58的块的校验信息和70*58的块的校验信息,最多为58列。
确定第二级子数据块的两个不同长度值,还可以具体包括:确定数据长度为n的倍数,第一长度与n相加的和为第二长度的倍数。
例如:设n为128,数据长度为128的倍数,那么,选取的第一长度与第二长度可以分别为256和192,其中,256+1和192+1均为质数,同时,256+128为192的2倍,条带中数据块的个数为192。
在生成校验信息的过程中,可以通过第二级子数据块的个数和第一长度分别为列数和行数形成的第二级子数据块来计算校验信息,最后再按第二级子数据块的个数及第二长度分别为列数和行数形成的第二级子数据块来计算校验信息,即:
通过256*192+256*192+...+256*192+192*192+192*192顺序进行计算,即按若干个256*192的第二级子数据块先计算校验信息,最后再计算两个192*192的第二级子数据块的校验信息,这种方案最多为192列,校验信息的总长度等于数据长度,在上述计算中,只有最后两组第二级子数据块的大小与前述不同,前述为256行*192列的第二级子数据块,最后两组为192行*192列的第二级子数据块。
进一步的,生成校验单元,还可以包括:确定通道数量,根据通道数量确定校验信息,将校验信息存储至存储单元。
当数据的长度是通道N的倍数的时候,并且N+1为素数的时候,直接按照N*N的第二级子数据块来生成校验信息,即如果每个通道上的数据大小为N的M倍时,通过由M个N*N比特位的第二级子数据块分别计算出M个N位的校验信息。
当数据的长度不是通道N的倍数的时候,就没法按照N*N的第二级子数据块来生成校验信息。
此时,可以采用以下方式进行校验信息的生成:
确定通道数量与数据长度是否符合预定关系,预定关系包括:每个通道的数据长度为数据块长度的倍数,通道数量小于等于数据块的长度,若是,根据数据块的长度分组确定校验信息,总的校验信息为各个分组校验信息按照数据分组的顺序进行组合。
例如:假设数据块长度为16,并且,16+1为素数,数据长度是16的倍数,通道数量为15,此时,通道数量15小于数据块的长度16,符合预定关系,此时,根据数据块的长度16确定校验信息。具体的,通道数量可以为小于16的任意数值。
具体的,确定通道数量比数据块长度小的数值为第一数值,设置第一数值个数的通道,使数据列数为有效通道数量与第一数值相加的和,第一数值个数的通道对应的数据为0,根据通道数量确定生成校验位的数据块大小。
第一数值为:数据块长度减去通道数量得到的数值,设置第一数值个数的通道,第一数值个数的通道对应的数据为0,即在第一数值个数个通道上传输的数据为0。
例如:假设数据块长度为16,数据长度是16的倍数,通道数量为15,此时,通道数量15小于数据块的长度16,符合预定关系,此时,假设还有一个通道,其传输的数据为0,则此时,通道数量为16,仍可以按照16*16的数据块来计算校验信息,即16*16为16行16列的数据块,通过多个16*16的数据块分别计算校验信息,简化了校验信息的计算过程。
其中,具体的计算校验信息的过程可以为:首先通过横纹上一行的数据做逻辑异或来计算出第一组校验信息,同时,按照斜纹上的数据做逻辑异或来计算出第二组校验信息。
具体的,数据结构如表1所示:
第0行的d(i,0)(i=0,1,2…15)相互异或在一起得到校验位RP0,第1行的d(i,1)(i=01,2…15)相互异或在一起得到校验位RP1,第j行的d(i,j)(i=01,2…15)相互异或在一起得到校验位RPj;同时,第0个斜纹上的数据d(0,0),d(2,15),d(3,14)…d(14,3),d(15,2),RP1等数据异或在一起得到校验位DP0,第1个斜纹上的数据d(0,1),d(1,0),d(3,15),d(4,14)…d(14,4),d(15,3),RP2等数据异或在一起得到校验位DP1,依次类推得到校验位DPi,(i=0,1,2,3…15)。
表1
Figure BDA0001537074380000101
本实施例公开的硬盘处理方法,当检测到固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的固态硬盘存储单元的数量,根据出现故障的固态硬盘存储单元的数量确定校验单元的数量,从固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元,根据校验单元以及其他存储单元中的数据,确定出现故障的固态硬盘存储单元中的数据。本方案通过根据出现故障的固态硬盘存储单元的数量读取对应数量的校验单元,从而对出现故障的固态硬盘存储单元中的数据进行恢复,实现了无论出现故障的固态硬盘存储单元数量为1个还是2个,都可以进行数据恢复,避免了现有技术中只有当一个固态硬盘存储单元出现故障时,才能进行数据恢复,而不能再两个固态硬盘存储单元同时出现故障时进行数据恢复的问题。
本实施例公开了一种电子设备,应用于固态硬盘SSD,其结构示意图如图2所示,包括:
数量确定单元21,读取单元22及数据恢复单元23。
数量确定单元21用于当检测到固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的固态硬盘存储单元的数量,根据出现故障的固态硬盘存储单元的数量确定校验单元的数量;
当固态硬盘中有固态硬盘存储单元出现故障时,该固态硬盘存储单元内的数据为不可获取或不可发送的状态,此时,为了获取该出现故障的固态硬盘存储单元中的数据,需要根据固态硬盘中的其他存储单元获取,具体的,读取其他未出现故障的存储单元中的校验单元,该校验单元仅为1个,利用校验单元以及其他未出现故障的存储单元共同生成出现故障的存储单元中的数据。
当出现故障的固态硬盘存储单元仅为一个时,可以采用上述方式进行数据的恢复,当出现故障的固态硬盘存储单元为两个时,则无法获取故障存储单元中的数据。因此,需要首先确定出现故障的固态硬盘存储单元的数量。
出现故障的固态硬盘存储单元的数量与校验单元的数量相同。
只有当明确了出现故障的固态硬盘存储单元的数量才能读取对应数量的校验单元,以保证校验单元的数量能与出现故障的固态硬盘存储单元的数量相同。
读取单元22用于从固态硬盘中未出现故障的存储单元中读取数据存储单元及校验单元;
当出现故障的固态硬盘存储单元仅为1个时,只需要利用其它未出现故障的存储单元中的1个校验单元即可;当出现故障的固态硬盘存储单元为2个时,利用其它未出现故障的存储单元中的2个校验单元进行数据恢复。
数据恢复单元23用于根据生成的校验单元及固态硬盘中除出现故障的固态硬盘存储单元及校验单元外的其他芯片中的数据,确定出现故障的固态硬盘存储单元中的数据。
当固态硬盘中存储单元总数量为N时,若出现故障的存储单元为1个,则从未出现故障的N-1个存储单元中读取1个校验单元,利用该校验单元以及剩余N-2个存储单元中的数据,确定该出现故障的1个存储单元中的数据;
当固态硬盘中存储单元总数量为N时,若出现故障的存储单元为2个,则从未出现故障的N-2个存储单元中读取2个校验单元,利用该2个校验单元以及剩余N-4个存储单元中的数据,确定出现故障的2个存储单元中的数据。
例如:当固态硬盘中有7个存储单元时,该7个存储单元中有2个为校验单元,其中有2个数据存储单元出现故障,无法读取其中的数据,此时,从剩余未出现故障的5个存储单元中,读取2个校验单元,以及剩下的3个数据存储单元,通过这2个校验单元以及3个数据存储单元共同确定出现故障的2个存储单元中的数据。
进一步的,在进行数据读取的过程中,数据存储单元与校验单元分别用各自独立对应的通道进行数据传输,从而实现数据通道与校验通道并行读写。
具体的,可以为:为校验单元分配一个通道,其余通道为数据存储单元的数据传输通道,此时,无论校验单元为1个还是2个,均只通过这一个通道进行数据传输;还可以为:为每一个校验单元分别分配一个通道,其余通道为数据存储单元的数据传输通道,数据存储单元可以为几个数据存储单元公用一个通道,也可以为每一个数据存储单元各自独立分配一个通道,避免引起某个通道的读写冲突,从而有效提高数据吞吐量。
进一步的,在数据存储单元及校验单元生成阶段,是将一组数据分成若干个数据块,分别写在不同的固态硬盘存储单元中,即生成了数据存储单元;同时,对这些数据块利用RAID技术生成校验信息,并将校验信息也存储在其他未被写入数据块的固态硬盘存储单元中,即生成了校验单元。
具体的,生成校验单元可以包括:
确定数据存储单元中数据块的长度,根据数据块的长度确定校验信息,将校验信息存储至存储单元。
具体的,在生成校验信息时,通常将每一个第一级数据块分成若干个大小为128的子数据块,即第一级子数据块,将每一个第一级子数据块分成若干个第二级子数据块,以便于减小数据的计算量。采用N*N大小的第二级子数据块来生成,但是,当数据的长度不是生成校验信息的数据的个数的倍数时,就无法按照N*N的第二级子数据块来生成校验信息。
此时,可以采用以下方式进行校验信息的生成:
确定第二级子数据块的两个不同长度值,两个不同长度值包括:第一长度及第二长度,比较第一长度及第二长度的大小,当第一长度大于第二长度时,确定第二长度的数值为数据块的个数,根据数据块的个数、第一长度及第二长度确定校验信息。
确定第二级子数据块的两个不同长度值,可以具体包括:根据数据长度确定第二级子数据块的两个不同长度值,两个不同长度值包括:第一长度及第二长度,且第一长度加1与第二长度加1的数值均为质数。
其中,固态硬盘中的数据是按照条带(stripe)的方式进行组织并存储在固态硬盘的存储单元中,组成一个条带的数据块的个数就称为条带的长度,条带中每个数据块的大小称为数据长度。
根据数据长度确定第二级子数据块的两个不同长度值,可以包括:确定数据长度为n的倍数,第一长度与第二长度相加的和为n。
例如:设n为128,数据长度为128的倍数,那么,选取的第一长度与第二长度可以分别为58和70,其中,58+1和70+1均为质数,同时,58+70=128,条带中数据块的个数最多为58。
在生成校验信息的过程中,可以通过两个不同大小的第二级子数据块,即第二级子数据块的个数为列数与第一长度为行数的第二级子数据块,和第二级子数据块的个数为行数与第二长度为行数的第二级子数据块交替运算,分别计算以第一长度和第二长度为大小的校验信息,即:
通过58*58+70*58+58*58+70*58+...交替进行计算,分别计算58*58的块的校验信息和70*58的块的校验信息,最多为58列。
确定第二级子数据块的两个不同长度值,还可以具体包括:确定数据长度为n的倍数,第一长度与n相加的和为第二长度的倍数。
例如:设n为128,数据长度为128的倍数,那么,选取的第一长度与第二长度可以分别为256和192,其中,256+1和192+1均为质数,同时,256+128为192的2倍,条带中数据块的个数为192。
在生成校验信息的过程中,可以通过第二级子数据块的个数和第一长度分别为列数和行数形成的第二级子数据块来计算校验信息,最后再按第二级子数据块的个数及第二长度分别为列数和行数形成的第二级子数据块来计算校验信息,即:
通过256*192+256*192+...+256*192+192*192+192*192顺序进行计算,即按若干个256*192的第二级子数据块先计算校验信息,最后再计算两个192*192的第二级子数据块的校验信息,这种方案最多为192列,校验信息的总长度等于数据长度,在上述计算中,只有最后两组第二级子数据块的大小与前述不同,前述为256行*192列的第二级子数据块,最后两组为192行*192列的第二级子数据块。
进一步的,生成校验单元,还可以包括:确定通道数量,根据通道数量确定校验信息,将校验信息存储至存储单元。
当数据的长度是通道N的倍数的时候,并且N+1为素数的时候,直接按照N*N的第二级子数据块来生成校验信息,即如果每个通道上的数据大小为N的M倍时,通过由M个N*N比特位的第二级子数据块分别计算出M个N位的校验信息。
当数据的长度不是通道N的倍数的时候,就没法按照N*N的第二级子数据块来生成校验信息。
此时,可以采用以下方式进行校验信息的生成:
确定通道数量与数据长度是否符合预定关系,预定关系包括:每个通道的数据长度为数据块长度的倍数,通道数量小于等于数据块的长度,若是,根据数据块的长度分组确定校验信息,总的校验信息为各个分组校验信息按照数据分组的顺序进行组合。
例如:假设数据块长度为16,并且,16+1为素数,数据长度是16的倍数,通道数量为15,此时,通道数量15小于数据块的长度16,符合预定关系,此时,根据数据块的长度16确定校验信息。具体的,通道数量可以为小于16的任意数值。
具体的,确定通道数量比数据块长度小的数值为第一数值,设置第一数值个数的通道,使数据列数为有效通道数量与第一数值相加的和,第一数值个数的通道对应的数据为0,根据通道数量确定生成校验位的数据块大小。
第一数值为:数据块长度减去通道数量得到的数值,设置第一数值个数的通道,第一数值个数的通道对应的数据为0,即在第一数值个数个通道上传输的数据为0。
例如:假设数据块长度为16,数据长度是16的倍数,通道数量为15,此时,通道数量15小于数据块的长度16,符合预定关系,此时,假设还有一个通道,其传输的数据为0,则此时,通道数量为16,仍可以按照16*16的数据块来计算校验信息,即16*16为16行16列的数据块,通过多个16*16的数据块分别计算校验信息,简化了校验信息的计算过程。
其中,具体的计算校验信息的过程可以为:首先通过横纹上一行的数据做逻辑异或来计算出第一组校验信息,同时,按照斜纹上的数据做逻辑异或来计算出第二组校验信息。
具体的,数据结构如表1所示:
第0行的d(i,0)(i=0,1,2…15)相互异或在一起得到校验位RP0,第1行的d(i,1)(i=01,2…15)相互异或在一起得到校验位RP1,第j行的d(i,j)(i=01,2…15)相互异或在一起得到校验位RPj;同时,第0个斜纹上的数据d(0,0),d(2,15),d(3,14)…d(14,3),d(15,2),RP1等数据异或在一起得到校验位DP0,第1个斜纹上的数据d(0,1),d(1,0),d(3,15),d(4,14)…d(14,4),d(15,3),RP2等数据异或在一起得到校验位DP1,依次类推得到校验位DPi,(i=0,1,2,3…15)。
表1
Figure BDA0001537074380000151
本实施例公开的电子设备,当检测到固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的固态硬盘存储单元的数量,根据出现故障的固态硬盘存储单元的数量确定校验单元的数量,从固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元,根据校验单元以及数据存储单元中的数据,确定出现故障的固态硬盘存储单元中的数据。本方案通过根据出现故障的固态硬盘存储单元的数量读取对应数量的校验单元,从而对出现故障的固态硬盘存储单元中的数据进行恢复,实现了无论出现故障的固态硬盘存储单元数量为1个还是2个,都可以进行数据恢复,避免了现有技术中只有当一个固态硬盘存储单元出现故障时,才能进行数据恢复,而不能再两个固态硬盘存储单元同时出现故障时进行数据恢复的问题。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (6)

1.一种硬盘处理方法,应用于固态硬盘SSD,其特征在于,包括:
当检测到所述固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的所述固态硬盘存储单元的数量;
根据所述出现故障的固态硬盘存储单元的数量确定校验单元的数量;
生成校验单元,包括:确定数据存储单元中数据块的长度,根据数据块的长度确定校验信息,将所述校验信息存储至存储单元,生成所述校验信息时,将每一个数据块,即第一级数据块分成多个大小相同的第一级子数据块,将每一个所述第一级子数据块分成多个第二级子数据块,若数据的长度与生成校验信息的数据的个数的倍数不匹配,所述数据的长度为条带中每个所述数据块的大小,则确定所述第二级子数据块的两个不同长度值,两个不同长度值包括:第一长度及第二长度,比较所述第一长度及所述第二长度的大小,当所述第一长度大于所述第二长度时,确定所述第二长度的数值为所述数据块的个数,根据所述数据块的个数、第一长度及第二长度确定校验信息;
从所述固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元;
根据所述校验单元及所述数据存储单元中的数据,确定所述出现故障的固态硬盘存储单元中的数据。
2.根据权利要求1所述的方法,其特征在于,生成校验单元,包括:
确定通道数量,根据所述通道数量确定校验信息,将所述校验信息存储至存储单元。
3.根据权利要求2所述的方法,其特征在于,所述确定通道数量,根据所述通道数量确定校验信息,包括:
确定通道数量与数据长度是否符合预定关系,所述预定关系包括:所述通道数量小于数据块的长度,所述数据长度为所述数据块长度的倍数;
若是,根据所述数据块的长度确定校验信息。
4.根据权利要求3所述的方法,其特征在于,所述根据所述数据块的长度确定校验信息,包括:
确定所述通道数量比所述数据块长度小的数值为第一数值;
设置第一数值个数的通道,使通道数量为所述通道数量与第一数值相加的和,所述第一数值个数的通道对应的数据为0;
根据所述通道数量确定校验信息。
5.一种电子设备,应用于固态硬盘SSD,其特征在于,包括:数量确定单元,生成单元,读取单元及数据恢复单元,其中:
数量确定单元用于当检测到所述固态硬盘中有固态硬盘存储单元出现故障时,确定出现故障的所述固态硬盘存储单元的数量,根据所述出现故障的固态硬盘存储单元的数量确定校验单元的数量;
所述生成单元用于生成校验单元,包括:确定数据存储单元中数据块的长度,根据所述数据块的长度确定校验信息,将所述校验信息存储至存储单元,生成校验单元,生成所述校验信息时,将每一个数据块,即第一级数据块分成多个大小相同的第一级子数据块,将每一个所述第一级子数据块分成多个第二级子数据块,若数据的长度与生成校验信息的数据的个数的倍数不匹配,所述数据的长度为条带中每个所述数据块的大小,则确定所述第二级子数据块的两个不同长度值,两个不同长度值包括:第一长度及第二长度,比较所述第一长度及所述第二长度的大小,当所述第一长度大于所述第二长度时,确定所述第二长度的数值为所述数据块的个数,根据所述数据块的个数、第一长度及第二长度确定校验信息;
所述读取单元用于从所述固态硬盘中未出现故障的存储单元中读取数据存储单元和校验单元;
所述数据恢复单元用于根据所述校验单元及所述数据存储单元中的数据,确定所述出现故障的固态硬盘存储单元中的数据。
6.根据权利要求5所述的电子设备,其特征在于,还包括:生成单元,
所述生成单元用于生成校验单元,包括:确定通道数量,根据所述通道数量确定校验信息,将所述校验信息存储至存储单元,生成校验单元。
CN201810001220.4A 2018-01-02 2018-01-02 一种硬盘处理方法及电子设备 Active CN108182126B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810001220.4A CN108182126B (zh) 2018-01-02 2018-01-02 一种硬盘处理方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810001220.4A CN108182126B (zh) 2018-01-02 2018-01-02 一种硬盘处理方法及电子设备

Publications (2)

Publication Number Publication Date
CN108182126A CN108182126A (zh) 2018-06-19
CN108182126B true CN108182126B (zh) 2020-11-20

Family

ID=62549793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810001220.4A Active CN108182126B (zh) 2018-01-02 2018-01-02 一种硬盘处理方法及电子设备

Country Status (1)

Country Link
CN (1) CN108182126B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012792A (zh) * 2010-11-02 2011-04-13 华中科技大学 一种快速重构的raid-6编码及重构方法
CN104461926A (zh) * 2014-11-27 2015-03-25 记忆科技(深圳)有限公司 一种基于二维raid的固态硬盘数据保护方法
CN104866244A (zh) * 2015-05-31 2015-08-26 上海交通大学 一种平衡条带写的raid-6i/o调度方法
CN106250058A (zh) * 2016-07-27 2016-12-21 浪潮(北京)电子信息产业有限公司 一种基于可变条带的raid维护方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6891690B2 (en) * 2002-11-20 2005-05-10 International Business Machines Corporation On-drive integrated sector format raid error correction code system and method
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
CN102314322B (zh) * 2011-07-01 2015-04-15 杭州华三通信技术有限公司 一种基于raid阵列的数据处理方法和设备
CN102495777B (zh) * 2011-12-13 2014-10-22 百度在线网络技术(北京)有限公司 硬盘故障处理方法及处理装置
CN103577274B (zh) * 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
CN104484251B (zh) * 2014-12-11 2018-10-02 华为技术有限公司 一种硬盘故障的处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102012792A (zh) * 2010-11-02 2011-04-13 华中科技大学 一种快速重构的raid-6编码及重构方法
CN104461926A (zh) * 2014-11-27 2015-03-25 记忆科技(深圳)有限公司 一种基于二维raid的固态硬盘数据保护方法
CN104866244A (zh) * 2015-05-31 2015-08-26 上海交通大学 一种平衡条带写的raid-6i/o调度方法
CN106250058A (zh) * 2016-07-27 2016-12-21 浪潮(北京)电子信息产业有限公司 一种基于可变条带的raid维护方法及系统

Also Published As

Publication number Publication date
CN108182126A (zh) 2018-06-19

Similar Documents

Publication Publication Date Title
CN107391026B (zh) 闪存装置及闪存存储管理方法
JP4192154B2 (ja) エラー訂正のためのデータの分割
US7162678B2 (en) Extended error correction codes
US5581690A (en) Method and apparatus for preventing the use of corrupt data in a multiple disk raid organized storage system
CN101868785B (zh) 生成数据存储系统的并行恢复策略
US7076723B2 (en) Error correction codes
CN107403646A (zh) 闪存装置及闪存存储管理方法
EP3260980B1 (en) An apparatus and method for generating an error code for a block comprising a plurality of data bits and a plurality of address bits
US6751769B2 (en) (146,130) error correction code utilizing address information
EP1828899B1 (en) Method and system for syndrome generation and data recovery
US8489916B2 (en) Multi-disk fault-tolerant system, method for generating a check block, and method for recovering a data block
US7523364B2 (en) Double DRAM bit steering for multiple error corrections
JPS60163138A (ja) エラ−訂正方式
TWI707345B (zh) 快閃記憶體裝置及快閃記憶體儲存管理方法
KR20100111680A (ko) 메모리 어레이의 에러 수정 방법
US6141789A (en) Technique for detecting memory part failures and single, double, and triple bit errors
JPS58215800A (ja) メモリ再構成方法
US7653829B2 (en) Method of data placement and control in block-divided distributed parity disk array
US7065697B2 (en) Systems and methods of partitioning data to facilitate error correction
CN108182126B (zh) 一种硬盘处理方法及电子设备
CN112612637A (zh) 内存数据存储方法、内存控制器、处理器芯片及电子设备
US7246301B2 (en) Method for storage array error correction
US6901552B1 (en) System for storing data words in a RAM module
CN112256478A (zh) 一种单磁盘故障的修复方法、系统、设备及存储介质
US7051265B2 (en) Systems and methods of routing data to facilitate error correction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant