一种固态硬盘启用TRIM命令后的数据恢复方法与流程

文档序号:23790274发布日期:2021-01-30 05:05阅读:710来源:国知局
一种固态硬盘启用TRIM命令后的数据恢复方法与流程
一种固态硬盘启用trim命令后的数据恢复方法
技术领域
[0001]
本发明属于信息安全技术及数据恢复领域,涉及一种提取固态硬盘的被删除数据的方法,尤其涉及一种固态硬盘启用trim命令后的数据恢复方法。


背景技术:

[0002]
在信息安全技术及数据恢复领域,硬盘容量的不断增加以及硬盘使用量不断扩大,同时,硬盘驱动器hdd类型的硬盘出货量在不断的下降,固态硬盘ssd的出货量在不断的提升。自2010年开始,固态硬盘ssd出货量开始快速增长,且连续九年保持10%以上的增长率:2015年的增长率为30.4%,2018年固态硬盘ssd出货量增长率为37.2%;预计2020年,固态硬盘ssd出货量将增至2亿片以上。
[0003]
固态硬盘ssd因读写速度快而得到了广泛的运用。随着固态硬盘ssd出货量不断提升,出现的问题也越来越多。其故障不仅受写入次数的限制,还受其他条件的影响,一些发布的安全报告表明,部分服务器和存储产品所用的固态硬盘存在缺陷,通电约32746小时后硬盘上的数据丢失,而且数据不可恢复,这也导致了非常严重的后果。
[0004]
现有技术中,固态硬盘ssd修复的方法主要有固件修复、芯片数据重组、接口转换、物理替换的等方法。但现有技术的问题是,要么技术方案太过复杂,要么替换的配件太过昂贵。
[0005]
针对数据恢复的角度来说,固态硬盘ssd存在trim机制,对于文件删除操作,操作系统会将文件删除标记为可用于新数据,然后向固态硬盘ssd发送trim命令,trim命令使操作系统得以通知固态硬盘ssd哪个页不再包含有效的数据,这些数据很有可能就会被不可逆地擦除,数据也无法恢复。现有技术中,尚无一种简单实用、无需额外费用的一种固态硬盘启用trim命令后的数据恢复方法。


技术实现要素:

[0006]
针对现有技术的不足,本发明提供了一种固态硬盘启用trim命令后的数据恢复方法,通过译码表过滤算法的调整方式恢复了trim数据,解决了逻辑层数据被清除时的数据无法恢复的技术问题。本发明申请包括以下步骤:
[0007]
s100:判断所述固态硬盘是否可以正常就绪,如果是,执行步骤s200,否则结束流程;
[0008]
s200:生成新的译码表项,包括以下步骤:
[0009]
s201:获取所有译码表项;
[0010]
s202:过滤译码表项;
[0011]
s300:创建新的译码表文件;
[0012]
s400:恢复所述固态硬盘启用trim后被删除的数据。
[0013]
优选地,所述步骤s100包括以下步骤:
[0014]
s101:采用sata接口将所述固态硬盘连接至电脑;
[0015]
s102:判断所述固态硬盘是否就绪,如果是,执行步骤s200,否则结束流程。
[0016]
优选地,所述步骤s201包括以下步骤:
[0017]
s2011:按页读取所述固态硬盘各个物理块的第一页;
[0018]
s2012:根据译码表项标识,判断当前页是否具有译码表项,如果是,执行步骤s2013,否则,执行步骤s2012;
[0019]
s2013:标记当前页所在的块的块号,将所标记的块号计入块号文件中;
[0020]
s2014:扫描所述块号文件的所计入块号中各页并获取各页的数据,如果当前页中具有译码表项,则提取当前译码表项。
[0021]
优选地,所述步骤s2012中判断当前页是否具有译码表项包括以下步骤:
[0022]
情况一:当前主控芯片为ps系列,按如下步骤进行判断:
[0023]
对于ps3111主控芯片,判断当前页管理区第27、第28字节的数据是否为0xff ab,如果是,则当前页具有译码表项;
[0024]
对于ps3108主控芯片,判断当前页管理区第3、第4字节的数据是否为0xc5c5,如果是,则当前页具有译码表项;
[0025]
对于ps3105主控芯片,判断当前页管理区第3、第4字节的数据是否为0xc2c2,如果是,则当前页具有译码表项;
[0026]
对于ps3109主控芯片,判断当前页管理区第1、第2字节的数据是否为0xc2 df,如果是,则当前页具有译码表项;或者判断当前页管理区第2、第3字节的数据是否为0x80ff且第5字节的数据是否为0xffff,如果是,则当前页具有译码表项;
[0027]
情况二:当前主控芯片为sm系列,按如下步骤进行判断:
[0028]
对于sm2258g主控芯片,判断当前页管理区第1、第2字节的数据是否不等于0xffff且不等于0x0000,同时,第3字节是否等于0x64,如果是,则当前页具有译码表项;
[0029]
对于sm2246xt主控芯片,判断当前页管理区第39、第40字节的数据是否不等于0xffff且不等于0x0000,同时,第17字节是否等于0x03,如果是,则当前页具有译码表项;
[0030]
对于sm2246en主控芯片,判断当前页管理区第1、第2字节的数据是否不等于0xffff且不等于0x0000,同时,第3字节是否等于0x64,如果是,则当前页具有译码表项;
[0031]
对于sm2256主控芯片,判断当前页管理区第1、第2字节的数据是否不等于0xffff且不等于0x0000,同时,第3字节是否等于0x64,如果是,则当前页具有译码表项。
[0032]
优选地,所述步骤s202包括以下步骤:
[0033]
s2021:将所获取的译码表项的各自逻辑地址按升序排序,按升序顺序每次取出逻辑地址相同的译码表项;
[0034]
s2022:执行第一过滤:各个译码表项包括各自译码表项的块号和页号,将相同块号的译码表项划分在同一组,各组中页号最大的译码表项为有效的译码表项,将各组中页号最大的译码表项记入第一译码表项,将各组中页号次大的译码表项记入第二译码表项;
[0035]
s2023:针对所述第一译码表项及所述第二译码表项中相同逻辑地址的译码表项,采用所述第二译码表项中的逻辑地址的译码表项替换所述第一译码表项中对应逻辑地址的译码表项,用以生成第三译码表项;
[0036]
s2024:执行第二过滤,将所述第三译码表项中未过滤的相同逻辑地址的译码表项进行过滤,使得相同逻辑地址的译码表项仅保留一个,并生成第四译码表项。
[0037]
优选地,所述步骤s2024包括:获取所述固态硬盘的固件信息,包括smart数据、未使用数据、故障页,所述固件信息用于管理所述固态硬盘的底层数据,通过所述固件信息及译码表项的参数中所包含的校验值,对译码表项进行检验过滤,排除无效的译码表项,并生成第四译码表项。
[0038]
优选地,所述步骤s300包括:根据所述第四译码表项计算物理地址与逻辑地址的映射关系,并将对应关系保存在译码表文件中。
[0039]
优选地,所述步骤s400包括:根据所述译码表文件,查找被删除数据的逻辑地址段,并将各个逻辑地址转换成相应的物理地址,通过各个所述相应物理地址提取trim开启后被删除的数据。
[0040]
通过本发明所通过的方法,可以简单实用、无需额外费用地提取固态硬盘启用trim命令后被删除的数据。
附图说明
[0041]
图1为本发明所提供的方法的总流程图;
[0042]
图2为本发明所提供实施例中包含译码表项标识的数据结构实例图。
具体实施方式
[0043]
图1示出了本发明所提供的方法的总流程图。如图1所示,包括以下步骤:
[0044]
s100:判断固态硬盘是否可以正常就绪,如果是,执行步骤s200,否则结束流程;
[0045]
步骤s100包括以下步骤:
[0046]
s101:采用sata接口将固态硬盘连接至电脑;
[0047]
s102:判断固态硬盘是否就绪,如果是,执行步骤s200,否则结束流程。
[0048]
s200:生成新的译码表项,包括以下步骤:
[0049]
s201:获取所有译码表项。步骤s201包括以下步骤:
[0050]
s2011:按页读取固态硬盘各个物理块的第一页;
[0051]
s2012:根据译码表项标识,判断当前页是否具有译码表项,如果是,执行步骤s2013,否则,执行步骤s2012;
[0052]
步骤s2012中判断当前页是否具有译码表项包括以下步骤:
[0053]
情况一:当前主控芯片为ps系列,按如下步骤进行判断:
[0054]
对于ps3111主控芯片,判断当前页管理区第27、第28字节的数据是否为0xff ab,如果是,则当前页具有译码表项;
[0055]
对于ps3108主控芯片,判断当前页管理区第3、第4字节的数据是否为0xc5c5,如果是,则当前页具有译码表项;
[0056]
对于ps3105主控芯片,判断当前页管理区第3、第4字节的数据是否为0xc2c2,如果是,则当前页具有译码表项;
[0057]
对于ps3109主控芯片,判断当前页管理区第1、第2字节的数据是否为0xc2 df,如果是,则当前页具有译码表项;或者判断当前页管理区第2、第3字节的数据是否为0x80ff且第5字节的数据是否为0xffff,如果是,则当前页具有译码表项;
[0058]
情况二:当前主控芯片为sm系列,按如下步骤进行判断:
[0059]
对于sm2258g主控芯片,判断当前页管理区第1、第2字节的数据是否不等于0xffff且不等于0x0000,同时,第3字节是否等于0x64,如果是,则当前页具有译码表项;
[0060]
对于sm2246xt主控芯片,判断当前页管理区第39、第40字节的数据是否不等于0xffff且不等于0x0000,同时,第17字节是否等于0x03,如果是,则当前页具有译码表项;
[0061]
对于sm2246en主控芯片,判断当前页管理区第1、第2字节的数据是否不等于0xffff且不等于0x0000,同时,第3字节是否等于0x64,如果是,则当前页具有译码表项;
[0062]
图2示出了本发明所提供实施例中包含译码表项标识的数据结构实例图。判断当前页管理区第1、第2字节的数据是否不等于0xffff且不等于0x0000,同时,第3字节是否等于0x64,如果是,则当前页具有译码表项。如图2所示,当前页管理区第1、第2字节的数据不等于0xffff且不等于0x0000,同时,第3字节等于0x64,因此,当前页具有译码表项,执行步骤s2013。
[0063]
对于sm2256主控芯片,判断当前页管理区第1、第2字节的数据是否不等于0xffff且不等于0x0000,同时,第3字节是否等于0x64,如果是,则当前页具有译码表项。
[0064]
s2013:标记当前页所在的块的块号,将所标记的块号计入块号文件中;
[0065]
s2014:扫描块号文件的所计入块号中各页并获取各页的数据,如果当前页中具有译码表项,则提取当前译码表项。
[0066]
s202:过滤译码表项。步骤s202包括以下步骤:
[0067]
s2021:将所获取的译码表项的各自逻辑地址按升序排序,按升序顺序每次取出逻辑地址相同的译码表项;
[0068]
s2022:执行第一过滤:各个译码表项包括各自译码表项的块号和页号,将相同块号的译码表项划分在同一组,各组中页号最大的译码表项为有效的译码表项,将各组中页号最大的译码表项记入第一译码表项,将各组中页号次大的译码表项记入第二译码表项;
[0069]
s2023:针对第一译码表项及第二译码表项中相同逻辑地址的译码表项,采用第二译码表项中的逻辑地址的译码表项替换第一译码表项中对应逻辑地址的译码表项,用以生成第三译码表项;
[0070]
s2024:执行第二过滤,将第三译码表项中未过滤的相同逻辑地址的译码表项进行过滤,使得相同逻辑地址的译码表项仅保留一个,并生成第四译码表项。
[0071]
步骤s2024包括:获取固态硬盘的固件信息,包括smart数据、未使用数据、故障页,固件信息用于管理固态硬盘的底层数据,通过固件信息及译码表项的参数中所包含的校验值,对译码表项进行检验过滤,排除无效的译码表项,并生成第四译码表项。
[0072]
s300:创建新的译码表文件。步骤s300包括:根据第四译码表项计算物理地址与逻辑地址的映射关系,并将对应关系保存在译码表文件中。
[0073]
s400:恢复固态硬盘启用trim后被删除的数据。
[0074]
步骤s400包括:根据译码表文件,查找被删除数据的逻辑地址段,并将各个逻辑地址转换成相应的物理地址,通过各个相应物理地址提取trim开启后被删除的数据。
[0075]
通过本发明提供的方法,解决了现有技术中尚无一种简单实用、无需额外费用的固态硬盘启用trim命令后的数据恢复方法的技术问题。
[0076]
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1