掉电保护方法、装置、可读存储介质及电子设备与流程

文档序号:32782963发布日期:2022-12-31 16:52阅读:63来源:国知局
1.本发明涉及固态硬盘
技术领域
:,尤其涉及一种掉电保护方法、装置、可读存储介质及电子设备。
背景技术
::2.目前在主流的企业级ssd(solidstatedrives,固态硬盘)固件开发中,dram(dynamicrandomaccessmemory,动态随机存储器)系列的ssd上一般都配备电容进行掉电保护,原因是dram中存储了主机读写数据和修改过的l2p(logicaltophysical,逻辑块到物理块)映射数据;受限于ssd成本和尺寸,配套的电容也是有限的,如何保证在有限的电容放电时长中所有数据都不丢失,并且上电后可以进行快速恢复,这是ssd厂商需要重点考虑的问题。3.发生了powerlost(掉电)事件后,首先将主机写过的数据刷入nand(闪存)中,并且将缓存在l2p缓存池中的映射数据刷入nand;其中l2p缓存池中存储的是按照请求先后顺序更新的laa(逻辑地址)和paa(物理地址)之间的映射关系,例如laa0、laa50、laa2000等按照请求顺序依次存储;l2p缓存表中存储的是按照地址关系存储的laa和paa之间的映射关系,例如laa0、laa1、laa2等按照地址顺序依次存储;由于l2p缓存表数据量比较多,如果按照4k的映射粒度存储4bytes的地址,则1t的数据空间需要1g的l2p缓存表,所以在发生powerlost的时候是不能保证将l2p缓存表中的所有数据更新至nand。4.目前的主流方案为:如图4和图5所示,l2p缓存表会在后台进行周期刷nand,例如固定时长或者固定写入量进行触发;发生powerlost后将l2p缓存池中的增量数据刷入nand,l2p完整更新一次后会形成类似数据库的一致性checkpoint(一个内部事件),后续的增量更新可以通过l2p缓存池来进行恢复。5.此方案存在一个比较严重的问题,即如果l2p缓存池中存储的数据比较多,上电过程需要loadl2p缓存池中的所有数据更新至l2p缓存表,才能执行主机下发的读写请求,可能导致上电时间过长或者主机请求响应慢的问题。技术实现要素:6.本发明所要解决的技术问题是:提供一种掉电保护方法、装置、可读存储介质及电子设备,能够减少重新上电的时长,且提高响应主机读写请求的速度。7.为了解决上述技术问题,本发明采用的一种技术方案为:一种掉电保护方法,包括步骤:接收掉电发生信息;根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的所述分段l2p映射数据生成掉电段表;接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据。8.为了解决上述技术问题,本发明采用的另一种技术方案为:一种掉电保护装置,包括:信息获取模块,用于接收掉电发生信息;数据处理模块,用于根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的所述分段l2p映射数据生成掉电段表;数据读取模块,用于接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据。9.为了解决上述技术问题,本发明采用的另一种技术方案为:一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种掉电保护方法中的各个步骤。10.为了解决上述技术问题,本发明采用的另一种技术方案为:一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种掉电保护方法中的各个步骤。11.本发明的有益效果在于:根据掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的分段l2p映射数据生成掉电段表,根据主机读请求基于掉电段表读取待读取数据,实现了分段掉电保护,从掉电段表可以知道哪些分段的数据还未刷入闪存,即哪些还未转换至l2p映射表,当上电后且接收到主机读请求时,可基于掉电段表进行互斥和恢复,无需等待所有l2p缓存池中的数据恢复至l2p映射表即可响应主机读请求,从而减少重新上电的时长,且提高响应主机读写请求的速度,减少因为重新上电过长导致的兼容性问题。附图说明12.图1为本发明实施例的一种掉电保护方法的步骤流程图;图2为本发明实施例的一种掉电保护装置的结构示意图;图3为本发明实施例的一种电子设备的结构示意图;图4为现有技术中掉电时数据保护示意图;图5为现有技术中上电时数据恢复示意图;图6为本发明实施例的掉电保护方法中的掉电时数据保护示意图;图7为本发明实施例的掉电保护方法中的上电时数据恢复示意图。具体实施方式13.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。14.请参照图1,本发明实施例提供了一种掉电保护方法,包括步骤:接收掉电发生信息;根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的所述分段l2p映射数据生成掉电段表;接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据。15.从上述描述可知,本发明的有益效果在于:根据掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的分段l2p映射数据生成掉电段表,根据主机读请求基于掉电段表读取待读取数据,实现了分段掉电保护,从掉电段表可以知道哪些分段的数据还未刷入闪存,即哪些还未转换至l2p映射表,当上电后且接收到主机读请求时,可基于掉电段表进行互斥和恢复,无需等待所有l2p缓存池中的数据恢复至l2p映射表即可响应主机读请求,从而减少重新上电的时长,且提高响应主机读写请求的速度,减少因为重新上电过长导致的兼容性问题。16.进一步地,所述根据接收的掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存之前包括步骤:获取l2p映射数据;将所述l2p映射数据按照预设长度进行分段,得到多个分段l2p映射数据;将每一所述分段l2p映射数据存储至对应的l2p缓存池。17.由上述描述可知,将l2p映射数据按照预设长度进行分段,将每一分段l2p映射数据存储至对应的l2p缓存池,便于后续实现分段掉电保护。18.进一步地,所述接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据包括:判断是否接收到上电发生信息;若是,则根据所述上电发生信息基于所述掉电段表确定每一分段对应的掉电保护信息;判断是否接收到主机读请求,所述主机读请求包括待读取数据,若是,则根据所述主机读请求基于所述每一分段对应的掉电保护信息读取所述待读取数据。19.由上述描述可知,掉电保护信息表示了对应分段中的数据是否还没有转换至l2p映射表中,在后续接收到主机读请求时,可依据掉电保护信息确定是否直接从l2p映射表读取数据,提高了主机读请求的响应速度。20.进一步地,所述基于刷入的所述分段l2p映射数据生成掉电段表包括:确定刷入的每一所述分段l2p映射数据对应的物理地址、段标识以及刷入时间戳;根据所述物理地址、段标识以及刷入时间戳生成掉电段表。21.由上述描述可知,根据物理地址、段标识以及刷入时间戳生成掉电段表,通过掉电段表可以知道哪些分段的哪些数据已刷入闪存,即已转换至l2p映射表,便于基于掉电段表确定后续响应读请求的方法。22.进一步地,所述根据所述上电发生信息基于所述掉电段表确定每一分段对应的掉电保护信息包括:根据所述上电发生信息遍历每一分段,对于遍历到的分段,根据所述物理地址、段标识以及刷入时间戳判断所述遍历到的分段是否存在于所述掉电段表中,若是,则确定所述遍历到的分段对应的掉电保护信息为第一预设值,否则,确定所述遍历到的分段对应的掉电保护信息为第二预设值。23.由上述描述可知,根据物理地址、段标识以及刷入时间戳可以准确、有效地了解哪些数据未恢复,以便减少掉电后重新上电的时长。24.进一步地,所述根据所述主机读请求基于所述每一分段对应的掉电保护信息读取所述待读取数据包括:根据所述主机读请求确定所述待读取数据对应的目标分段;从所述每一分段对应的掉电保护信息中确定所述目标分段对应的目标掉电保护信息;判断所述目标掉电保护信息是否为第一预设值,若是,则直接从所述l2p缓存池对应的l2p缓存表中读取所述待读取数据,若否,则将所述目标分段中的分段l2p映射数据加载至所述l2p缓存池对应的l2p缓存表,并从所述l2p缓存表中读取所述待读取数据。25.由上述描述可知,当目标掉电保护信息为第一预设值时,则表示该分段中的数据均恢复至l2p缓存池对应的l2p缓存表,可直接从l2p缓存表中读取待读取数据,否则,认为该分段还存在部分数据未恢复至l2p缓存池对应的l2p缓存表,则需要将该分段中的分段l2p映射数据加载至l2p缓存表,然后从l2p缓存表读取数据,以此及时响应主机的读请求,提高了响应效率。26.进一步地,所述第一预设值为0。27.请参照图2,本发明另一实施例提供了一种掉电保护装置,包括:信息获取模块,用于接收掉电发生信息;数据处理模块,用于根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的所述分段l2p映射数据生成掉电段表;数据读取模块,用于接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据。28.本发明另一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种掉电保护方法中的各个步骤。29.请参照图3,本发明另一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种掉电保护方法中的各个步骤。30.本发明上述的掉电保护方法、装置、可读存储介质及电子设备能够适用于ssd中,以下通过具体实施方式进行说明:实施例一请参照图1、图6和图7,本实施例的一种掉电保护方法,包括步骤:s1、获取l2p映射数据;s2、将所述l2p映射数据按照预设长度进行分段,得到多个分段l2p映射数据;其中,所述预设长度可根据实际情况进行设置;在一种可选的实施方式中,所述预设长度为16g,将所述l2p映射数据按照16g进行分段,得到多个分段l2p映射数据,1t的范围可以划分64个segment(分段)。31.s3、将每一所述分段l2p映射数据存储至对应的l2p缓存池,即每一segment都对应了各自的l2p缓存池。32.s4、接收掉电(powerlost)发生信息;s5、根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的所述分段l2p映射数据生成掉电段表,如图6所示,具体包括:s51、根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存(nand)。33.s52、确定刷入的每一所述分段l2p映射数据对应的物理地址(paa)、段标识(segmentid)以及刷入时间戳;s53、根据所述物理地址、段标识以及刷入时间戳生成掉电段表(segmenttable)。34.具体的,将所述物理地址、段标识以及刷入时间戳保存至segmenttable。35.s6、接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据,如图7所示,具体包括:s61、判断是否接收到上电(poweron)发生信息;s611、若是,则根据所述上电发生信息基于所述掉电段表确定每一分段对应的掉电保护信息;具体的,根据所述上电发生信息遍历每一分段,对于遍历到的分段,根据所述物理地址、段标识以及刷入时间戳判断所述遍历到的分段是否存在于所述掉电段表中,若是,则确定所述遍历到的分段对应的掉电保护信息(segmentdirtybitmap)为第一预设值,否则,确定所述遍历到的分段对应的掉电保护信息为第二预设值。36.其中,所述第一预设值为0,所述第二预设值为1。37.比如,某一segment的segmentid在segmenttable中,且该segment的所有分段l2p映射数据的paa都在segmenttable中,则将该segment对应的segmentdirtybitmap确定为1,否则,确定为0。38.s612、若否,则返回s61;s62、判断是否接收到主机读请求,所述主机读请求包括待读取数据;s621、若是,则根据所述主机读请求基于所述每一分段对应的掉电保护信息读取所述待读取数据,具体包括:s6211、根据所述主机读请求确定所述待读取数据对应的目标分段;其中,所述待读取数据为待读取数据对应的逻辑地址(laa);具体的,根据所述待读取数据对应的逻辑地址确定所述待读取数据对应的目标分段。39.s6212、从所述每一分段对应的掉电保护信息中确定所述目标分段对应的目标掉电保护信息;比如,所有segmentdirtybitmap为00011100011001,假设目标分段为segment2,则对应的目标掉电保护信息为0,表示最新的l2p映射数据已经在l2p缓存表中,可以直接读取l2p缓存表,假设目标分段为segment4,则对应的目标掉电保护信息为1,表示还有l2p映射数据在l2p缓存池中,可以直接load对应segment中的数据进入l2p缓存表即可。40.s6213、判断所述目标掉电保护信息是否为第一预设值,若是,则直接从所述l2p缓存池对应的l2p缓存表中读取所述待读取数据,若否,则将所述目标分段中的分段l2p映射数据加载至所述l2p缓存池对应的l2p缓存表,并从所述l2p缓存表中读取所述待读取数据。41.s622、若否,则返回s62。42.实施例二请参照图2,本实施例的一种掉电保护装置,包括:信息获取模块,用于接收掉电发生信息;数据处理模块,用于根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的所述分段l2p映射数据生成掉电段表;数据读取模块,用于接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据。43.实施例三一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可实现实施例一中掉电保护方法的各个步骤。44.实施例四请参照图3,一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一中掉电保护方法的各个步骤。45.综上所述,本发明提供的一种掉电保护方法、装置、可读存储介质及电子设备,接收掉电发生信息;根据所述掉电发生信息将每一l2p缓存池中的分段l2p映射数据刷入闪存,并基于刷入的所述分段l2p映射数据生成掉电段表;接收主机读请求,所述主机读请求包括待读取数据,并根据所述主机读请求基于所述掉电段表读取所述待读取数据;在刷入闪存之前,获取l2p映射数据;将所述l2p映射数据按照预设长度进行分段,得到多个分段l2p映射数据;将每一所述分段l2p映射数据存储至对应的l2p缓存池,实现了分段掉电保护,从掉电段表可以知道哪些分段的数据还未刷入闪存,即哪些还未转换至l2p映射表,当上电后且接收到主机读请求时,可基于掉电段表进行互斥和恢复,无需等待所有l2p缓存池中的数据恢复至l2p映射表即可响应主机读请求,从而减少重新上电的时长,且提高响应主机读写请求的速度,减少因为重新上电过长导致的兼容性问题。46.在本技术所提供的上述实施例中,应该理解到,所揭露的方法、装置、计算机可读存储介质以及电子设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或模块可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或组件或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。47.所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部组件来实现本实施例方案的目的。48.另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个组件单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。49.所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。50.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。51.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。52.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1