发明内容
本发明实施例提供一种数据恢复方法、数据恢复系统以及固态硬盘,可恢复固态硬盘中出现存储错误问题的数据。
第一方面,本发明实施例提供了一种数据恢复方法,该方法应用于数据恢复系统中的固态硬盘,所述数据恢复系统还包括上位机,所述固态硬盘包括控制单元、闪存存储器以及缓存存储器,所述方法包括:
若接收到所述上位机发送的数据恢复指令,将所述闪存存储器中的数据读取到所述缓存存储器中;
在所述缓存存储器中对所述数据进行纠错处理,并将经过纠错处理后的所述数据发送给所述上位机;
对所述闪存存储器进行修复处理,并在修复完成后向所述上位机发送通知消息;
接收所述上位机发送的所述数据,并将所述数据对应存储到所述闪存存储器中。
其进一步的技术方案为,所述将所述闪存存储器中的数据读取到所述缓存存储器中,包括:
根据所述闪存存储器的容量信息以及所述缓存存储器的容量信息将所述闪存存储器划分为多个储存区域,其中,每个所述储存区域的容量均小于所述缓存存储器的容量;
获取所述储存区域内的数据作为子数据,并生成所述储存区域与所述储存区域的子数据的对应关系;
逐一将各所述储存区域中的子数据读取到所述缓存存储器中。
其进一步的技术方案为,所述在所述缓存存储器中对所述数据进行纠错处理,并将经过纠错处理后的数据发送给上位机,包括:
判断所述数据是否能通过ECC校验;
若判断结果为所述数据能通过ECC校验,直接将所述数据发送给所述上位机;
若判断结果为所述数据不能通过ECC校验,通过预设的数据纠错算法对所述数据进行纠错处理,并将经过纠错处理后的数据发送给所述上位机。
其进一步的技术方案为,所述接收所述上位机发送的所述数据,并将所述数据对应存储到所述闪存存储器中,包括:
接收所述上位机发送的子数据,并将所述子数据存储到所述缓存存储器中;
根据所述对应关系确定所述子数据对应的储存区域,并将所述子数据从所述缓存存储器转存到所述子数据对应的储存区域中。
第二方面,本发明实施例提供了一种固态硬盘,该固态硬盘应用于数据恢复系统中,所述数据恢复系统还包括上位机,所述固态硬盘包括控制单元、闪存存储器以及缓存存储器,所述控制单元分别与所述闪存存储器以及所述缓存存储器连接,所述控制单元包括:
第一读取单元,用于若接收到所述上位机发送的数据恢复指令,将所述闪存存储器中的数据读取到所述缓存存储器中;
纠错单元,用于在所述缓存存储器中对所述数据进行纠错处理,并将经过纠错处理后的数据发送给所述上位机;
修复单元,用于对所述闪存存储器进行修复处理,并在修复完成后向所述上位机发送通知消息;
第一接收单元,用于接收所述上位机发送的所述数据,并将所述数据对应存储到所述闪存存储器中。
其进一步的技术方案为,所述第一读取单元包括:
划分单元,用于根据所述闪存存储器的容量信息以及所述缓存存储器的容量信息将所述闪存存储器划分为多个储存区域,其中,每个所述储存区域的容量均小于所述缓存存储器的容量;
生成单元,获取所述储存区域内的数据作为子数据,并生成所述储存区域与所述储存区域的子数据的对应关系;
第二读取单元,用于逐一将各所述储存区域中的子数据读取到所述缓存存储器中。
其进一步的技术方案为,所述纠错单元包括:
判断单元,用于判断所述数据是否能通过ECC校验;
第一发送单元,用于若判断结果为所述数据能通过ECC校验,直接将所述数据发送给所述上位机;
第二发送单元,用于若判断结果为所述数据不能通过ECC校验,通过预设的数据纠错算法对所述数据进行纠错处理,并将经过纠错处理后的数据发送给所述上位机。
其进一步的技术方案为,所述第一接收单元包括:
第二接收单元,用于接收所述上位机发送的子数据,并将所述子数据存储到所述缓存存储器中;
储存单元,用于根据所述对应关系确定所述子数据对应的储存区域,并将所述子数据从所述缓存存储器转存到所述子数据对应的储存区域中。
第三方面,本发明实施例提供了一种数据恢复系统,所述数据恢复系统包括上位机、中间存储器以及如第二方面提供的固态硬盘;所述上位机分别与所述固态硬盘以及所述中间存储器连接;其中:
所述上位机用于根据用户指令获取所述固态硬盘的数据并将该数据转存到中间存储器中;以及在所述固态硬盘将自身的闪存存储器修复后,将来自所述固态硬盘的数据重新发送给所述固态硬盘。
其进一步的技术方案为,所述数据恢复系统还包括连接器,所述上位机通过所述连接器分别与所述固态硬盘以及所述中间存储器连接。
本实施例的技术方案,在闪存存储器出现存储错误问题时,通过固态硬盘的控制单元以及缓存存储器的相互配合,能够实现将固态硬盘闪存存储器中的数据修复后,发送给上位机。之后,固态硬盘在将闪存存储器修复后,从上位机处获取数据重新存储到闪存存储器中,从而一方面恢复了闪存存储器中的数据,确保了闪存存储器中数据的可靠性,另一方面实现了对闪存存储器的修复。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本发明实施例旨在恢复出现存储错误问题的闪存存储器中的数据,并且对闪存存储器进行修复。参见图1,其为本发明实施例提供的一种数据恢复方法的示意流程图,该方法应用于数据恢复系统中的固态硬盘,所述数据恢复系统还包括上位机,所述固态硬盘包括控制单元、闪存存储器以及缓存存储器,如图所示,该方法包括以下步骤S101-S104。
S101,若接收到上位机发送的数据恢复指令,将闪存存储器中的数据读取到缓存存储器中。
具体实施中,在接收到上位机发送的数据恢复指令时,固态硬盘的控制单元将闪存存储器中的数据读取到缓存存储器中。并且在缓存存储器中对数据进行进一步的纠错处理,修复出现异常的数据。
S102,在缓存存储器中对数据进行纠错处理,并将经过纠错处理后的数据发送给上位机。
具体实施中,固态硬盘的控制单元在缓存存储器中对数据进行纠错处理,将错误的数据修正。之后,固态硬盘的控制单元将经过纠错处理的数据发送给上位机,由上位机代为保存到中间存储器中。可见,通过控制单元与缓存存储器的配合,可实现将闪存存储器中的数据修复,并发送给上位机。
S103,对闪存存储器进行修复处理,并在修复完成后向上位机发送通知消息。
具体实施中,固态硬盘的控制单元在将闪存存储器中的所有数据都发送给上位机后,对闪存存储器进行修复处理。例如,通过格式化闪存存储器能够将其修复。
在将闪存存储器修复后,固态硬盘的控制单元向上位机发送通知消息,以通知上位机将数据返还回来。
S104,接收上位机发送的数据,并将数据对应存储到闪存存储器中。
具体实施中,固态硬盘的控制单元在接收到上位机发送的数据时,将数据对应存储回闪存存储器中,从而在实现了对闪存存储器进行修复的同时,又恢复了闪存存储器的数据。
本实施例的技术方案,在闪存存储器出现存储错误问题时,通过固态硬盘的控制单元以及缓存存储器的相互配合,能够实现将固态硬盘闪存存储器中的数据修复后,发送给上位机。之后,固态硬盘在将闪存存储器修复后,从上位机处获取数据重新存储到闪存存储器中,从而一方面恢复了闪存存储器中的数据,确保了闪存存储器中数据的可靠性,另一方面实现了对闪存存储器的修复。
参见图2,在某些实施例,例如本实施例中,以上步骤S101可通过以下具体的实施方式实现,由图可知,该实施方式包括以下步骤S201-S203。
S201,根据闪存存储器的容量信息以及缓存存储器的容量信息将闪存存储器划分为多个储存区域。
其中,每个储存区域的容量均小于缓存存储器的容量。
具体实施中,固态硬盘的控制单元分别扫描获取闪存存储器以及缓存存储器的容量信息。并且根据闪存存储器的容量信息以及缓存存储器的容量信息将闪存存储器划分为多个储存区域,其中,需要确保每个储存区域容量小于缓存存储器的容量。
S202,获取储存区域内的数据作为子数据,并生成储存区域与储存区域的子数据的对应关系。
具体实施中,在划分好区域之后,获取储存区域内的数据作为子数据。子数据是指储存在储存区域内的数据,其为闪存存储器中全部数据的一部分。生成各储存区域与各储存区域内的子数据的对应关系。例如,建立储存区域与子数据的对应关系表。通过该对应关系表能够确认子数据所属的储存区域,从而能够准确地将子数据正确地存储回储存区域中,确保了固态硬盘数据的准确性。
在生成了各储存区域与各储存区域内的子数据的对应关系后,将该对应关系储存,以便后续调用。
S203,逐一将各储存区域中的子数据读取到缓存存储器中。
具体实施中,由于缓存存储器的容量要比闪存存储器的容量要小,因此需要将闪存存储器划分为多个容量均小于缓存存储器的储存区域,并分多次逐一地将各储存区域中的子数据读取到缓存存储器中。需要说明的是,需要将缓存存储器中的一储存区域的子数据发送给上位机后,再读取下一储存区域的子数据到缓存存储器中。
参见图3,在某些实施例,例如本实施例中,以上步骤S102可通过以下具体的实施方式实现,由图可知,该实施方式包括以下步骤S301-S303。
S301,判断读取到缓存存储器中的数据是否能通过ECC校验。
具体实施中,首先判断读取到缓存存储器中的数据是否能通过ECC校验。ECC(Error Checking and Correcting,错误检查和纠正)校验,其具有发现数据错误,并且纠正数据错误的功能。
S302,若判断结果为读取到缓存存储器中的数据能通过ECC校验,直接将该数据发送给上位机。
具体实施中,如果判断结果为读取到缓存存储器中的数据能通过ECC校验,则说明该数据没有问题,此时直接将该数据发送给上位机。
S303,若判断结果为读取到缓存存储器中的数据不能通过ECC校验,通过预设的数据纠错算法对该数据进行纠错处理,并将经过纠错处理后的数据发送给上位机。
如果判断结果为读取到缓存存储器中的数据不能通过ECC校验,则说明该数据有问题,需要教正。此时,通过预设的数据纠错算法对该数据进行纠错处理。例如,通过预设的LDPC(Low Density Parity Check Code,低密度奇偶校验码)算法,来对数据进行纠错处理。在进行纠错处理,数据能够通过ECC校验之后,将数据发送给上位机。
参见图4,在某些实施例,例如本实施例中,以上步骤S104可通过以下具体的实施方式实现,由图可知,该实施方式包括以下步骤S401-S402。
S401,接收上位机发送的子数据,并将子数据存储到缓存存储器中。
具体实施中,上位机也是逐一的将各储存区域中的子数据发送给固态硬盘。固态硬盘的控制单元在接收到上位机发送的子数据时,首先将子数据存储到缓存存储器中。
S402,根据各储存区域与各储存区域内的子数据的对应关系确定该子数据对应的储存区域,并将该子数据从缓存存储器转存到子数据对应的储存区域中。
具体实施中,固态硬盘的控制单元首先根据各储存区域与各储存区域内的子数据的对应关系确定该子数据对应的储存区域,然后再并将该子数据从缓存存储器转存到子数据对应的储存区域中。
需要说明的是,固态硬盘的控制单元将重复以上步骤S401-S402,直至将所有的子数据都存储到对应的储存区域。
本发明实施例还提供一种固态硬盘50,该固态硬盘50包括用于执行前述任一项所述的方法的单元。具体地,参见图5,其为本发明实施例提供的一种固态硬盘50的示意框图。所述固态硬盘50应用于数据恢复系统中,所述数据恢复系统还包括上位机。由图可知,所述固态硬盘50包括控制单元51、闪存存储器52以及缓存存储器53,所述控制单元分别与所述闪存存储器52以及所述缓存存储器53连接,所述控制单元51包括第一读取单元511、纠错单元512、修复单元513以及第一接收单元514。
第一读取单元511,用于若接收到所述上位机发送的数据恢复指令,将所述闪存存储器中的数据读取到所述缓存存储器中。
纠错单元512,用于在所述缓存存储器中对所述数据进行纠错处理,并将经过纠错处理后的数据发送给所述上位机。
修复单元513,用于对所述闪存存储器进行修复处理,并在修复完成后向所述上位机发送通知消息。
第一接收单元514,用于接收所述上位机发送的所述数据,并将所述数据对应存储到所述闪存存储器中。
参见图6,在某些实施例。例如本实施例中,所述第一读取单元511包括划分单元5111、生成单元5112以及第二读取单元5113。
划分单元5111,用于根据所述闪存存储器的容量信息以及所述缓存存储器的容量信息将所述闪存存储器划分为多个储存区域,其中,每个所述储存区域的容量均小于所述缓存存储器的容量。
生成单元5112,用于获取所述储存区域内的数据作为子数据,并生成所述储存区域与所述储存区域的子数据的对应关系。
第二读取单元5113,用于逐一将各所述储存区域中的子数据读取到所述缓存存储器中。
参见图7,在某些实施例。例如本实施例中,所述纠错单元512包括判断单元5121、第一发送单元5122以及第二发送单元5123。
判断单元5121,用于判断所述数据是否能通过ECC校验。
第一发送单元5122,用于若判断结果为所述数据能通过ECC校验,直接将所述数据发送给所述上位机。
第二发送单元5123,用于若判断结果为所述数据不能通过ECC校验,通过预设的数据纠错算法对所述数据进行纠错处理,并将经过纠错处理后的数据发送给所述上位机。
参见图8,在某些实施例。例如本实施例中,所述第一接收单元514包括第二接收单元5141以及储存单元5142。
第二接收单元5141,用于接收所述上位机发送的子数据,并将所述子数据存储到所述缓存存储器中。
储存单元5142,用于根据所述对应关系确定所述子数据对应的储存区域,并将所述子数据从所述缓存存储器转存到所述子数据对应的储存区域中。
参见图9并结合图10,本发明实施例提供的一种数据恢复系统,由图可知,该数据恢复系统包括上位机60、中间存储器70以及如上实施例提供的固态硬盘50。各主要器件的介绍如下:
上位机60分别与固态硬盘50以及中间存储器70连接。固态硬盘50包括控制单元51、闪存存储器52以及缓存存储器53。控制单元51分别与闪存存储器52以及缓存存储器53连接。
工作原理如下:上位机60在接收到用户输入的用户指令时,将根据该用户指令获取固态硬盘50的数据并将该数据转存到中间存储器70中。需要说明的是,由于上位机60自身的储存容量较小,无法完成对固态硬盘50全部数据的转存,因此需要通过中间存储器70来转存固态硬盘50的数据。
固态硬盘50在将数据发送给上位机60之前将对数据进行ECC(Error Checkingand Correcting,错误检查和纠正)校验,以修复损坏的数据。之后固态硬盘50将自身的闪存存储器52修复,例如采用将闪存存储器52格式化的方式将其修复。在所述固态硬盘50将自身的闪存存储器52修复后,上位机60将来自固态硬盘50的数据重新发送给固态硬盘50。
本实施例提出的数据恢复系统,其包括固态硬盘50、上位机60以及中间存储器70,在固态硬盘50的闪存存储器52出现存储错误问题时,固态硬盘50将自身的数据发送给上位机60,由上位机60转存到中间存储器70中。固态硬盘50在将闪存存储器52修复后,上位机60再将数据重新返还给固态硬盘50,从而一方面恢复了固态硬盘59的闪存存储器52中的数据,确保了闪存存储器52中数据的可靠性,另一方面实现对闪存存储器52的修复。
参见图11并结合图10,在某些实施例,例如本实施例中,数据恢复系统还包括连接器80,连接器80与上位机60连接,上位机60通过连接器80分别与固态硬盘50以及中间存储器70连接。通过连接器80可方便上位机60与固态硬盘50以及中间存储器70的连接。
连接器包括第一数据接口81、第三数据接口83、第一供电接口82以及第二供电接口84。固态硬盘50包括第二数据接口54以及第一电源接口55。中间存储器70包括第四数据接口71以及第二电源接口72。
固态硬盘50的第二数据接口54通过相应的数据线与连接器80的第一数据接口81连接。固态硬盘50的第一电源接口55通过相应的电源线与连接器80的第一供电接口82连接。上位机60通过连接器80与固态硬盘50进行数据交互。同时,上位机60通过连接器80对固态硬盘50供电。
中间存储器70的第四数据接口71通过相应的数据线与连接器80的第三数据接口83连接。中间存储器70的第二电源接口72通过相应的电源线与连接器80的第二供电接口84连接。上位机60通过连接器80与中间存储器70进行数据交互。同时,上位机60通过连接器80对中间存储器70供电。
在某些实施例,例如本实施例中,闪存存储器52包括多个闪存芯片,各闪存芯片的容量相同。采用多个闪存芯片可扩大闪存存储器52的储存容量。
在一些实施例中,缓存存储器51为动态随机存取存储器。
在一些实施例中,中间存储器70为另一固态硬盘。
在一些实施例中,上位机60为计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、固态硬盘和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、固态硬盘和方法,可以通过其它的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。