CN114237984A - 异常掉电下Trim数据的恢复方法、系统及固态硬盘 - Google Patents
异常掉电下Trim数据的恢复方法、系统及固态硬盘 Download PDFInfo
- Publication number
- CN114237984A CN114237984A CN202111562876.1A CN202111562876A CN114237984A CN 114237984 A CN114237984 A CN 114237984A CN 202111562876 A CN202111562876 A CN 202111562876A CN 114237984 A CN114237984 A CN 114237984A
- Authority
- CN
- China
- Prior art keywords
- trim
- bitmap
- data
- logical address
- address
- 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.)
- Pending
Links
Images
Classifications
-
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种异常掉电下Trim数据的恢复方法、系统及固态硬盘。本申请涉及两个位图,一个是Trim位图,Trim位图的修改信息和重置信息记录到Trim日志中;另一个是TrimL2P位图,TrimL2P位图的修改信息记录到TrimL2P日志中。则在系统异常掉电后上电的过程中,可通过Trim日志恢复Trim位图,通过TrimL2P日志恢复TrimL2P位图,且根据恢复出的TrimL2P位图可恢复L2P表的无效表项,从而有效避免了系统异常掉电过程中Trim数据的丢失,提升了SSD的可靠性。另外,采用位图恢复方式的恢复时间较短,从而使得系统异常掉电后上电恢复的时间较短,给用户带来较好的使用体验。
Description
技术领域
本发明涉及固态硬盘领域,特别是涉及一种异常掉电下Trim数据的恢复方法、系统及固态硬盘。
背景技术
SSD(Solid State Drives,固态硬盘)支持Trim命令,Trim命令用于告知SSD哪些数据已变为无用数据,可以被内部擦除。具体地,Trim命令中包含无用数据的存储位置,以告知SSD具体哪些数据变为无用数据。SSD在接收到Trim命令后,根据Trim命令修改Trim位图(Bitmap,Trim位图由多个比特位组成,Trim位图的各比特位用于一一表征SSD的各逻辑地址对应的数据是否有用,具体地,比特位置1表示对应位置数据无用,比特位置0表示对应位置数据有用,Trim位图的各比特位默认为有效状态0),以通过Trim位图标示出Trim命令中包含的这些存储位置的数据无用,等待垃圾回收时使用。
在SSD中,垃圾回收是一种常规操作。垃圾回收操作的原理为:SSD所在主机的数据更新后,原来在SSD的数据块中存储的数据便成为无效数据,导致SSD中有的数据块同时包含有效数据和无效数据,需要将这些数据块内仍然有效的数据整理后重新写入到新的数据块,以便释放掉无效数据所占用的存储空间,即擦除只包含无效数据的数据块。而在将有效数据重新写入到新的数据块的过程中,SSD会根据Trim位图跳过无用数据,从而不再用重新写入这些无用的数据(即这些无用数据也被当作无效数据),减小了写放大,同时也节省了垃圾回收时间,提高了SSD在运行过程中的性能。
L2P表是存于SSD内存中的一张地址连续的映射表,用于表示逻辑地址与物理地址之间的映射关系,主机通过L2P表访问SSD上的数据。Trim位图中的各比特位与L2P表的各表项一一对应。SSD在垃圾回收过程中遇到被Trim掉的数据时,不会产生数据搬移,此时会将L2P表中被Trim掉的数据对应的物理地址修改为无效,同时将Trim位图中被Trim掉的数据对应的比特位重新置0(表示此Trim数据已被处理完成)。但是,L2P表的存储量很大(一般来说,L2P表的大小为SSD硬盘容量的1/1024,例如1T硬盘L2P表大小为1G,4T硬盘L2P表为4G),如果系统异常掉电,L2P表不能全部下刷至SSD NAND(非易失性存储器)中,L2P表中部分修改为无效的物理地址可能就会因为异常掉电丢失,而Trim位图此时表示的数据有效性也不准确,最终导致系统上电后无法正确恢复出异常掉电前的Trim数据,从而影响SSD的可靠性。
因此,如何提供一种解决上述技术问题的方案是本领域的技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种异常掉电下Trim数据的恢复方法、系统及固态硬盘,可恢复出系统异常掉电前所有的Trim数据,有效避免了系统异常掉电过程中Trim数据的丢失,提升了SSD的可靠性;另外,采用位图恢复方式的恢复时间较短,从而使得系统异常掉电后上电恢复的时间较短,给用户带来较好的使用体验。
为解决上述技术问题,本发明提供了一种异常掉电下Trim数据的恢复方法,应用于固态硬盘,包括:
在接收到Trim命令后,基于所述Trim命令修改Trim位图,并将所述Trim位图的修改信息记录到Trim日志中;
在垃圾回收过程中,若根据所述Trim位图判定出预垃圾回收的目标逻辑地址对应的目标存储数据为无用数据,则跳过所述目标存储数据的垃圾回收;
将所述Trim位图中与所述目标逻辑地址对应的比特位重置为有效状态,并将所述Trim位图的重置信息记录到所述Trim日志中;
将L2P表中与所述目标逻辑地址对应的目标物理地址修改为无效地址,并将TrimL2P位图中与所述目标逻辑地址对应的比特位修改为无效状态,且将所述TrimL2P位图的修改信息记录到TrimL2P日志中;
在系统异常掉电后上电的过程中,根据所述Trim日志恢复所述Trim位图,并根据所述TrimL2P日志恢复所述TrimL2P位图,且根据恢复的所述TrimL2P位图恢复所述L2P表的无效表项,以恢复出系统异常掉电前的Trim数据。
可选地,所述Trim命令中包含无用数据的起始逻辑地址和数据长度;
基于所述Trim命令修改所述Trim位图,包括:
根据所述起始逻辑地址和所述数据长度确定所述无用数据的终止逻辑地址;
将所述Trim位图中与所述起始逻辑地址和所述终止逻辑地址之间的地址范围对应的比特位均修改为无效状态。
可选地,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第一逻辑地址的读取指令时,查找所述Trim位图中与所述第一逻辑地址对应的第一比特位;
若所述Trim位图中所述第一比特位处于有效状态,则从所述L2P表中查找与所述第一逻辑地址对应的第一物理地址,以从所述第一物理地址中读取数据返回给读取端。
可选地,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第二逻辑地址的读取指令时,查找所述Trim位图中与所述第二逻辑地址对应的第二比特位;
若所述Trim位图中所述第二比特位处于无效状态,则直接向读取端返回地址无效信息。
可选地,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第三逻辑地址和待写入的第一数据的写入指令时,分别查找所述Trim位图和所述TrimL2P位图中与所述第三逻辑地址对应的第三比特位;
若所述Trim位图和所述TrimL2P位图中所述第三比特位均处于有效状态,则将所述第一数据写入为所述第三逻辑地址新分配的第三物理地址中,并基于所述第三逻辑地址与所述第三物理地址的新映射关系更新所述L2P表。
可选地,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第四逻辑地址和待写入的第二数据的写入指令时,分别查找所述Trim位图和所述TrimL2P位图中与所述第四逻辑地址对应的第四比特位;
若目标位图中所述第四比特位处于无效状态,则将所述第二数据写入为所述第四逻辑地址新分配的第四物理地址,将所述目标位图中所述第四比特位重置为有效状态,并将所述目标位图的重置信息记录到相应位图日志中,且基于所述第四逻辑地址与所述第四物理地址的新映射关系更新所述L2P表;其中,所述目标位图为所述Trim位图或所述TrimL2P位图。
可选地,所述异常掉电下Trim数据的恢复方法还包括:
在所述L2P表更改后,根据所述L2P表的更改情况更新所述固态硬盘的各数据块上有效数据的计数值。
可选地,根据所述L2P表的更改情况更新所述固态硬盘的各数据块上有效数据的计数值,包括:
在将所述L2P表中所述目标物理地址修改为无效地址后,将所述目标物理地址所在的数据块上有效数据的计数值减1;
在基于新映射关系更新所述L2P表后,将所述新映射关系中逻辑地址对应的上一个物理地址所在的数据块上有效数据的计数值减1,并将所述新映射关系中逻辑地址对应的新物理地址所在的数据块上有效数据的计数值加1。
为解决上述技术问题,本发明还提供了一种异常掉电下Trim数据的恢复系统,应用于固态硬盘,包括:
Trim位图修改模块,用于在接收到Trim命令后,基于所述Trim命令修改Trim位图,并将所述Trim位图的修改信息记录到Trim日志中;
垃圾回收模块,用于在垃圾回收过程中,若根据所述Trim位图判定出预垃圾回收的目标逻辑地址对应的目标存储数据为无用数据,则跳过所述目标存储数据的垃圾回收;
Trim位图重置模块,用于将所述Trim位图中与所述目标逻辑地址对应的比特位重置为有效状态,并将所述Trim位图的重置信息记录到所述Trim日志中;
TrimL2P位图修改模块,用于将L2P表中与所述目标逻辑地址对应的物理地址修改为无效地址,并将TrimL2P位图中与所述目标逻辑地址对应的比特位修改为无效状态,且将所述TrimL2P位图的修改信息记录到TrimL2P日志中;
掉电恢复模块,用于在系统异常掉电后上电的过程中,根据所述Trim日志恢复所述Trim位图,并根据所述TrimL2P日志恢复所述TrimL2P位图,且根据所述TrimL2P位图恢复所述L2P表的无效表项,以恢复出系统异常掉电前的Trim数据。
为解决上述技术问题,本发明还提供了一种固态硬盘,包括:
存储器,用于存储计算机程序;
控制器,用于在执行所述计算机程序时实现上述任一种异常掉电下Trim数据的恢复方法的步骤。
本发明提供了一种异常掉电下Trim数据的恢复方法,应用于固态硬盘。本申请涉及两个位图,一个是Trim位图,Trim位图的修改信息和重置信息记录到Trim日志中;另一个是TrimL2P位图,TrimL2P位图的修改信息记录到TrimL2P日志中。则在系统异常掉电后上电的过程中,可通过Trim日志恢复Trim位图,恢复了Trim位图也就恢复了系统异常掉电前还未处理完的Trim数据;可通过TrimL2P日志恢复TrimL2P位图,恢复了TrimL2p位图也就恢复了系统异常掉电前垃圾回收已处理完的Trim数据,且根据恢复出的TrimL2P位图可恢复L2P表的无效表项,从而恢复出系统异常掉电前所有的Trim数据,有效避免了系统异常掉电过程中Trim数据的丢失,提升了SSD的可靠性。另外,采用位图恢复方式的恢复时间较短,从而使得系统异常掉电后上电恢复的时间较短,给用户带来较好的使用体验。
本发明还提供了一种异常掉电下Trim数据的恢复系统及固态硬盘,与上述恢复方法具有相同的有益效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种异常掉电下Trim数据的恢复方法的流程图;
图2为本发明实施例提供的一种接收到Trim命令的处理原理图;
图3为本发明实施例提供的一种读到Trim位置的处理原理图;
图4为本发明实施例提供的一种写到Trim/TrimL2p位置的处理原理图;
图5为本发明实施例提供的一种垃圾回收遇到Trim的位置的处理原理图;
图6为本发明实施例提供的一种异常掉电后上电根据位图恢复Trim数据的处理原理图;
图7为本发明实施例提供的一种异常掉电下Trim数据的恢复系统的结构示意图。
具体实施方式
本发明的核心是提供一种异常掉电下Trim数据的恢复方法、系统及固态硬盘,可恢复出系统异常掉电前所有的Trim数据,有效避免了系统异常掉电过程中Trim数据的丢失,提升了SSD的可靠性;另外,采用位图恢复方式的恢复时间较短,从而使得系统异常掉电后上电恢复的时间较短,给用户带来较好的使用体验。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,图1为本发明实施例提供的一种异常掉电下Trim数据的恢复方法的流程图。
该异常掉电下Trim数据的恢复方法应用于固态硬盘,包括:
步骤S1:在接收到Trim命令后,基于Trim命令修改Trim位图,并将Trim位图的修改信息记录到Trim日志中。
具体地,固态硬盘支持Trim命令,Trim命令用于告知固态硬盘哪些数据已变为无用数据,可以被内部擦除。基于此,固态硬盘在接收到Trim命令后,可基于Trim命令修改Trim位图(Trim位图由多个比特位组成,Trim位图的各比特位用于一一表征固态硬盘的各逻辑地址对应的数据是否有用,如比特位置1表示对应位置数据无用,比特位置0表示对应位置数据有用,Trim位图的各比特位默认为有效状态0),以通过Trim位图标示出Trim命令对应的无用数据的存储位置。而且,固态硬盘还将Trim位图的修改信息记录到Trim日志中。
步骤S2:在垃圾回收过程中,若根据Trim位图判定出预垃圾回收的目标逻辑地址对应的目标存储数据为无用数据,则跳过目标存储数据的垃圾回收。
具体地,在固态硬盘中,垃圾回收是一种常规操作。垃圾回收操作的原理为:固态硬盘所在主机的数据更新后,原来在固态硬盘的数据块中存储的数据便成为无效数据,导致固态硬盘中有的数据块同时包含有效数据和无效数据,需要将这些数据块内仍然有效的数据整理后重新写入到新的数据块,以便释放掉无效数据所占用的存储空间,即擦除只包含无效数据的数据块。
固态硬盘在将有效数据重新写入到新的数据块的过程中,根据Trim位图判定预垃圾回收的目标逻辑地址对应的目标存储数据是否为无用数据,若目标存储数据不为无用数据,则将目标存储数据重新写入到新的数据块中;若目标存储数据为无用数据,则跳过目标存储数据的垃圾回收,从而不再用重新写入无用数据(即无用数据也被当作无效数据),减小了写放大,同时也节省了垃圾回收时间,提高了固态硬盘在运行过程中的性能。
比如,Trim位图的比特位置1表示对应位置数据无用,比特位置0表示对应位置数据有用,则根据Trim位图判定预垃圾回收的目标逻辑地址对应的目标存储数据是否为无用数据的过程包括:查找Trim位图中与目标逻辑地址对应的目标比特位,若Trim位图中目标比特位为1,则确定目标逻辑地址对应的目标存储数据为无用数据;若Trim位图中目标比特位为0,则确定目标逻辑地址对应的目标存储数据不为无用数据。
步骤S3:将Trim位图中与目标逻辑地址对应的比特位重置为有效状态,并将Trim位图的重置信息记录到Trim日志中。
具体地,固态硬盘在处理目标逻辑地址的垃圾回收的同时,将Trim位图中与目标逻辑地址对应的比特位重置为有效状态(表示目标逻辑地址对应的Trim数据已被处理完成),并将Trim位图的重置信息记录到Trim日志中。
步骤S4:将L2P表中与目标逻辑地址对应的目标物理地址修改为无效地址,并将TrimL2P位图中与目标逻辑地址对应的比特位修改为无效状态,且将TrimL2P位图的修改信息记录到TrimL2P日志中。
具体地,固态硬盘在处理目标逻辑地址的垃圾回收的同时,还将L2P表(L2P表是存于固态硬盘内存中的一张地址连续的映射表,用于表示逻辑地址与物理地址之间的映射关系,主机通过L2P表访问固态硬盘上的数据)中与目标逻辑地址对应的目标物理地址修改为无效地址,这样当主机读到L2P表中目标逻辑地址时便知道其对应的数据是无效的。此外,固态硬盘还将TrimL2P位图(TrimL2P位图由多个比特位组成,TrimL2P位图的各比特位一一表征L2P表的各逻辑地址对应的物理地址的有效性,如比特位置1表示对应地址无效,比特位置0表示对应地址有效,TrimL2P位图的各比特位默认为有效状态0)中与目标逻辑地址对应的比特位修改为无效状态,并将TrimL2P位图的修改信息记录到TrimL2P日志中。
步骤S5:在系统异常掉电后上电的过程中,根据Trim日志恢复Trim位图,并根据TrimL2P日志恢复TrimL2P位图,且根据恢复的TrimL2P位图恢复L2P表的无效表项,以恢复出系统异常掉电前的Trim数据。
具体地,对于Trim日志和TrimL2P日志来说,二者的存储量较小(一般是32K左右),Trim日志和TrimL2P日志是按照时间先后顺序更新的,写满一定的大小就会刷写到固态硬盘的NAND中,即使系统异常掉电,由于二者的存储量较小,Trim日志和TrimL2P日志也能全部下刷至NAND中,日志数据不会丢失。对于L2P表来说,L2P表的存储量很大(一般是几个G左右),如果系统异常掉电,L2P表不能全部下刷至NAND中,L2P表中部分修改为无效的物理地址可能就会因为异常掉电丢失。对于Trim位图和TrimL2P位图来说,二者的位图数据会因为异常掉电丢失。
基于此,固态硬盘在系统异常掉电后上电的过程中,可根据NAND的元数据恢复L2P表、Trim日志及TrimL2P日志,而后可根据Trim日志恢复Trim位图,恢复了Trim位图也就恢复了系统异常掉电前还未处理完的Trim数据,还可根据TrimL2P日志恢复TrimL2P位图,恢复了TrimL2p位图也就恢复了系统异常掉电前垃圾回收已处理完的Trim数据,然后可根据恢复的TrimL2P位图恢复L2P表的无效表项,从而成功恢复出系统异常掉电前所有的Trim数据。
可见,本申请涉及两个位图,一个是Trim位图,Trim位图的修改信息和重置信息记录到Trim日志中;另一个是TrimL2P位图,TrimL2P位图的修改信息记录到TrimL2P日志中。则在系统异常掉电后上电的过程中,可通过Trim日志恢复Trim位图,通过TrimL2P日志恢复TrimL2P位图,且根据恢复出的TrimL2P位图可恢复L2P表的无效表项,从而恢复出系统异常掉电前所有的Trim数据,有效避免了系统异常掉电过程中Trim数据的丢失,提升了固态硬盘的可靠性。而且,本申请采用位图恢复方式的恢复时间较短,从而使得系统异常掉电后上电恢复的时间较短,给用户带来较好的使用体验。另外,本申请在设置TrimL2P位图的基础上,不必频繁下刷L2P表也能保存表项变化,从而对固态硬盘运行时的性能影响较小,保证性能的平稳。
在上述实施例的基础上:
作为一种可选的实施例,Trim命令中包含无用数据的起始逻辑地址和数据长度;
基于Trim命令修改Trim位图,包括:
根据起始逻辑地址和数据长度确定无用数据的终止逻辑地址;
将Trim位图中与起始逻辑地址和终止逻辑地址之间的地址范围对应的比特位均修改为无效状态。
具体地,本申请的Trim命令中包含无用数据的起始逻辑地址和数据长度,则固态硬盘在接收到Trim命令后,可根据Trim命令中无用数据的起始逻辑地址和数据长度确定无用数据的终止逻辑地址,然后将Trim位图中与起始逻辑地址和终止逻辑地址之间的地址范围对应的比特位均修改为无效状态,表示这部分地址范围对应的数据已无用,成为无效数据。
作为一种可选的实施例,异常掉电下Trim数据的恢复方法还包括:
在接收到包含第一逻辑地址的读取指令时,查找Trim位图中与第一逻辑地址对应的第一比特位;
若Trim位图中第一比特位处于有效状态,则从L2P表中查找与第一逻辑地址对应的第一物理地址,以从第一物理地址中读取数据返回给读取端。
进一步地,固态硬盘在接收到包含第一逻辑地址的读取指令时,先查找Trim位图中与第一逻辑地址对应的第一比特位,并判断Trim位图中第一比特位是否处于有效状态;若Trim位图中第一比特位处于有效状态,说明第一逻辑地址对应的数据有效,则从L2P表中查找与第一逻辑地址对应的第一物理地址,以从第一物理地址中读取数据返回给读取端(发送读取指令的主机);若Trim位图中第一比特位未处于有效状态,说明第一逻辑地址对应的数据无效,则直接向读取端返回地址无效信息(表示第一逻辑地址对应的是无效数据)。
作为一种可选的实施例,异常掉电下Trim数据的恢复方法还包括:
在接收到包含第二逻辑地址的读取指令时,查找Trim位图中与第二逻辑地址对应的第二比特位;
若Trim位图中第二比特位处于无效状态,则直接向读取端返回地址无效信息。
本实施例与上述读取实施例的原理类似,本申请在此不再赘述。
作为一种可选的实施例,异常掉电下Trim数据的恢复方法还包括:
在接收到包含第三逻辑地址和待写入的第一数据的写入指令时,分别查找Trim位图和TrimL2P位图中与第三逻辑地址对应的第三比特位;
若Trim位图和TrimL2P位图中第三比特位均处于有效状态,则将第一数据写入为第三逻辑地址新分配的第三物理地址中,并基于第三逻辑地址与第三物理地址的新映射关系更新L2P表。
进一步地,固态硬盘在接收到包含第三逻辑地址和待写入的第一数据的写入指令时,查找Trim位图中与第三逻辑地址对应的第三比特位,并查找TrimL2P位图中与第三逻辑地址对应的第三比特位,然后判断Trim位图和TrimL2P位图中第三比特位是否均处于有效状态,若Trim位图和TrimL2P位图中第三比特位均处于有效状态,则对Trim位图和TrimL2P位图不做处理,为第三逻辑地址分配一个新的第三物理地址,并将待写入的第一数据写入为第三逻辑地址新分配的第三物理地址中,然后基于第三逻辑地址与第三物理地址的新映射关系更新L2P表;若Trim位图中第三比特位处于无效状态、TrimL2P位图中第三比特位处于有效状态,则对TrimL2P位图不做处理,为第三逻辑地址分配一个新的第三物理地址,并将待写入的第一数据写入为第三逻辑地址新分配的第三物理地址中,同时将Trim位图中第三比特位重置为有效状态(表示在第三逻辑地址写入了有效数据),并将Trim位图的重置信息记录到Trim日志中,然后基于第三逻辑地址与第三物理地址的新映射关系更新L2P表;若TrimL2P位图中第三比特位处于无效状态、Trim位图中第三比特位处于有效状态,则对Trim位图不做处理,为第三逻辑地址分配一个新的第三物理地址,并将待写入的第一数据写入为第三逻辑地址新分配的第三物理地址中,同时将TrimL2P位图中第三比特位重置为有效状态(表示在第三逻辑地址写入了有效数据),并将TrimL2P位图的重置信息记录到TrimL2P日志中,然后基于第三逻辑地址与第三物理地址的新映射关系更新L2P表;若Trim位图和TrimL2P位图中第三比特位均处于无效状态,则为第三逻辑地址分配一个新的第三物理地址,并将第一数据写入为第三逻辑地址新分配的第三物理地址中,同时将Trim位图和TrimL2P位图中第三比特位均重置为有效状态(表示在第三逻辑地址写入了有效数据),并将Trim位图的重置信息记录到Trim日志中、将TrimL2P位图的重置信息记录到TrimL2P日志中,然后基于第三逻辑地址与第三物理地址的新映射关系更新L2P表。主机来读的时候便能根据L2P表读到新的位置的有效数据。
作为一种可选的实施例,异常掉电下Trim数据的恢复方法还包括:
在接收到包含第四逻辑地址和待写入的第二数据的写入指令时,分别查找Trim位图和TrimL2P位图中与第四逻辑地址对应的第四比特位;
若目标位图中第四比特位处于无效状态,则将第二数据写入为第四逻辑地址新分配的第四物理地址,将目标位图中第四比特位重置为有效状态,并将目标位图的重置信息记录到相应位图日志中,且基于第四逻辑地址与第四物理地址的新映射关系更新L2P表;其中,目标位图为Trim位图或TrimL2P位图。
本实施例与上述写入实施例的原理类似,本申请在此不再赘述。
作为一种可选的实施例,异常掉电下Trim数据的恢复方法还包括:
在L2P表更改后,根据L2P表的更改情况更新固态硬盘的各数据块上有效数据的计数值。
进一步地,固态硬盘在L2P表更改后,还可根据L2P表的更改情况更新固态硬盘的各数据块上有效数据的计数值,以准确了解固态硬盘的各数据块上有效数据的数量。
作为一种可选的实施例,根据L2P表的更改情况更新固态硬盘的各数据块上有效数据的计数值,包括:
在将L2P表中目标物理地址修改为无效地址后,将目标物理地址所在的数据块上有效数据的计数值减1;
在基于新映射关系更新L2P表后,将新映射关系中逻辑地址对应的上一个物理地址所在的数据块上有效数据的计数值减1,并将新映射关系中逻辑地址对应的新物理地址所在的数据块上有效数据的计数值加1。
具体地,固态硬盘中包含多个数据块,每个数据块中包含多个存储单元,一个存储单元对应一个物理地址。固态硬盘更改L2P表有两种情况:1)将L2P表中一个目标物理地址修改为无效地址,此情况下该目标物理地址所在的数据块上便少了一个有效数据,则将该目标物理地址所在的数据块上有效数据的计数值减1;2)基于新映射关系更新L2P表,此情况下新映射关系中逻辑地址对应的上一个物理地址所在的数据块上便少了一个有效数据,新映射关系中逻辑地址对应的新物理地址所在的数据块上便多了一个有效数据,则将新映射关系中逻辑地址对应的上一个物理地址所在的数据块上有效数据的计数值减1,并将新映射关系中逻辑地址对应的新物理地址所在的数据块上有效数据的计数值加1。
综上,给出具体实施例进一步解释说明:
如图2所示,主机发送Trim命令,Trim命令对应的起始地址是Lma m,长度为(n-m),因此Trim命令对应的地址范围是Lma m到Lma(n-1),此时只需要将trim位图的m到n-1位置的比特位置为1即可,表示这部分的数据被Trim掉了,是无效的数据;并且,记录Trim日志,日志中lma m表示起始位置为m,n-m表示长度为n-m,1表示将起始位置为m长度为n-m的比特位置1。
如图3所示,当主机读到Lma1时,查找到Trim位图中1位置的比特位为0,说明该位置数据有效,便会去L2P表查找Lma1对应的物理位置,以从此物理位置读取数据返回给主机。当主机读到Lma m时,查找到Trim位图中m位置的比特位为1,说明该位置数据无效,因此直接返回地址无效信息给主机,表示这个位置无有效数据。
如图4所示,当主机写Lma1时,在Trim/TrimL2p位图中1位置的比特位均为0,直接更新L2P表,并计算每个数据块上有效数据。当主机写Lma m时,在TrimL2P位图中m位置的比特位为0,不进行任何操作,在Trim位图中m位置的比特位为1,表明该数据无效,现在主机在该位置写入了有效数据,因此会将Trim位图中m位置的比特位重置为0,表示该位置数据有效,并记录Trim日志,最后更新L2P表,并计算每个数据块上有效数据。
如图5所示,当要对Lma(n-1)做垃圾回收时,查找Trim位图发现Lma(n-1)上的数据是无效的,因此不需要对Lma(n-1)做垃圾回收,将Trim位图中n-1位置的比特位重置为0(表示已处理过这个位置的Trim数据),并记录Trim日志,修改L2P表的Lma(n-1)的表项为无效,这样当主机读到L2P表的Lma(n-1)时便知道数据是无效的,此时需要将TrimL2P位图中n-1位置的比特位置为1,并记录TrimL2P日志,表示n-1的位置是垃圾回收的时候遇到Trim数据而更改了L2P表,通过TrimL2P位图记录的方式,防止频繁下刷L2P表,减小了系统性能的波动。需要说明的是,在垃圾回收遇到Trim数据时,将Trim位图的对应比特位由1置为0时会将对应数据块的有效数据减掉,并将TrimL2P位图的对应比特位置为1,因此TrimL2P位图也包含了减掉有效数据这一操作,能够保证上电后通过TrimL2P位图恢复的L2P表的数据与所有数据块的有效数据保持一致性。
如图6所示,在系统异常掉电后上电的过程中,根据Trim日志恢复Trim位图,并根据TrimL2P日志恢复TrimL2P位图,且根据TrimL2P位图恢复L2P表的无效表项,以恢复出系统异常掉电前的Trim数据。
需要说明的是,如果没有Trim位图,系统上电后可根据NAND的元数据(元数据为描述数据的数据)恢复出L2P表,但是由于没有Trim位图,当主机读到Lma(m+1)到Lma(n-2)之间的数据时,就会直接去L2P表中读,L2P表中的数据可能是有效的,但是在掉电前Lma(m+1)到Lma(n-2)之间的数据是无效的,因此就会读到错误的数据,对于企业级SSD来说是不允许的。
如果没有TrimL2P位图,同理读到Lma(n-1)的位置可能是有效数据,但实际上Lma(n-1)在掉电之前垃圾回收的时候就已经被标记为无效了,但是因为没有产生写,无法通过NAND的元数据知道Lma(n-1)的数据是无效的,因此也可能会读到错误的数据。
请参照图7,图7为本发明实施例提供的一种异常掉电下Trim数据的恢复系统的结构示意图。
该异常掉电下Trim数据的恢复系统应用于固态硬盘,包括:
Trim位图修改模块1,用于在接收到Trim命令后,基于Trim命令修改Trim位图,并将Trim位图的修改信息记录到Trim日志中;
垃圾回收模块2,用于在垃圾回收过程中,若根据Trim位图判定出预垃圾回收的目标逻辑地址对应的目标存储数据为无用数据,则跳过目标存储数据的垃圾回收;
Trim位图重置模块3,用于将Trim位图中与目标逻辑地址对应的比特位重置为有效状态,并将Trim位图的重置信息记录到Trim日志中;
TrimL2P位图修改模块4,用于将L2P表中与目标逻辑地址对应的物理地址修改为无效地址,并将TrimL2P位图中与目标逻辑地址对应的比特位修改为无效状态,且将TrimL2P位图的修改信息记录到TrimL2P日志中;其中,TrimL2P位图的各比特位一一表征L2P表的各逻辑地址对应的物理地址的有效性;
掉电恢复模块5,用于在系统异常掉电后上电的过程中,根据Trim日志恢复Trim位图,并根据TrimL2P日志恢复TrimL2P位图,且根据TrimL2P位图恢复L2P表的无效表项,以恢复出系统异常掉电前的Trim数据。
本申请提供的恢复系统的介绍请参考上述恢复方法的实施例,本申请在此不再赘述。
本申请还提供了一种固态硬盘,包括:
存储器,用于存储计算机程序;
控制器,用于在执行计算机程序时实现上述任一种异常掉电下Trim数据的恢复方法的步骤。
本申请提供的固态硬盘的介绍请参考上述恢复方法的实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种异常掉电下Trim数据的恢复方法,其特征在于,应用于固态硬盘,包括:
在接收到Trim命令后,基于所述Trim命令修改Trim位图,并将所述Trim位图的修改信息记录到Trim日志中;
在垃圾回收过程中,若根据所述Trim位图判定出预垃圾回收的目标逻辑地址对应的目标存储数据为无用数据,则跳过所述目标存储数据的垃圾回收;
将所述Trim位图中与所述目标逻辑地址对应的比特位重置为有效状态,并将所述Trim位图的重置信息记录到所述Trim日志中;
将L2P表中与所述目标逻辑地址对应的目标物理地址修改为无效地址,并将TrimL2P位图中与所述目标逻辑地址对应的比特位修改为无效状态,且将所述TrimL2P位图的修改信息记录到TrimL2P日志中;
在系统异常掉电后上电的过程中,根据所述Trim日志恢复所述Trim位图,并根据所述TrimL2P日志恢复所述TrimL2P位图,且根据恢复的所述TrimL2P位图恢复所述L2P表的无效表项,以恢复出系统异常掉电前的Trim数据。
2.如权利要求1所述的异常掉电下Trim数据的恢复方法,其特征在于,所述Trim命令中包含无用数据的起始逻辑地址和数据长度;
基于所述Trim命令修改所述Trim位图,包括:
根据所述起始逻辑地址和所述数据长度确定所述无用数据的终止逻辑地址;
将所述Trim位图中与所述起始逻辑地址和所述终止逻辑地址之间的地址范围对应的比特位均修改为无效状态。
3.如权利要求1所述的异常掉电下Trim数据的恢复方法,其特征在于,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第一逻辑地址的读取指令时,查找所述Trim位图中与所述第一逻辑地址对应的第一比特位;
若所述Trim位图中所述第一比特位处于有效状态,则从所述L2P表中查找与所述第一逻辑地址对应的第一物理地址,以从所述第一物理地址中读取数据返回给读取端。
4.如权利要求3所述的异常掉电下Trim数据的恢复方法,其特征在于,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第二逻辑地址的读取指令时,查找所述Trim位图中与所述第二逻辑地址对应的第二比特位;
若所述Trim位图中所述第二比特位处于无效状态,则直接向读取端返回地址无效信息。
5.如权利要求1-4任一项所述的异常掉电下Trim数据的恢复方法,其特征在于,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第三逻辑地址和待写入的第一数据的写入指令时,分别查找所述Trim位图和所述TrimL2P位图中与所述第三逻辑地址对应的第三比特位;
若所述Trim位图和所述TrimL2P位图中所述第三比特位均处于有效状态,则将所述第一数据写入为所述第三逻辑地址新分配的第三物理地址中,并基于所述第三逻辑地址与所述第三物理地址的新映射关系更新所述L2P表。
6.如权利要求5所述的异常掉电下Trim数据的恢复方法,其特征在于,所述异常掉电下Trim数据的恢复方法还包括:
在接收到包含第四逻辑地址和待写入的第二数据的写入指令时,分别查找所述Trim位图和所述TrimL2P位图中与所述第四逻辑地址对应的第四比特位;
若目标位图中所述第四比特位处于无效状态,则将所述第二数据写入为所述第四逻辑地址新分配的第四物理地址,将所述目标位图中所述第四比特位重置为有效状态,并将所述目标位图的重置信息记录到相应位图日志中,且基于所述第四逻辑地址与所述第四物理地址的新映射关系更新所述L2P表;其中,所述目标位图为所述Trim位图或所述TrimL2P位图。
7.如权利要求6所述的异常掉电下Trim数据的恢复方法,其特征在于,所述异常掉电下Trim数据的恢复方法还包括:
在所述L2P表更改后,根据所述L2P表的更改情况更新所述固态硬盘的各数据块上有效数据的计数值。
8.如权利要求7所述的异常掉电下Trim数据的恢复方法,其特征在于,根据所述L2P表的更改情况更新所述固态硬盘的各数据块上有效数据的计数值,包括:
在将所述L2P表中所述目标物理地址修改为无效地址后,将所述目标物理地址所在的数据块上有效数据的计数值减1;
在基于新映射关系更新所述L2P表后,将所述新映射关系中逻辑地址对应的上一个物理地址所在的数据块上有效数据的计数值减1,并将所述新映射关系中逻辑地址对应的新物理地址所在的数据块上有效数据的计数值加1。
9.一种异常掉电下Trim数据的恢复系统,其特征在于,应用于固态硬盘,包括:
Trim位图修改模块,用于在接收到Trim命令后,基于所述Trim命令修改Trim位图,并将所述Trim位图的修改信息记录到Trim日志中;
垃圾回收模块,用于在垃圾回收过程中,若根据所述Trim位图判定出预垃圾回收的目标逻辑地址对应的目标存储数据为无用数据,则跳过所述目标存储数据的垃圾回收;
Trim位图重置模块,用于将所述Trim位图中与所述目标逻辑地址对应的比特位重置为有效状态,并将所述Trim位图的重置信息记录到所述Trim日志中;
TrimL2P位图修改模块,用于将L2P表中与所述目标逻辑地址对应的物理地址修改为无效地址,并将TrimL2P位图中与所述目标逻辑地址对应的比特位修改为无效状态,且将所述TrimL2P位图的修改信息记录到TrimL2P日志中;
掉电恢复模块,用于在系统异常掉电后上电的过程中,根据所述Trim日志恢复所述Trim位图,并根据所述TrimL2P日志恢复所述TrimL2P位图,且根据所述TrimL2P位图恢复所述L2P表的无效表项,以恢复出系统异常掉电前的Trim数据。
10.一种固态硬盘,其特征在于,包括:
存储器,用于存储计算机程序;
控制器,用于在执行所述计算机程序时实现如权利要求1-8任一项所述的异常掉电下Trim数据的恢复方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111562876.1A CN114237984A (zh) | 2021-12-20 | 2021-12-20 | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 |
PCT/CN2022/134511 WO2023116346A1 (zh) | 2021-12-20 | 2022-11-25 | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111562876.1A CN114237984A (zh) | 2021-12-20 | 2021-12-20 | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237984A true CN114237984A (zh) | 2022-03-25 |
Family
ID=80759275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111562876.1A Pending CN114237984A (zh) | 2021-12-20 | 2021-12-20 | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114237984A (zh) |
WO (1) | WO2023116346A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023116346A1 (zh) * | 2021-12-20 | 2023-06-29 | 深圳大普微电子科技有限公司 | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 |
CN117539692A (zh) * | 2024-01-09 | 2024-02-09 | 武汉麓谷科技有限公司 | 一种zns固态硬盘数据集管理命令实现方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112310B (zh) * | 2023-10-18 | 2024-02-20 | 苏州元脑智能科技有限公司 | 后台任务进度保存和恢复方法、装置、设备及存储介质 |
CN117149091A (zh) * | 2023-10-23 | 2023-12-01 | 四川云海芯科微电子科技有限公司 | 一种固态硬盘数据保存方法及相关装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI638263B (zh) * | 2017-07-26 | 2018-10-11 | 大陸商深圳大心電子科技有限公司 | 資料備份方法、資料恢復方法以及儲存控制器 |
TWI660271B (zh) * | 2018-04-24 | 2019-05-21 | 群聯電子股份有限公司 | 整理指令記錄方法、記憶體控制電路單元與記憶體儲存裝置 |
US10909030B2 (en) * | 2018-09-11 | 2021-02-02 | Toshiba Memory Corporation | Enhanced trim command support for solid state drives |
CN110568998B (zh) * | 2019-09-16 | 2023-06-06 | 深圳忆联信息系统有限公司 | 基于固态硬盘的Trim命令实现方法、装置和计算机设备 |
CN111737162A (zh) * | 2020-06-10 | 2020-10-02 | 广州市大黄蜂信息科技有限公司 | 一种快速恢复数据的固态硬盘使用方法及计算机可读存储介质 |
CN114237984A (zh) * | 2021-12-20 | 2022-03-25 | 深圳大普微电子科技有限公司 | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 |
-
2021
- 2021-12-20 CN CN202111562876.1A patent/CN114237984A/zh active Pending
-
2022
- 2022-11-25 WO PCT/CN2022/134511 patent/WO2023116346A1/zh unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023116346A1 (zh) * | 2021-12-20 | 2023-06-29 | 深圳大普微电子科技有限公司 | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 |
CN117539692A (zh) * | 2024-01-09 | 2024-02-09 | 武汉麓谷科技有限公司 | 一种zns固态硬盘数据集管理命令实现方法 |
CN117539692B (zh) * | 2024-01-09 | 2024-03-15 | 武汉麓谷科技有限公司 | 一种zns固态硬盘数据集管理命令实现方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2023116346A1 (zh) | 2023-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068391B2 (en) | Mapping table updating method for data storage device | |
US7911840B2 (en) | Logged-based flash memory system and logged-based method for recovering a flash memory system | |
CN114237984A (zh) | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 | |
KR100843543B1 (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
US6711663B2 (en) | Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof | |
US7191306B2 (en) | Flash memory, and flash memory access method and apparatus | |
US8312204B2 (en) | System and method for wear leveling in a data storage device | |
US20170139839A1 (en) | Data storage device and data maintenance method thereof | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
US8819387B2 (en) | Memory storage device, memory controller, and method for identifying valid data | |
JP2004303238A (ja) | フラッシュメモリアクセス装置及び方法 | |
CN107045423B (zh) | 存储器装置及其数据存取方法 | |
CN112397128A (zh) | 一种Flash存储器的控制方法和装置 | |
CN111949220A (zh) | 存储设备异常断电恢复方法及存储设备 | |
CN111966281B (zh) | 数据储存装置与数据处理方法 | |
KR20200057866A (ko) | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 | |
US10942811B2 (en) | Data processing method for solid state drive | |
US11366596B2 (en) | Data storage device and data access method for quickly loading boot data | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
US8762685B2 (en) | Data writing method, memory controller and memory storage apparatus | |
JP2011227802A (ja) | データ記録装置 | |
CN112035065B (zh) | 一种数据写入方法、装置、设备及计算机可读存储介质 | |
US11436105B2 (en) | Data processing method and memory controller utilizing the same | |
CN103389943A (zh) | 控制装置、存储装置及存储控制方法 |
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 |