一种基于block生长记录的SSD异常掉电恢复方法及其系统与流程

文档序号:17079486发布日期:2019-03-09 00:05阅读:214来源:国知局
本发明涉及固态硬盘异常掉电的管控领域,更具体地说是指一种基于block生长记录的ssd异常掉电恢复方法及其系统。
背景技术
::针对ssd的异常掉电恢复,通常的方法是在上电后通过对所有块的搜索,将块的状态与掉电前的最后一次写入的管理信息(metadata)的状态进行对比,找到需要进行数据恢复的冲突块,进而对冲突块的数据进行恢复。这种方法的弊端是需要对nand(nand-flash)所有块进行扫描,搜索冲突块,造成时间消耗,而在数据恢复的过程中又必须通过映射表读取表中指引数据的时间戳,与当前时间戳对比,以确认数据的新旧关系,这种反复验证的过程也会影响掉电恢复的效率,无法满足需求。技术实现要素:本发明的目的在于克服现有技术的缺陷,提供一种基于block生长记录的ssd异常掉电恢复方法及其系统。为实现上述目的,本发明采用于下技术方案:一种基于block生长记录的ssd异常掉电恢复方法,包括以下步骤:s1,获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1,并根据原有的映射表查找,获知lpn对应的原pmt0;s2,判断pmt0指引的块是否为新增冲突块;若是,则进入s4;若不是,则进入s3;s3,将pmt0更新为vpn1;s4,由pmt0读取指引物理地址vpn0,并获取数据时间戳ts0;s5,根据时间戳ts1与时间戳ts0,对lpn的pmt进行设置。其进一步技术方案为:所述s1包括:s11,获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1;s12,根据原有的映射表查找,获知lpn对应的原pmt0。其进一步技术方案为:所述s2中,判断pmt0指引的块是否在块生长记录内,若在,则为新增冲突块。其进一步技术方案为:所述块生长记录为记录两次metaflush之间块的分配、失效、擦除状态;metaflush是指在适当时间,将ssdfw的关键管理信息存入到nand中;在一次metaflush之后,随着i/ocommand各种指令输入,管理信息meta会被修改,在下一次metaflush时,会将这个时间段内发生的meta变化再次写入nand。其进一步技术方案为:还包括当发生异常掉电时,由于meta管理信息数量大,无法及时写入nand,择取最关键的信息写入nand,实现上电恢复;在两次metaflush之间,维护块生长记录信息,即此次需要恢复的块,企业级ssd在电容保护时间内将其写入nand,留作恢复使用,在消费级ssd中,无法及时将块生长记录写入nand,但上电恢复之前,可重构块生长记录,同理进行数据恢复。其进一步技术方案为:所述s5包括:s51,判断时间戳ts1的时间是否晚于时间戳ts0;若是,则进入s52;若不是,则进入s53;s52,更新lpn的pmt为vpn1;s53,保持lpn的pmt为vpn0。一种基于block生长记录的ssd异常掉电恢复系统,包括构造单元,重构单元,获取查找单元,判断单元,更新单元,读取单元,及设置单元;所述构造单元,用于在ssd运行过程中,实时记录块生长过程;所述重构单元,用于在上电恢复前,通过数据扫描重新生成待恢复数据块的生长过程;所述获取查找单元,用于获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1,并根据原有的映射表查找,获知lpn对应的原pmt0;所述判断单元,用于判断pmt0指引的块是否为新增冲突块;所述更新单元,用于将pmt0更新为vpn1;所述读取单元,用于pmt0读取指引物理地址vpn0,并获取数据时间戳ts0;所述设置单元,用于根据时间戳ts1与时间戳ts0,对lpn的pmt进行设置。其进一步技术方案为:所述获取查找单元包括获取模块和查找模块;所述获取模块,用于获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1;所述查找模块,用于根据原有的映射表查找,获知lpn对应的原pmt0。其进一步技术方案为:所述判断单元,用于判断pmt0指引的块是否在块生长记录内,若在,则为新增冲突块。其进一步技术方案为:所述设置单元包括时间判断模块,更新模块及保持模块;所述时间判断模块,用于判断时间戳ts1的时间是否晚于时间戳ts0;所述更新模块,用于更新lpn的pmt为vpn1;所述保持模块,用于保持lpn的pmt为vpn0。本发明与现有技术相比的有益效果是:1、对于企业级ssd,在电容保护时间内,可以不需要写入映射表,减轻下电时备份数据的压力;而上电恢复时,避免了对全盘的块级扫描,迅速定位恢复对象;2、根据block生长过程记录,相当于已知了哪些是已有的旧数据块,哪些是新增的冲突数据块,因此在data恢复时,一旦发现原映射表指引的数据物理地址是旧块,就可以直接更新映射表;而只在当指引数据的物理地址为新增冲突块,才需要读nand数据页确认时间戳新旧,这样减少了恢复过程中对nand的读操作,大大提高了数据恢复的效率,更好地满足了需求。下面结合附图和具体实施例对本发明作进一步描述。附图说明图1为现有技术方法的流程图;图2为本发明基于block生长记录的ssd异常掉电恢复方法的流程图;图3为图2中s5的流程图;图4为块生长记录示意图;图5为块异常掉电时的示意图;图6为块生长过程的示意图;图7为本发明基于block生长记录的ssd异常掉电恢复系统的方框图。10构造单元20重构单元30获取查找单元31获取模块32查找模块40判断单元50更新单元60读取单元70设置单元71时间判断模块72更新模块73保持模块具体实施方式为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。如图1到图7所示的具体实施例,其中,如图1所示,现有现有技术的方法的流程图,通常的数据更新恢复映射表的过程如下,以单个lpn的恢复过程为例:1、首先已知待恢复数据lpn和待确认vpn1及时间戳ts1;2、根据原有的映射表查表,可知lpn对应的原pmt0;3、由pmt0得到vpn0,并在nand上读取vpn0指引地址的数据及时间戳,假设时间戳为ts0;4、通过时间戳ts1与时间戳ts0的对比,确定是否需要更新映射表,若时间戳ts1的时间晚于时间戳ts0,则更新为vpn1;反之,则保持vpn0。在上述方法中,3中的步骤需要对nand读操作,消耗较大,降低了数据恢复的效率。其中,在发明中,对以下关键术语进行简要说明:lpn:logicpagenumber,用户数据的管理单元,通常主机数据以sector(512byte)为最小单元发给ssd,固件会定义为sector的整数倍形成lpn。vpn:virtualpagenumber,即nand物理地址。pmt:每个lpn都对应一个vpn。mappingtable:所有lpn与vpn关系的集合统称映射表。ts:timestamp时间戳。如图2至图6所示,本发明公开了一种基于block生长记录的ssd异常掉电恢复方法,包括以下步骤:s1,获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1,并根据原有的映射表查找,获知lpn对应的原pmt0;s2,判断pmt0指引的块是否为新增冲突块;若是,则进入s4;若不是,则进入s3;s3,将pmt0更新为vpn1;s4,由pmt0读取指引物理地址vpn0,并获取数据时间戳ts0;其中,s1包括:s11,获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1;s12,根据原有的映射表查找,获知lpn对应的原pmt0。其中,在s2中,判断pmt0指引的块是否在块生长记录内,若在,则为新增冲突块。其中,如图3所示,s5包括:s51,判断时间戳ts1的时间是否晚于时间戳ts0;若是,则进入s52;若不是,则进入s53;s52,更新lpn的pmt为vpn1;s53,保持lpn的pmt为vpn0。本发明提出的恢复方法,有两处优点:第一:对企业级ssd来说,上电恢复时,通过块生长记录可以迅速获知哪些块的数据需要进行恢复,而不需要经过扫描判断。对消费级ssd来说,还需要上电时重构块生长记录,以用于后续恢复时优化。第二:对恢复映射表这一过程本身的优化。如图4所示,本发明中基于块生长记录,实际上就是要记录两次metaflush之间块的分配、失效、擦除状态;所谓metaflush是指在适当时间,将ssdfw的关键管理信息存入到nand中;在一次metaflush之后,随着i/ocommand(读写命令)等各种指令输入,管理信息meta会被修改,在下一次metaflush时,会将这个时间段内发生的meta变化再次写入nand。如图5所示,当发生异常掉电时,由于meta管理信息数量大,可能无法及时写入nand(企业级可在电容保护时间内写入有限大小的数据,消费级完全没有机会写入meta),因此择取最关键的信息写入nand,帮助上电恢复是最有效的;因此可以在两次metaflush之间,维护块生长记录信息,即此次需要恢复的块,企业级ssd可以在电容保护时间内将其写入nand,留作恢复使用,在消费级ssd中,无法及时将块生长记录写入nand,但上电恢复之前,可重构块生长记录,同理进行数据恢复。如图6所示,记录块生长过程,就是记录块的分配和块的擦除的生命变化。如图7所示,本发明还公开了一种基于block生长记录的ssd异常掉电恢复系统,包括构造单元10,重构单元20,获取查找单元30,判断单元40,更新单元50,读取单元60,及设置单元70;构造单元10,用于在ssd运行过程中,实时记录块生长过程;重构单元20,用于在上电恢复前,通过数据扫描重新生成待恢复数据块的生长过程;获取查找单元30,用于获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1,并根据原有的映射表查找,获知lpn对应的原pmt0;判断单元40,用于判断pmt0指引的块是否为新增冲突块;更新单元50,用于将pmt0更新为vpn1;读取单元60,用于pmt0读取指引物理地址vpn0,并获取数据时间戳ts0;设置单元70,用于根据时间戳ts1与时间戳ts0,对lpn的pmt进行设置。其中,获取查找单元30包括获取模块31和查找模块32;获取模块31,用于获取待恢复lpn数据的物理地址vpn1及对应的时间戳ts1;查找模块32,用于根据原有的映射表查找,获知lpn对应的原pmt0。其中,判断单元40,用于判断pmt0指引的块是否在块生长记录内,若在,则为新增冲突块。其中,设置单元70包括时间判断模块71,更新模块72及保持模块73;时间判断模块71,用于判断时间戳ts1的时间是否晚于时间戳ts0;更新模块72,用于更新lpn的pmt为vpn1;保持模块73,用于保持lpn的pmt为vpn0。其中,对新增冲突块的数据进行恢复,绝大多数数据的恢复都会沿判断单元40路径迅速完成;只有个别由于恢复顺序影响,才会需要完整的时间戳检索和比较流程进行恢复,所以大大降低了对nand读操作,加快了恢复速度。本发明在企业级ssd工作过程中,将数据操作过程中块的分配、失效、擦除统一管理,实时记录块的生长状态信息,这样,在企业级异常掉电的电容保护时间内,将块的生长记录信息随着meta数据一并写入nand。在上电恢复时,提取meta数据中的块生长记录,从而获知哪些块的数据是需要恢复的冲突数据,进而针对性的进行数据恢复。而在消费级ssd固件中,异常掉电时没有电容保护,无法直接将块的生长信息写入nand;但可以通过在上电恢复时,首先搜索出块的生长排序,在由重构后的块生长信息进行数据恢复。上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1