一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于SSD的物理块分配顺序获取方法及数据恢复方法与流程

2022-02-20 23:26:15 来源:中国专利 TAG:
用于ssd的物理块分配顺序获取方法及数据恢复方法
技术领域
:1.本技术涉及数据处理领域,主要涉及一种基于oob重组ssd数据的物理块分配顺序获取方法以及一种ssd数据恢复方法。
背景技术
::2.ssd(solidstatedrives),也称作固态硬盘,其主要由ssd控制器和flash阵列组成,具有良好的随机读写性能,正在逐步取代传统机械硬盘。由于flash芯片在数据写入后需要先擦出后写入,导致文件系统的直接进行flash读写的性能不佳。为了解决这个问题,ssd引入了trim指令,文件系统删除文件后通过trim通知ssd主控将文件的数据和索引一并删除。因此,ssd上的文件删除后,从逻辑地址上就无法再读取到文件的数据,也就无法进行数据恢复。发明人发现,当前市面对ssd删除数据的恢复主要采用oob上保存的lba(logicalblockaddressing逻辑块寻址)地址进行ssd进行重组数据,该方法在多个pba(physicsblockaddressing物理块寻址)对应同一个lba地址情况下无法准确重组出ssd的数据。因此现有技术缺乏一种切实有效的解决以上技术问题的创新方法。技术实现要素:3.针对现有技术中的以上缺陷,本技术提出一种基于oob(outofband带外数据)重组ssd数据的物理块分配顺序计算方法及装置以及一种ssd数据恢复方法。该方法通过提取ssd的flash物理数据后,提升数据数据重组的准确性,实现数据恢复的正确性。4.根据本发明的一方面,提出了一种用于ssd的物理块分配顺序获取方法,包括以下步骤:5.s1、从ssd上所有块中读取第一个页的oob数据存入集合b中;6.s2、从所述集合b中的oob数据搜索是否存在数据类型为块映射信息表的数据,并且从存在块映射信息表的数据所在的块上读取所有的oob数据存入集合fh中,并且计算存入集合fh的oob数据的数量,记为n;7.s3、依从新到旧的顺序读取所述集合fh中的各组oob数据,并且分别读取各组oob数据所对应的物理页的数据,并且依次找出各组oob数据所对应的物理页中新出现的数据块,并且将在越新的所述oob数据所对应的物理页中新出现的数据块设定为具有越新的物理块分配顺序。8.利用上述方法可利用ssd映射表映射信息日志,巧妙地获取ssd中实际的有效数据块的真实分配顺序,从而便于后续的数据恢复操作。9.在优先实施例中,所述步骤s3具体包括:10.s31、从所述集合fh中读取当前最新的一组oob数据并且验证该当前最新的一组oob数据是否为映射信息表;11.s32、在被验证为映射信息表的情况下,将该当前最新的一组oob数据记为f0;12.s33、从所述集合fh中读取次新的一组oob数据并且在验证该次新的一组oob数据为映射信息表后将其记为f1;读取所述f0和所述f1所对应的物理页的数据,并将所述f0所对应的物理页相比于f1所对应的物理页新出现的数据块的分配顺序设定为sn,将所述sn的值设为n;13.s34、设定sn=sn-1,并且将当前f1当做新的f0,并且重复执行s33这一步骤,将新出现的数据块的分配顺序设为sn;以及14.s35、重复执行步骤s6以遍历所述集合fh中所有的oob数据,从而完成块分配顺序的计算。15.利用以上流程步骤可以遍历ssd中存储的所有数据块,然后获得所有数据块之间的相对分配顺序,从而判断各个数据块的新旧,块分配顺序越大的块越新,块分配顺序。16.在优选实施例中,所述步骤s1具体包括:从ssd上读取通道号为0、片选号为0、plane号为0并且页号为0的oob数据放入集合b中。以此获取ssd中所有块第一个页的oob数据中数据类型为块映射表的数据块。17.在优选实施例中,所述步骤s2中的读取所有的oob数据并且存入集合fh中具体包括:将所有的oob数据按照页排序规则(psr)进行排序后放入所述集合fh中。所述页排序规则包括:按页编号排序,页编号越大越排前面;页编号相同的情况下,按片选号排序,片选号越大越排前面;页编号和片选号都相同的情况下,按通道号排序,通道号越大越排前面。由此使得放入集合fh中的同一个块的oob数据都按照页排序规则进行排序,以便于后续的处理。18.在本发明的第二方面,提出了一种ssd数据恢复方法,包括以下步骤:19.a1、根据上文表述的方法获得所述ssd中的块分配顺序,并且按块排序规则(bsr)对所述ssd中的块进行排序以形成包括待恢复数据块的集合d,所述块排序规则包括:将待排序的块集合按照所述块分配顺序排序,块分配顺序越大的越排前面;在块分配顺序相同时,块擦除次数越多的越排前面;20.a2、从所述集合d的前面取出一个未处理的块记为di;21.a3、读取所述di的所有页中的oob数据,并且按照同一个块内的页排序规则(psr)进行排序后放入容器t中;22.a4、从所述容器t的最前面读取一组未处理的oob数据,从该组未处理的oob数据中取出各簇号对应的lba地址,对各簇号进行重新映射处理;23.a5、重复执行所述步骤a4处理容器t内的所有元素;以及24.a6、重复执行所述步骤a2-a5,以重组完成正常的映射信息表。25.在优选实施例中,a4中的所述对各簇号进行重新映射处理的步骤具体包括:26.建立重组的映射信息表;以及27.从未处理簇号中取出簇号最大的簇的lba,在所述重组的映射信息表中查询该簇号最大的簇的lba是否有对应的pba,如否,则将该lba填入所述重组的映射信息表中。28.该方法利用计算出的各个数据块的分配顺序,再结合ssd内部oob保存的lba对ssd进行镜像重组,重组后的逻辑镜像包含了被ssd的trim指令删除的数据,从而该方法能够有效地提升恢复ssd被删除数据的准确性,为ssd的数据恢复提供可能。29.在优选实施例中,所述a1还包括以下步骤:从所述集合b中读取数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。30.在本发明的另一方面,提出了一种计算机可读介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实施如上文所述的方法。31.在本发明的另一方面,提出了一种计算系统,包括处理器和存储器,所述处理器被配置为执行如上文所述的方法。32.通过本技术提出的以上方法等,可以利用ssd映射表映射信息日志,巧妙地计算出ssd的块分配顺序,再通过flashoob记载的lba信息,重新翻译ssd的逻辑镜像,最终实现数据恢复。该方法能够极大地提升ssd数据恢复的准确性。附图说明33.包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。附图的元件不一定是相互按照比例的。同样的附图标记指代对应的类似部件。34.图1示出了根据本发明的一个实施例的用于ssd的物理块分配顺序获取方法的示意性流程图;35.图2示出了根据本发明的一个具体实施例的用于具体计算分配顺序的流程图;36.图3示出了根据本发明的一个实施例的ssd数据恢复方法的示意性流程图;37.图4示出了利用现有技术进行ssd数据恢复的结果示意图;38.图5示出了利用本发明的方法进行ssd数据恢复的结果示意图。具体实施方式39.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。40.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。41.本技术的发明人研究发现,由于ssd引入了trim指令,数据删除后其逻辑地址也相应抹零,传统基于文件系统的数据恢复已经无法恢复出被删除的数据,另外研究发现通过先导出nandflash的数据,再将nandflash数据重组出逻辑镜像,可以实现ssd的数据恢复,并且通常ssd会在nandflash每个页的oob中保存其映射的lba。然而一个ssd中出现多个页指向同一个lba的情况非常多,单纯利用oob中的lba无法重组出逻辑镜像。大量试验发现,依照ssd申请块的先后顺序,出现多个pba指向同一个lba时候,使用最后一个分配的flash数据块进行重组便可以成功重组出正确的逻辑镜像。然而由于无法获取ssd中各flash块分配顺序,正确重组出逻辑镜像依旧十分困难。42.针对这个问题,本技术的发明人在对ssd原理深入研究的基础上,提出了创新的一种物理块分配顺序获取方法以及相应的ssd数据恢复方法。该方法首先利用ssd映射表映射信息日志,巧妙地计算出ssd的块分配顺序,再通过flashoob记载的lba信息,重新翻译ssd的逻辑镜像,最终实现数据恢复。该方法能够极大地提升ssd数据恢复的准确性。43.下面结合ssd物理地址分配原理来解释下本技术提出的方法。44.由于nandflash的数据修改需要先擦出再写入,这要求文件系统在读写时候做大量操作,为了让ssd能够像传统机械硬盘操作一样简单,ssd主控引入了ftl(flashtransitionlayer)层(闪存转换层)。该ftl层将nandflash的物理地址描述成:块地址、页地址、簇地址、通道号、片选号、plane号,再将物理地址进行重映射成连续的lba,使得ssd展示给host端为连续并且可覆盖写的lba空间。下面的表1示出了一个物理块号与逻辑块号之间的关系的示例,用于展示其映射原理。45.表146.lbn(逻辑块号)pbn(物理块号)0312263147.然而ssd主控不会立即擦出数据再写入数据而是将待写入的逻辑地址映射到新的物理地址上,再将数据写到新的物理地址,造成了nandflash中有多个页的oob中的物理块指向同一个lba。并且,未写入数据的lba并不分配实际的pba空间,仅记载该lba未分配。48.ftl算法的好坏直接决定ssd的性能优劣,并且决定ssd的数据安全,为了避免异常掉电情况下,ssd内部电容放电的功率不足以保存ssd的状态和数据,ftl在每个页的oob中记载其对应的逻辑地址、块状态等属性。其拓扑如表2所示。49.表250.lba数据类型其他数据ecc51.其中各个字段含义如下:52.lba:当前物理地址映射的逻辑地址53.数据类型:主要是用来记录该数据块的类型为系统数据块、用户数据、映射信息表、块擦除次数表;54.其他数据:如字面含义;55.ecc:校验数据。56.发明人经过大量研究发现ssd内部维护一张映射信息表和块擦除次数表。映射信息表用于记载块分配情况,以及块内有效数据的数量。ftl每次分配新的块都会记载在映射信息表中,并且记载块内有效页的个数。块擦除次数表主要记录块的擦除次数,用于负载均衡使用。发明人发现可以利用映射信息表的历史记录结合块擦除次数表计算出各块的分配顺序,从而提升数据恢复的准确性。57.下面结合图1描述根据本技术的一个实施例的用于ssd的物理块分配顺序获取方法。58.如图1所示,该方法包括以下步骤s1-s3。59.s1、从ssd上所有块中读取第一个页的oob数据存入集合b中。具体地将所有块中的通道号为0、片选号为0、plane号为0并且页号为9的oob数据存入集合b中。如上文所述,块中的第一个页的oob数据存储有映射信息表、块擦除次数表等数据。60.s2、从所述集合b中的oob数据搜索是否存在数据类型为块映射信息表的数据,并且从存在块映射信息表的数据所在的块上读取所有的oob数据存入集合fh中,并且计算存入集合fh的oob数据的数量,记为n。从而集合fh中存储有映射信息块上所有的oob数据集合。映射信息块包含了映射信息表的所有历史记录。61.优选地,可以将读取的所有oob数据按照页排序规则(psr)进行排序后放入所述集合fh中,该页排序规则可包括:按页编号排序,页编号越大越排前面;页编号相同的情况下,按片选号排序,片选号越大越排前面;页编号和片选号都相同的情况下,按通道号排序,通道号越大越排前面。62.根据该页排序规则可知:1、按照页编号排序,oob数据中页编号大的排前面,页编号小的排后面;2、页编号相同的情况下,按片选号排序,片选号大的排前面,片选号小的排后面;3、在页编号和片选号都相同的情况下,按通道号排序,通道号大的排前面,通道号小的排后面。63.s3、依从新到旧的顺序读取所述集合fh中的各组oob数据,并且分别读取各组oob数据所对应的物理页的数据,并且依次找出各组oob数据所对应的物理页中新出现的数据块,并且将在越新的所述oob数据所对应的物理页中新出现的数据块设定为具有越新的物理块分配顺序。应当理解的是,fh中新的oob数据相对于次新的oob数据块新出现的数据块应当被认为具有更新的物理块分配顺序。64.利用上述方法可利用ssd映射表映射信息日志,巧妙地获取ssd中实际的有效数据块的真实分配顺序,从而便于后续的数据恢复操作。65.下面结合图2,描述一个实施例中,实现步骤s3的具体步骤可以包括以下步骤s31-s35。s31、从所述集合fh中读取当前最新的一组oob数据并且验证该当前最新的一组oob数据是否为映射信息表;s32、在被验证为映射信息表的情况下,将该当前最新的一组oob数据记为f0;s33、从所述集合fh中读取次新的一组oob数据并且在验证该次新的一组oob数据为映射信息表后将其记为f1;读取所述f0和所述f1所对应的物理页的数据,并将所述f0所对应的物理页相比于f1所对应的物理页新出现的数据块的分配顺序设定为sn;s34、设定sn=sn-1,并且将当前f1当做新的f0,并且重复执行s33这一步骤,将新出现的数据块的分配顺序设为sn;以及s35、重复执行步骤s6以遍历所述集合fh中所有的oob数据,从而完成块分配顺序的计算。66.其中首先需要从fh中找出为映射信息表的oob数据,然后将先后出现的映射信息表分别对应的物理块进行比较,以找出在更新的映射信息表中新出现的数据块,并且将新出现的数据块的分配顺序进行设定。依此方式遍历fh中所有的映射信息表以将所有的数据块的分配顺序排好。67.下面结合图3,描述根据本技术的一个实施例的ssd数据恢复方法。该方法可包括以下步骤a1-a6。68.a1、根据上文表述的分配顺序获取方法获得所述ssd中的块分配顺序,并且按块排序规则(bsr)对所述ssd中的块进行排序以形成包括待恢复数据块的集合d,所述块排序规则包括:将待排序的块集合按照所述块分配顺序排序,块分配顺序越大的越排前面;在块分配顺序相同时,块擦除次数越多的越排前面。69.a2、从所述集合d的前面取出一个未处理的块记为di;70.a3、读取所述di的所有页中的oob数据,并且按照同一个块内的页排序规则(psr)进行排序后放入容器t中;71.a4、从所述容器t的最前面读取一组未处理的oob数据,从该组未处理的oob数据中取出各簇号对应的lba地址,对各簇号进行重新映射处理;72.a5、重复执行所述步骤a4处理容器t内的所有元素;以及73.a6、重复执行所述步骤a2-a5,以重组完成正常的映射信息表。74.其中块分配顺序是通过如下方法获取的:获取ssd上所有块第一个页的oob数据,读取第一个页oob记载数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。75.在优选实施例中,a4中的所述对各簇号进行重新映射处理的步骤具体包括:建立重组的映射信息表;以及从未处理簇号中取出簇号最大的簇的lba,在所述重组的映射信息表中查询该簇号最大的簇的lba是否有对应的pba,如否,则将该lba填入所述重组的映射信息表中。其中,重组的映射信息表可表示为remaptable。76.应当理解的是,所述a1还可包括以下步骤:从所述集合b中读取数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。77.下面从原理部分具体描述以上方法是如何提升数据恢复正确性。78.获取ssd上所有块第一个页的oob数据,读取第一个页oob记载数据类型为块映射表的数据块,则该块包含了映射信息表的所有历史记录。从该数据块中提取所有的映射信息表,并计算获取到的映射信息表个数为n,同时记页编号越大的映射信息表越新;页编号相同时片选号越大的映射信息表越新;片选好相同时通道号越大的映射信息表越新。将所提取到的映射信息表按照新旧进行排序。获取ssd上所有块第一个页的oob数据,读取第一个页oob记载数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。79.比较最新映射信息表上记录的有效数据块去掉其在第二新映射信息表上的有效数据块,将剩余数据块中分配顺序为0的有效数据块的块分配顺序记住n。同样方法一次比较第二新与第三新的有效数据块,分配顺序几位n-1。如此遍历完整个映射信息表,便可以计算出有效块的分配顺序。80.对于一个lba地址,可能存在大量多个pba指向该lba的情况,为了确保数据恢复的正确性,应该将最新的pba映射到该lba。具体判断pba分配新旧的方法为:81.1、利用上述方法计算出来的块分配顺序可以判断各块的新旧,块分配顺序越大的块越新,块分配顺序相同的块,擦除次数越多的块越新。82.2、同一个块内,页编号越大越新、片选号越大越新、通道号越大越新、plane号越大越新。83.该方法利用计算出的各个数据块的分配顺序,再结合ssd内部oob保存的lba对ssd进行镜像重组,重组后的逻辑镜像包含了被ssd的trim指令删除的数据,从而该方法能够有效地提升恢复ssd被删除数据的准确性,为ssd的数据恢复提供可能。84.在本发明的另一方面,提出了一种计算机可读介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实施如上文所述的方法。85.在本发明的另一方面,提出了一种计算系统,包括处理器和存储器,所述处理器被配置为执行如上文所述的方法。86.通过本技术提出的以上方法等,可以利用ssd映射表映射信息日志,巧妙地计算出ssd的块分配顺序,再通过flashoob记载的lba信息,重新翻译ssd的逻辑镜像,最终实现数据恢复。该方法能够极大地提升ssd数据恢复的准确性。87.下面参照图4-5描述分别根据现有技术的方法以及根据本发明的方法进行ssd数据恢复处理产生的不同结果。88.实验方式包括:在ssd中放入一些文件,并且随机删除部分文件;使用现有技术的方法以及本发明提出的ssd数据恢复方法分别重做镜像,并且挂载到windows上;比对恢复流程做出来的镜像磁盘的逻辑数据以及预览图,发现根据现有技术的方法无法恢复数据(如图4a所示),而根据本发明提出的方法已经恢复数据(如图4b及图5所示)。89.本发明为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。90.通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例或者实施例的某些部分所述的装置。91.最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献