CN114063919B - 用于ssd的物理块分配顺序获取方法及数据恢复方法 - Google Patents
用于ssd的物理块分配顺序获取方法及数据恢复方法 Download PDFInfo
- Publication number
- CN114063919B CN114063919B CN202111341073.3A CN202111341073A CN114063919B CN 114063919 B CN114063919 B CN 114063919B CN 202111341073 A CN202111341073 A CN 202111341073A CN 114063919 B CN114063919 B CN 114063919B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- ssd
- oob
- oob data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种用于SSD的物理块分配顺序获取方法以及一种SSD数据恢复方法。该方法巧妙地计算出各个数据块的分配顺序,再结合SSD内部OOB保存的LBA对SSD进行镜像重组,重组后的逻辑镜像包含了被SSD的TRIM指令删除的数据。该方法能供有效地提升SSD删除数据恢复准确性,为SSD的数据恢复提供可能。
Description
技术领域
本申请涉及数据处理领域,主要涉及一种基于OOB重组SSD数据的物理块分配顺序获取方法以及一种SSD数据恢复方法。
背景技术
SSD(Solid State Drives),也称作固态硬盘,其主要由SSD控制器和Flash阵列组成,具有良好的随机读写性能,正在逐步取代传统机械硬盘。由于Flash芯片在数据写入后需要先擦出后写入,导致文件***的直接进行Flash读写的性能不佳。为了解决这个问题,SSD引入了TRIM指令,文件***删除文件后通过TRIM通知SSD主控将文件的数据和索引一并删除。因此,SSD上的文件删除后,从逻辑地址上就无法再读取到文件的数据,也就无法进行数据恢复。发明人发现,当前市面对SSD删除数据的恢复主要采用OOB上保存的LBA(LogicalBlock Addressing逻辑块寻址)地址进行SSD进行重组数据,该方法在多个PBA(PhysicsBlock Addressing物理块寻址)对应同一个LBA地址情况下无法准确重组出SSD的数据。因此现有技术缺乏一种切实有效的解决以上技术问题的创新方法。
发明内容
针对现有技术中的以上缺陷,本申请提出一种基于OOB(Out Of Band带外数据)重组SSD数据的物理块分配顺序计算方法及装置以及一种SSD数据恢复方法。该方法通过提取SSD的Flash物理数据后,提升数据数据重组的准确性,实现数据恢复的正确性。
根据本发明的一方面,提出了一种用于SSD的物理块分配顺序获取方法,包括以下步骤:
S1、从SSD上所有块中读取第一个页的OOB数据存入集合B中;
S2、从所述集合B中的OOB数据搜索是否存在数据类型为块映射信息表的数据,并且从存在块映射信息表的数据所在的块上读取所有的OOB数据存入集合FH中,并且计算存入集合FH的OOB数据的数量,记为N;
S3、依从新到旧的顺序读取所述集合FH中的各组OOB数据,并且分别读取各组OOB数据所对应的物理页的数据,并且依次找出各组OOB数据所对应的物理页中新出现的数据块,并且将在越新的所述OOB数据所对应的物理页中新出现的数据块设定为具有越新的物理块分配顺序。
利用上述方法可利用SSD映射表映射信息日志,巧妙地获取SSD中实际的有效数据块的真实分配顺序,从而便于后续的数据恢复操作。
在优先实施例中,所述步骤S3具体包括:
S31、从所述集合FH中读取当前最新的一组OOB数据并且验证该当前最新的一组OOB数据是否为映射信息表;
S32、在被验证为映射信息表的情况下,将该当前最新的一组OOB数据记为F0;
S33、从所述集合FH中读取次新的一组OOB数据并且在验证该次新的一组OOB数据为映射信息表后将其记为F1;读取所述F0和所述F1所对应的物理页的数据,并将所述F0所对应的物理页相比于F1所对应的物理页新出现的数据块的分配顺序设定为SN,将所述SN的值设为N;
S34、设定SN=SN-1,并且将当前F1当做新的F0,并且重复执行S33这一步骤,将新出现的数据块的分配顺序设为SN;以及
S35、重复执行步骤S6以遍历所述集合FH中所有的OOB数据,从而完成块分配顺序的计算。
利用以上流程步骤可以遍历SSD中存储的所有数据块,然后获得所有数据块之间的相对分配顺序,从而判断各个数据块的新旧,块分配顺序越大的块越新,块分配顺序。
在优选实施例中,所述步骤S1具体包括:从SSD上读取通道号为0、片选号为0、plane号为0并且页号为0的OOB数据放入集合B中。以此获取SSD中所有块第一个页的OOB数据中数据类型为块映射表的数据块。
在优选实施例中,所述步骤S2中的读取所有的OOB数据并且存入集合FH中具体包括:将所有的OOB数据按照页排序规则(PSR)进行排序后放入所述集合FH中。所述页排序规则包括:按页编号排序,页编号越大越排前面;页编号相同的情况下,按片选号排序,片选号越大越排前面;页编号和片选号都相同的情况下,按通道号排序,通道号越大越排前面。由此使得放入集合FH中的同一个块的OOB数据都按照页排序规则进行排序,以便于后续的处理。
在本发明的第二方面,提出了一种SSD数据恢复方法,包括以下步骤:
A1、根据上文表述的方法获得所述SSD中的块分配顺序,并且按块排序规则(BSR)对所述SSD中的块进行排序以形成包括待恢复数据块的集合D,所述块排序规则包括:将待排序的块集合按照所述块分配顺序排序,块分配顺序越大的越排前面;在块分配顺序相同时,块擦除次数越多的越排前面;
A2、从所述集合D的前面取出一个未处理的块记为Di;
A3、读取所述Di的所有页中的OOB数据,并且按照同一个块内的页排序规则(PSR)进行排序后放入容器T中;
A4、从所述容器T的最前面读取一组未处理的OOB数据,从该组未处理的OOB数据中取出各簇号对应的LBA地址,对各簇号进行重新映射处理;
A5、重复执行所述步骤A4处理容器T内的所有元素;以及
A6、重复执行所述步骤A2-A5,以重组完成正常的映射信息表。
在优选实施例中,A4中的所述对各簇号进行重新映射处理的步骤具体包括:
建立重组的映射信息表;以及
从未处理簇号中取出簇号最大的簇的LBA,在所述重组的映射信息表中查询该簇号最大的簇的LBA是否有对应的PBA,如否,则将该LBA填入所述重组的映射信息表中。
该方法利用计算出的各个数据块的分配顺序,再结合SSD内部OOB保存的LBA对SSD进行镜像重组,重组后的逻辑镜像包含了被SSD的TRIM指令删除的数据,从而该方法能够有效地提升恢复SSD被删除数据的准确性,为SSD的数据恢复提供可能。
在优选实施例中,所述A1还包括以下步骤:从所述集合B中读取数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。
在本发明的另一方面,提出了一种计算机可读介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实施如上文所述的方法。
在本发明的另一方面,提出了一种计算***,包括处理器和存储器,所述处理器被配置为执行如上文所述的方法。
通过本申请提出的以上方法等,可以利用SSD映射表映射信息日志,巧妙地计算出SSD的块分配顺序,再通过flash OOB记载的LBA信息,重新翻译SSD的逻辑镜像,最终实现数据恢复。该方法能够极大地提升SSD数据恢复的准确性。
附图说明
包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。附图的元件不一定是相互按照比例的。同样的附图标记指代对应的类似部件。
图1示出了根据本发明的一个实施例的用于SSD的物理块分配顺序获取方法的示意性流程图;
图2示出了根据本发明的一个具体实施例的用于具体计算分配顺序的流程图;
图3示出了根据本发明的一个实施例的SSD数据恢复方法的示意性流程图;
图4a和图4b示出了利用现有技术进行SSD数据恢复的结果示意图;
图5示出了利用本发明的方法进行SSD数据恢复的结果示意图。
实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本申请的发明人研究发现,由于SSD引入了TRIM指令,数据删除后其逻辑地址也相应抹零,传统基于文件***的数据恢复已经无法恢复出被删除的数据,另外研究发现通过先导出NandFlash的数据,再将NandFlash数据重组出逻辑镜像,可以实现SSD的数据恢复,并且通常SSD会在NandFlash每个页的OOB中保存其映射的LBA。然而一个SSD中出现多个页指向同一个LBA的情况非常多,单纯利用OOB中的LBA无法重组出逻辑镜像。大量试验发现,依照SSD申请块的先后顺序,出现多个PBA指向同一个LBA时候,使用最后一个分配的Flash数据块进行重组便可以成功重组出正确的逻辑镜像。然而由于无法获取SSD中各Flash块分配顺序,正确重组出逻辑镜像依旧十分困难。
针对这个问题,本申请的发明人在对SSD原理深入研究的基础上,提出了创新的一种物理块分配顺序获取方法以及相应的SSD数据恢复方法。该方法首先利用SSD映射表映射信息日志,巧妙地计算出SSD的块分配顺序,再通过flash OOB记载的LBA信息,重新翻译SSD的逻辑镜像,最终实现数据恢复。该方法能够极大地提升SSD数据恢复的准确性。
下面结合SSD物理地址分配原理来解释下本申请提出的方法。
由于NandFlash的数据修改需要先擦出再写入,这要求文件***在读写时候做大量操作,为了让SSD能够像传统机械硬盘操作一样简单,SSD主控引入了FTL(flashtransition layer)层(闪存转换层)。该FTL层将NandFlash的物理地址描述成:块地址、页地址、簇地址、通道号、片选号、Plane号,再将物理地址进行重映射成连续的LBA,使得SSD展示给HOST端为连续并且可覆盖写的LBA空间。下面的表1示出了一个物理块号与逻辑块号之间的关系的示例,用于展示其映射原理。
表1
然而SSD主控不会立即擦出数据再写入数据而是将待写入的逻辑地址映射到新的物理地址上,再将数据写到新的物理地址,造成了NandFlash中有多个页的OOB中的物理块指向同一个LBA。并且,未写入数据的LBA并不分配实际的PBA空间,仅记载该LBA未分配。
FTL算法的好坏直接决定SSD的性能优劣,并且决定SSD的数据安全,为了避免异常掉电情况下,SSD内部电容放电的功率不足以保存SSD的状态和数据,FTL在每个页的OOB中记载其对应的逻辑地址、块状态等属性。其拓扑如表2所示。
表2
其中各个字段含义如下:
LBA:当前物理地址映射的逻辑地址
数据类型:主要是用来记录该数据块的类型为***数据块、用户数据、映射信息表、块擦除次数表;
其他数据:如字面含义;
ECC :校验数据。
发明人经过大量研究发现SSD内部维护一张映射信息表和块擦除次数表。映射信息表用于记载块分配情况,以及块内有效数据的数量。FTL每次分配新的块都会记载在映射信息表中,并且记载块内有效页的个数。块擦除次数表主要记录块的擦除次数,用于负载均衡使用。发明人发现可以利用映射信息表的历史记录结合块擦除次数表计算出各块的分配顺序,从而提升数据恢复的准确性。
下面结合图1描述根据本申请的一个实施例的用于SSD的物理块分配顺序获取方法。
如图1所示,该方法包括以下步骤S1-S3。
S1、从SSD上所有块中读取第一个页的OOB数据存入集合B中。具体地将所有块中的通道号为0、片选号为0、plane号为0并且页号为9的OOB数据存入集合B中。如上文所述,块中的第一个页的OOB数据存储有映射信息表、块擦除次数表等数据。
S2、从所述集合B中的OOB数据搜索是否存在数据类型为块映射信息表的数据,并且从存在块映射信息表的数据所在的块上读取所有的OOB数据存入集合FH中,并且计算存入集合FH的OOB数据的数量,记为N。从而集合FH中存储有映射信息块上所有的OOB数据集合。映射信息块包含了映射信息表的所有历史记录。
优选地,可以将读取的所有OOB数据按照页排序规则(PSR)进行排序后放入所述集合FH中,该页排序规则可包括:按页编号排序,页编号越大越排前面;页编号相同的情况下,按片选号排序,片选号越大越排前面;页编号和片选号都相同的情况下,按通道号排序,通道号越大越排前面。
根据该页排序规则可知:1、按照页编号排序,OOB数据中页编号大的排前面,页编号小的排后面;2、页编号相同的情况下,按片选号排序,片选号大的排前面,片选号小的排后面;3、在页编号和片选号都相同的情况下,按通道号排序,通道号大的排前面,通道号小的排后面。
S3、依从新到旧的顺序读取所述集合FH中的各组OOB数据,并且分别读取各组OOB数据所对应的物理页的数据,并且依次找出各组OOB数据所对应的物理页中新出现的数据块,并且将在越新的所述OOB数据所对应的物理页中新出现的数据块设定为具有越新的物理块分配顺序。应当理解的是,FH中新的OOB数据相对于次新的OOB数据块新出现的数据块应当被认为具有更新的物理块分配顺序。
利用上述方法可利用SSD映射表映射信息日志,巧妙地获取SSD中实际的有效数据块的真实分配顺序,从而便于后续的数据恢复操作。
下面结合图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数据,从而完成块分配顺序的计算。
其中首先需要从FH中找出为映射信息表的OOB数据,然后将先后出现的映射信息表分别对应的物理块进行比较,以找出在更新的映射信息表中新出现的数据块,并且将新出现的数据块的分配顺序进行设定。依此方式遍历FH中所有的映射信息表以将所有的数据块的分配顺序排好。
下面结合图3,描述根据本申请的一个实施例的SSD数据恢复方法。该方法可包括以下步骤A1-A6。
A1、根据上文表述的分配顺序获取方法获得所述SSD中的块分配顺序,并且按块排序规则(BSR)对所述SSD中的块进行排序以形成包括待恢复数据块的集合D,所述块排序规则包括:将待排序的块集合按照所述块分配顺序排序,块分配顺序越大的越排前面;在块分配顺序相同时,块擦除次数越多的越排前面。
A2、从所述集合D的前面取出一个未处理的块记为Di;
A3、读取所述Di的所有页中的OOB数据,并且按照同一个块内的页排序规则(PSR)进行排序后放入容器T中;
A4、从所述容器T的最前面读取一组未处理的OOB数据,从该组未处理的OOB数据中取出各簇号对应的LBA地址,对各簇号进行重新映射处理;
A5、重复执行所述步骤A4处理容器T内的所有元素;以及
A6、重复执行所述步骤A2-A5,以重组完成正常的映射信息表。
其中块分配顺序是通过如下方法获取的:获取SSD上所有块第一个页的OOB数据,读取第一个页OOB记载数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。
在优选实施例中,A4中的所述对各簇号进行重新映射处理的步骤具体包括:建立重组的映射信息表;以及从未处理簇号中取出簇号最大的簇的LBA,在所述重组的映射信息表中查询该簇号最大的簇的LBA是否有对应的PBA,如否,则将该LBA填入所述重组的映射信息表中。其中,重组的映射信息表可表示为ReMapTable。
应当理解的是,所述A1还可包括以下步骤:从所述集合B中读取数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。
下面从原理部分具体描述以上方法是如何提升数据恢复正确性。
获取SSD上所有块第一个页的OOB数据,读取第一个页OOB记载数据类型为块映射表的数据块,则该块包含了映射信息表的所有历史记录。从该数据块中提取所有的映射信息表,并计算获取到的映射信息表个数为N,同时记页编号越大的映射信息表越新;页编号相同时片选号越大的映射信息表越新;片选好相同时通道号越大的映射信息表越新。将所提取到的映射信息表按照新旧进行排序。获取SSD上所有块第一个页的OOB数据,读取第一个页OOB记载数据类型为块擦除次数表的数据块,并读取最新有效的块次数擦除表。
比较最新映射信息表上记录的有效数据块去掉其在第二新映射信息表上的有效数据块,将剩余数据块中分配顺序为0的有效数据块的块分配顺序记住N。同样方法一次比较第二新与第三新的有效数据块,分配顺序几位N-1。如此遍历完整个映射信息表,便可以计算出有效块的分配顺序。
对于一个LBA地址,可能存在大量多个PBA指向该LBA的情况,为了确保数据恢复的正确性,应该将最新的PBA映射到该LBA。具体判断PBA分配新旧的方法为:
1、利用上述方法计算出来的块分配顺序可以判断各块的新旧,块分配顺序越大的块越新,块分配顺序相同的块,擦除次数越多的块越新。
2、同一个块内,页编号越大越新、片选号越大越新、通道号越大越新、Plane号越大越新。
该方法利用计算出的各个数据块的分配顺序,再结合SSD内部OOB保存的LBA对SSD进行镜像重组,重组后的逻辑镜像包含了被SSD的TRIM指令删除的数据,从而该方法能够有效地提升恢复SSD被删除数据的准确性,为SSD的数据恢复提供可能。
在本发明的另一方面,提出了一种计算机可读介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实施如上文所述的方法。
在本发明的另一方面,提出了一种计算***,包括处理器和存储器,所述处理器被配置为执行如上文所述的方法。
通过本申请提出的以上方法等,可以利用SSD映射表映射信息日志,巧妙地计算出SSD的块分配顺序,再通过flash OOB记载的LBA信息,重新翻译SSD的逻辑镜像,最终实现数据恢复。该方法能够极大地提升SSD数据恢复的准确性。
下面参照图4a和图4b描述根据现有技术的方法进行SSD数据恢复处理产生的结果,图5描述了根据本发明的方法进行SSD数据恢复处理产生的结果。
实验方式包括:在SSD中放入一些文件,并且随机删除部分文件;使用现有技术的方法以及本发明提出的SSD数据恢复方法分别重做镜像,并且挂载到windows上;比对恢复流程做出来的镜像磁盘的逻辑数据以及预览图,发现根据现有技术的方法无法恢复数据(如图4a所示),而根据本发明提出的方法已经恢复数据(如图4b及图5所示)。
本发明为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的装置。
最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (9)
1.一种用于SSD的物理块分配顺序获取方法,包括以下步骤:
S1、从SSD上所有块中读取第一个页的OOB数据存入集合B中;
S2、从集合B中的OOB数据搜索是否存在数据类型为块映射信息表的数据,并且从存在块映射信息表的数据所在的块上读取所有的OOB数据存入集合FH中,并且计算存入集合FH的OOB数据的数量,记为N;
S3、以从新到旧的顺序读取所述集合FH中的各组OOB数据,并且分别读取各组OOB数据所对应的物理页的数据,并且依次找出各组OOB数据所对应的物理页中新出现的数据块,并且将在越新的所述OOB数据所对应的物理页中新出现的数据块设定为具有越新的物理块分配顺序;
其中所述步骤S3具体包括:
S31、从所述集合FH中读取当前最新的一组OOB数据并且验证该当前最新的一组OOB数据是否为映射信息表;
S32、在被验证为映射信息表的情况下,将该当前最新的一组OOB数据记为F0;
S33、从所述集合FH中读取次新的一组OOB数据并且在验证该次新的一组OOB数据为映射信息表后将其记为F1;读取所述F0和所述F1所对应的物理页的数据,并将所述F0所对应的物理页相比于F1所对应的物理页新出现的数据块的分配顺序设定为SN,所述SN的值为N;
S34、设定SN=SN-1,并且将当前F1当做新的F0,并且重复执行S33这一步骤,将新出现的数据块的分配顺序设为SN;以及
S35、重复执行步骤S31以遍历所述集合FH中所有的OOB数据,从而完成块分配顺序的计算。
2.根据权利要求1所述的获取方法,其中
所述步骤S1具体包括:从SSD上读取通道号为0、片选号为0、plane号为0并且页号为0的OOB数据放入集合B中。
3.根据权利要求1所述的获取方法,其中
所述步骤S2中的读取所有的OOB数据并且存入集合FH中具体包括:将所有的OOB数据按照页排序规则进行排序后放入所述集合FH中。
4.根据权利要求3所述的获取方法,其中所述页排序规则包括:按页编号排序,页编号越大越排前面;页编号相同的情况下,按片选号排序,片选号越大越排前面;页编号和片选号都相同的情况下,按通道号排序,通道号越大越排前面。
5.一种SSD数据恢复方法,包括以下步骤:
A1、根据权利要求1-4中任一项所述的方法获得所述SSD中的块分配顺序,并且按块排序规则对所述SSD中的块进行排序以形成包括待恢复数据块的集合D,所述块排序规则包括:将待排序的块集合按照所述块分配顺序排序,块分配顺序越大的越排前面;在块分配顺序相同时,块擦除次数越多的越排前面;
A2、从所述集合D中的最前面取出一个未处理的块记为Di;
A3、读取所述Di的所有页中的OOB数据,并且按照同一个块内的页排序规则进行排序后放入容器T中;
A4、从所述容器T的最前面读取一组未处理的OOB数据,从该组未处理的OOB数据中取出各簇号对应的LBA地址,对各簇号进行重新映射处理;
A5、重复执行所述步骤A4处理容器T内的所有元素;以及
A6、重复执行所述步骤A2-A5,以重组完成正常的映射信息表。
6.根据权利要求5所述的恢复方法,其中A4中的所述对各簇号进行重新映射处理的步骤具体包括:
建立重组的映射信息表;以及
从未处理簇号中取出簇号最大的簇的LBA,在所述重组的映射信息表中查询该簇号最大的簇的LBA是否有对应的PBA,如否,则将该LBA填入所述重组的映射信息表中。
7.根据权利要求5所述的恢复方法,其中所述A1还包括以下步骤:从所述集合B中读取数据类型为块擦除次数表的数据块,并读取最新有效的块擦除次数表。
8.一种计算机可读介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实施如权利要求1-7中任一项所述的方法。
9.一种计算***,包括处理器和存储器,所述处理器被配置为执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111341073.3A CN114063919B (zh) | 2021-11-12 | 2021-11-12 | 用于ssd的物理块分配顺序获取方法及数据恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111341073.3A CN114063919B (zh) | 2021-11-12 | 2021-11-12 | 用于ssd的物理块分配顺序获取方法及数据恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114063919A CN114063919A (zh) | 2022-02-18 |
CN114063919B true CN114063919B (zh) | 2023-08-18 |
Family
ID=80271726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111341073.3A Active CN114063919B (zh) | 2021-11-12 | 2021-11-12 | 用于ssd的物理块分配顺序获取方法及数据恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114063919B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112230752A (zh) * | 2020-10-14 | 2021-01-15 | 天津津航计算技术研究所 | 一种使用带外信号对硬盘阵列上电进行控制的方法 |
CN112596949A (zh) * | 2020-12-23 | 2021-04-02 | 厦门市美亚柏科信息股份有限公司 | 一种高效率的ssd删除数据恢复方法及*** |
CN113377579A (zh) * | 2021-06-23 | 2021-09-10 | 厦门市美亚柏科信息股份有限公司 | 一种基于映射表的固态硬盘数据恢复方法和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060277331A1 (en) * | 2005-05-18 | 2006-12-07 | Priborsky Anthony L | Communication using bit replication |
-
2021
- 2021-11-12 CN CN202111341073.3A patent/CN114063919B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112230752A (zh) * | 2020-10-14 | 2021-01-15 | 天津津航计算技术研究所 | 一种使用带外信号对硬盘阵列上电进行控制的方法 |
CN112596949A (zh) * | 2020-12-23 | 2021-04-02 | 厦门市美亚柏科信息股份有限公司 | 一种高效率的ssd删除数据恢复方法及*** |
CN113377579A (zh) * | 2021-06-23 | 2021-09-10 | 厦门市美亚柏科信息股份有限公司 | 一种基于映射表的固态硬盘数据恢复方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN114063919A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9146877B2 (en) | Storage system capable of managing a plurality of snapshot families and method of snapshot family based read | |
KR100526190B1 (ko) | 플래시 메모리의 재사상 방법 | |
EP1548599B1 (en) | Faster write operations to nonvolatile memory by manipulation of frequently accessed sectors | |
US8996790B1 (en) | System and method for flash memory management | |
CN110399310B (zh) | 一种存储空间的回收方法及装置 | |
US7761648B2 (en) | Caching method for NAND flash translation layer | |
CN105573681B (zh) | 一种ssd盘片内部raid组建方法及*** | |
US10877898B2 (en) | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements | |
CN112486852B (zh) | 一种固态硬盘及其地址映射方法 | |
KR101077904B1 (ko) | 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
JP2006040264A (ja) | メモリカードの制御方法および不揮発性半導体メモリの制御方法 | |
US10922234B2 (en) | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive | |
CN103389942A (zh) | 控制装置、存储装置及存储控制方法 | |
CN104408126B (zh) | 一种数据库的持久化写入方法、装置和*** | |
US20140089566A1 (en) | Data storing method, and memory controller and memory storage apparatus using the same | |
CN112347001B (zh) | 闪存垃圾回收的校验方法、装置及电子设备 | |
CN109426436B (zh) | 基于可变长大块的垃圾回收方法与装置 | |
CN106980471B (zh) | 一种提高智能设备的硬盘写入性能的方法及装置 | |
CN115237351B (zh) | Nand块动态重映射、读写命令处理方法及存储设备 | |
CN114063919B (zh) | 用于ssd的物理块分配顺序获取方法及数据恢复方法 | |
CN112416811B (zh) | 基于数据关联度的垃圾回收方法、闪存及装置 | |
CN103389943A (zh) | 控制装置、存储装置及存储控制方法 | |
CN112698984A (zh) | 嵌入式设备的数据库恢复方法、电子设备及介质 | |
CN113535089A (zh) | 用于ssd的映射表的刷新方法 | |
US10613973B1 (en) | Garbage collection in solid state drives |
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 |