具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种恢复固态硬盘映射表的方法及其装置,能够在较短时间内恢复SSD上次下电时的映射表。以下分别进行详细说明。
请参阅图1,本发明实施例中恢复固态硬盘映射表的方法的一个实施例包括:
101、判断在上次保存缓存中的映射表之后保存的修改信息是否达到预定数量,若是,则执行102,否则执行103;
本实施例中,实施恢复固态硬盘映射表的方法的装置设置于SSD。可以理解的是,实施恢复固态硬盘映射表的方法的装置也可以不设置于SSD。
102、保存缓存中的映射表,执行103;
103、接收数据写入操作指令,数据写入操作指令包括数据的逻辑地址信息;
104、根据数据的逻辑地址信息修改缓存中的映射表;
SSD在接收数据写入操作指令之后,可以根据数据的逻辑地址信息修改缓存中的映射表,即在缓存中的映射表中,将该数据的逻辑地址信息对应的旧物理地址信息修改为新物理地址信息。
新物理地址信息为该数据在闪存中的存储地址信息,可根据数据的逻辑地址信息获得,此为现有公知技术,此处不作赘述。
105、保存修改信息;
SSD在接收数据写入操作指令之后,可根据数据的逻辑地址信息获得新物理地址信息(即数据在闪存中的存储地址信息),再将数据写入闪存中,此为现有公知技术,此处不作赘述。
修改信息可以采用多种形式表示,只要能够指示SSD是如何修改缓存中的映射表的,即能够指示在缓存中的映射表中,哪些逻辑地址信息对应的物理地址信息有修改,修改为什么新物理地址信息。
例如,修改信息可以为包括修改缓存中的映射表涉及的逻辑地址信息和新物理地址信息的增量信息项。
SSD可以根据105获得修改信息,也可以在接收数据写入操作指令后,根据数据的逻辑地址信息获得新物理地址信息,从而获得修改信息。
因此,104与105没有必然的先后顺序,将数据写入闪存中与保存修改信息也没有必然的先后顺序。
106、当固态硬盘上电时,加载保存的映射表至缓存中;根据在修改保存的映射表之后保存的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表,再执行101。
由101至105可知,当SSD上电时,可加载保存的映射表至缓存中,获取并根据在保存加载的映射表之后保存的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表。相对现有技术,本实施例不需要利用重建信息以恢复SSD上次下电时的映射表,无需读取分布于闪存的每个块或每个页中的重建信息,因此,本实施例能够在较短时间内恢复SSD上次下电时的映射表,并且,SSD可以不存储重建信息,节约了存储开销。
为便于理解,下面以一更具体的实施例,对本发明实施例中恢复固态硬盘映射表的方法进行详细说明。
请参阅图2,本发明实施例中恢复固态硬盘映射表的方法的一个实施例包括:
201、判断第一存储单元是否存储已满,若是,则执行202,否则执行204;
本实施例中,仍以实施恢复固态硬盘映射表的方法的装置设置于SSD为例。
第一存储单元可为铁电存储器(FRAM,Ferroelectric Magnetic RandomAccess Memory)、磁性随机存储器(MRAM,Magnetic Random AccessMemory)、或非门闪存(NOR FLASH Memory),或其他非易失存储介质。第一存储单元可以集成于SSD,也可以外设于SSD。可以理解的是,也可以将SSD的闪存中的指定存储区域作为第一存储单元。
202、将缓存中的映射表写入闪存;
203、删除第一存储单元中的修改信息,删除修改信息后,执行204;
在执行202后,执行203。
204、接收数据写入操作指令,数据写入操作指令包括数据的逻辑地址信息;
205、根据数据的逻辑地址信息修改缓存中的映射表;
206、将数据写入闪存中,并在第一存储单元中保存修改信息,再执行201;
206的具体执行方式可以包括以下两种:(1)先将数据写入闪存中后,再在第一存储单元中保存修改信息;(2)将数据写入闪存中,同时,在第一存储单元中保存修改信息。
207、当固态硬盘上电时,加载闪存中最新保存的映射表至缓存中;
可以理解的是,可以在执行202(将缓存中的映射表写入闪存)后,将已写入闪存的最新的映射表设定标记,再执行203(删除第一存储单元中的修改信息);当固态硬盘上电时,则可以加载闪存中设定标记的映射表至缓存中。
可以理解的是,也可以在将缓存中的映射表写入闪存后,删除闪存中旧的映射表,当固态硬盘上电时,则可以加载闪存中唯一的映射表至缓存中。
208、获取第一存储单元中当前的修改信息;
在执行207后,执行208。
209、根据第一存储单元中当前的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表,再执行201。
由201至206可知,当SSD上电时,可加载闪存中最新保存的映射表至缓存中,获取并根据第一存储单元中的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表。然后,再执行201。
此处需要说明的是,当206采用第(2)种方式时,可能会出现SSD下电时,SSD已经保存修改信息,但还未来得及将数据写入闪存中的情况,导致保存的修改信息是无效的。因此,当206采用第(2)种方式时,SSD根据第一存储单元中的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表具体可以包括:判断修改信息是否有效,若有效,则根据修改信息修改加载在缓存中的映射表。
当206采用第(1)种方式时,不会出现保存的修改信息无效的情况,因此,SSD可以直接根据修改信息修改加载在缓存中的映射表,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表。
可以理解的是,当SSD上电时,若第一存储单元没有保存有修改信息,说明在SSD上次下电时,SSD刚好删除第一存储单元中的修改信息,还未来得及执行204和继续修改缓存中的映射表,因此,当SSD此次上电时,SSD加载到缓存中的映射表即为SSD上次下电时的映射表。
本实施例中,SSD在接收数据写入操作指令之后,修改缓存中的映射表,将数据写入闪存中,并在第一存储单元中保存修改信息。若第一存储单元存储已满,则将缓存中的映射表写入闪存中,再删除第一存储单元中的修改信息,然后再接收数据写入操作指令,进行新的修改信息的保存。
因此,当SSD上电时,SSD可以将闪存中最新保存的映射表加载至缓存中,获取并根据第一存储单元中的修改信息,将加载在缓存中的映射表恢复为SSD上次下电时的映射表。相对现有技术,本发明实施例不需要利用重建信息以恢复SSD上次下电时的映射表,无需读取分布于闪存的每个块或每个页中的重建信息,因此,本实施例能够在较短时间内恢复SSD上次下电时的映射表,并且,SSD可以不存储重建信息,节约了存储开销。
此外,为了能在下电时将缓存中的映射表写入闪存中,现有技术中的SSD设置了超级电容,而本实施例不需设置超级电容,实现较为简单。
下面以修改信息为上述增量信息项(包括修改缓存中的映射表涉及的逻辑地址信息和新物理地址信息)为例,对本发明实施例中恢复固态硬盘映射表的方法进行详细说明,请参阅图3,本发明实施例中恢复固态硬盘映射表的方法的另一实施例包括:
301、判断第一存储单元是否存储已满,若是,则执行302,否则执行305;
本实施例仍以实施恢复固态硬盘映射表的方法的装置设置于SSD为例。
302、将缓存中的映射表写入闪存;
303、将已写入闪存的最新的映射表设定标记;
在执行302后,执行303。
可以理解的是,在将已写入闪存的最新的映射表设定标记后,可以删除闪存中旧的映射表,以减小闪存的存储开销。
304、删除第一存储单元中的增量信息项,再执行305;
在执行303后,执行304。
305、接收数据写入操作指令;
306、修改缓存中的映射表;
307、将数据写入闪存中;
308、在第一存储单元中保存增量信息项,再执行301;
本实施例中,在将数据写入闪存中后,在第一存储单元中保存增量信息项,以避免出现保存的增量信息项无效的情况。
增量信息项包括修改缓存中的映射表涉及的逻辑地址信息和新物理地址信息。
309、当固态硬盘上电时,加载闪存中设定标记的映射表至缓存中;
310、获取第一存储单元中的增量信息项;
311、对应于第一存储单元中的增量信息项的逻辑地址信息,将该增量信息项的新物理地址信息填入加载在缓存中的映射表,以将加载在缓存中的映射表恢复为SSD上次下电时的映射表,再执行301。
当第一存储单元采用FRAM时,由于操作FRAM的时间较慢,因此,本实施例也可以在将数据写入闪存中的同时,在第一存储单元中保存增量信息项,以减少总的时间开销。但此时,会出现SSD下电时,SSD已经保存增量信息项,但还未来得及将数据写入闪存中的情况,导致保存的增量信息项是无效的。
因此,当保存增量信息项与将数据写入闪存中同时进行时,在311中,SSD需要先根据增量信息项对应的新物理地址数据判断增量信息项是否有效,若有效,才对应于增量信息项的逻辑地址信息,将该增量信息项的新物理地址信息填入加载在缓存中的映射表。
SSD根据增量信息项对应的新物理地址数据判断增量信息项是否有效,具体为:SSD根据增量信息项的新物理地址信息获取新物理地址数据,若新物理地址数据正确,即新物理地址有数据,则判定该增量信息项有效,否则判定该增量信息项无效。
此处需要说明的是,SSD若判定增量信息项对应的新物理地址数据不正确,即新物理地址没有数据,则SSD判定该增量信息项无效,但是,若在后面的过程中,该新物理地址被写入数据,则下次就会将该增量信息项误判为有效。因此,SSD在判定增量信息项无效之后,可以将该增量信息项删除,也可以将该增量信息项标记为无效,以免下次判断时出错。
本实施例中,SSD上电时,可将闪存中设定标记的映射表加载至缓存中,获取第一存储单元中的增量信息项,并对应于增量信息项的逻辑地址信息,将该增量信息项的新物理地址信息填入加载在缓存中的映射表,从而将加载在缓存中的映射表恢复为SSD上次下电时的映射表。相对现有技术,本实施例不需要利用重建信息以恢复SSD上次下电时的映射表,无需读取分布于闪存的每个块或每个页中的重建信息,因此,本实施例能够在较短时间内恢复SSD上次下电时的映射表。并且,本实施例中,SSD无需存储重建信息,节约了存储开销。
可以理解的是,还可以用旧物理地址数据来判断增量信息项是否有效,此时,增量信息项还需包括旧物理地址信息。下面,则以增量信息项还包括旧物理地址信息为例,说明本发明实施例中恢复固态硬盘映射表的方法。
请参阅图4,本发明实施例中恢复固态硬盘映射表的方法的另一实施例包括:
401、判断第一存储单元是否存储已满,若是,则执行402,否则执行405;
本实施例仍以实施恢复固态硬盘映射表的方法的装置设置于SSD为例。
402、将缓存中的映射表写入闪存;
403、将已写入闪存的最新的映射表设定标记;
在执行402后,执行403。
可以理解的是,在将已写入闪存的最新的映射表设定标记后,可以删除闪存中旧的映射表,以减小闪存的存储开销。
404、删除第一存储单元中的增量信息项,再执行405;
在执行403后,执行404。
405、接收数据写入操作指令;
406、修改缓存中的映射表;
407、将数据写入闪存中,同时,在第一存储单元中保存增量信息项,再执行401;
增量信息项包括修改缓存中的映射表涉及的逻辑地址信息、新物理地址信息和旧物理地址信息。
408、当固态硬盘上电时,加载闪存中设定标记的映射表至缓存中;
409、获取第一存储单元中的增量信息项;
410、判断增量信息项是否为完成状态,若是,则执行413;否则执行411;
本实施例中,将有效的增量信息项标记为完成状态。
411、根据该增量信息项的旧物理地址信息获取旧物理地址数据;
在410中若判定增量信息项不为完成状态,则执行411。
412、若旧物理地址数据不正确,则将该增量信息项标记为完成状态,再执行413;
在根据增量信息项的旧物理地址信息获取旧物理地址数据之后,SSD判断该旧物理地址数据是否正确,若不正确,即旧物理地址无数据,说明该增量信息项有效,则将该增量信息项标记为完成状态。
此处需要说明的是,本实施例中,若SSD根据增量信息项的旧物理地址信息获取的旧物理地址数据不正确,即旧物理地址没有数据,SSD则判定该增量信息项有效,若在之后,该旧物理地址被写入数据,则下次就会将该增量信息项误判为无效。因此,SSD在根据旧物理地址数据判定增量信息项有效之后,可将该增量信息项标记为完成状态,则下次判断时,若增量信息项为完成状态,则确定该增量信息项为有效的。
413、根据增量信息项的逻辑地址信息,将该增量信息项的新物理地址信息填入加载在缓存中的映射表。
在410判定增量信息项为完成状态之后,或者,在412中将增量信息项标记为完成状态后,SSD执行413,将加载在缓存中的映射表恢复为SSD上次下电时的映射表。
可以理解的是,本实施例中,SSD也可以根据增量信息项的新物理地址信息获取新物理地址数据,若新物理地址数据正确,则对应于该增量信息项的逻辑地址信息,将该增量信息项的新物理地址信息填入加载在缓存中的映射表,否则删除该增量信息项,从而将加载在缓存中的映射表恢复为SSD上次下电时的映射表。
可以理解的是,在将数据写入闪存中之后,可以确定保存的增量信息项是有效的,因此,可以在将数据写入闪存中之后,将保存的增量信息项标记为完成状态。
本实施例中,SSD上电时,可将闪存中设定标记的映射表加载至缓存中,获取第一存储单元中的增量信息项,并可以根据增量信息项中的旧物理地址信息或新物理地址信息,将加载在缓存中的映射表恢复为SSD上次下电时的映射表。相对现有技术,本实施例不需要利用重建信息以恢复SSD上次下电时的映射表,无需读取分布于闪存的每个块或每个页中的重建信息,因此,本实施例能够在较短时间内恢复SSD上次下电时的映射表。并且,本实施例中,SSD无需存储重建信息,节约了存储开销。
下面,对本发明实施例中恢复固态硬盘映射表的装置进行说明,请参阅图5,本发明实施例中恢复固态硬盘映射表的装置的一个实施例,该装置包括:
判断模块501,用于判断在上次保存缓存中的映射表之后保存的修改信息是否达到预定数量,若是,则触发写入模块502执行相关操作,否则触发接收模块503执行相关操作;
写入模块502,用于保存缓存中的映射表,并在保存映射表后触发接收模块503执行相关操作;
接收模块503,用于接收数据写入操作指令,数据写入操作指令包括数据的逻辑地址信息;
处理模块504,用于根据逻辑地址信息修改保存的映射表,保存修改信息;
映射表恢复模块505,用于当固态硬盘上电时,加载保存的映射表至缓存中;根据在修改保存的映射表之后保存的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表。
本实施例中的恢复固态硬盘映射表的装置,当SSD上电时,可加载保存的映射表至缓存中,获取并根据在保存加载的映射表之后保存的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表。相对现有技术,本实施例不需要利用重建信息以恢复SSD上次下电时的映射表,无需读取分布于闪存的每个块或每个页中的重建信息,因此,本实施例能够在较短时间内恢复SSD上次下电时的映射表,并且,SSD可以不存储重建信息,节约了存储开销。
下面以一更具体的实施例对本发明实施例中的恢复固态硬盘映射表的装置进行详细说明。请参阅图6,本发明实施例中处理信息流的装置的另一个实施例,该装置包括:
判断模块601,用于判断在上次保存缓存中的映射表之后保存的修改信息是否达到预定数量,若是,则触发写入模块602执行相关操作,否则触发接收模块603执行相关操作;
写入模块602,用于保存缓存中的映射表,并在保存映射表后触发删除模块执行相关操作;
接收模块603,用于接收数据写入操作指令,数据写入操作指令包括数据的逻辑地址信息;
处理模块604,用于根据逻辑地址信息修改保存的映射表,保存修改信息;
映射表恢复模块605,用于当固态硬盘上电时,加载最新保存的映射表至缓存中;根据在修改保存的映射表之后保存的修改信息,将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表;
删除模块606,用于删除第一存储单元中存储的修改信息,并触发接收模块执行相关操作。
在该装置中,判断模块601判断在上次保存缓存中的映射表之后保存的修改信息是否达到预定数量包括:判断用于存储修改信息的第一存储单元是否存储已满,若是,则达到预定数量;否则未达到预定数量;
如图7所示,映射表恢复模块605包括:加载单元6051、获取单元6052和恢复单元6053;
加载单元6051,用于当固态硬盘上电时,加载保存的映射表至缓存中;
获取单元6052,用于获取第一存储单元中的修改信息;
恢复单元6053,用于根据第一存储单元中的修改信息将加载在缓存中的映射表恢复为固态硬盘上次下电时的映射表;
进一步地,该装置还可以包括:设定标记模块607,用于将已写入闪存的最新的映射表设定标记;
加载最新保存的映射表至缓存中包括:加载闪存中设定标记的映射表至缓存中。
本实施例中的恢复固态硬盘映射表的装置,当SSD上电时,可以将最新保存的映射表加载至缓存中,获取并根据第一存储单元中的修改信息,将加载在缓存中的映射表恢复为SSD上次下电时的映射表。相对现有技术,本发明实施例不需要利用重建信息以恢复SSD上次下电时的映射表,无需读取分布于闪存的每个块或每个页中的重建信息,因此,本实施例能够在较短时间内恢复SSD上次下电时的映射表,并且,SSD可以不存储重建信息,节约了存储开销。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的恢复固态硬盘映射表的方法及其装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。