一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种固态硬盘中重建的加速方法与流程

2021-10-24 08:04:00 来源:中国专利 TAG:重建 算法 加速 固态 盘中


1.本发明涉及一种基础存储设备中重建的加速算法,属于存储领域的创新算法,具体涉及一种固态硬盘中重建的加速方法。


背景技术:

2.在基础存储设备中,固态硬盘是最为常用的一种,相对于传统的机械硬盘,其拥有更优的性能、更小的命令响应时间、更强的抗电磁干扰能力和抗抖动能力,从而被广泛应用于pc、基站、军工领域、信创领域。对于固态硬盘,从应用场景可分为两大功能模块,一是刚接入电源后重建功能模块,另一个是真正实现业务功能模块。因为固态硬盘运行过程中,会有大量的系统数据未持久化到nand flash,所以,需要重建模块将固态硬盘的状态恢复到掉电前最后的状态上,保证设备业务过程中即使遇到掉电操作,后续业务也能不受到影响,能继续正常工作。现今,随着计算机应用相关技术的发展与创新,固态硬盘的应用场景越来越复杂,需要存储的数据量也越来越大,对命令响应时间要求越来越高。由此,固态硬盘的盘片容量越来越大,性能也是越来越高。而特别是一些上电启动阶段,应用系统对固态硬盘的响应时间有着越来越严格的要求,准确地说,是操作系统的启动阶段对固态硬盘的响应时间有越来越严格要求,特别是对于企业级固态硬盘或者定制化的应用系统中,需要保证启动过程中命令响应时间在毫秒级,这对固态硬盘中重建功能算法提出更高的挑战。如何更好地解决现有的固态硬盘启动阶段对命令的响应问题,是本领域技术人员面临的重要难题。本发明提出了一种固态硬盘中重建的加速方法,创新地对固态硬盘中内部关键数据管理算法的优化,实现对固态硬盘启动阶段重建的时间的压缩,从而实现在系统启动阶段,固态硬盘能快速对主机业务进行响应的目的,进而提升用户体验,很好地解决固态硬盘启动阶段对命令的响应问题。同时,还降低了重建业务的复杂度,对固态硬盘的稳定性也有大大的提升。


技术实现要素:

3.考虑到现有技术中的一个或多个问题,本发明提供了一种固态硬盘中重建的加速方法,利用映射数据块的挂起队列构建的方式实现对映射数据的可靠性下刷进行保证,高效地降低了固态硬盘在重建阶段的时间消耗,且提升了固态硬盘系统的稳定性。
4.一种固态硬盘中重建的加速方法,增加了挂起队列管理模块,固态硬盘的flash转换层模块提交映射数据块编号和映射数据表下刷信号到挂起队列管理模块,所述挂起队列管理模块完成映射数据块编号和映射数据表下刷信号的处理,并通过维护映射数据块的挂起队列,对映射数据源块进行暂存,保证其上的数据在映射数据表下刷前不丢失,以此来保证映射数据与flash上存储的映射数据表同步;在固态硬盘重建过程中,查找到最新的映射数据表后,直接跳过映射数据块重建,进行用户数据区重建。
5.所述映射数据块编号对应的映射数据块上均为无效数据。
6.所述挂起队列管理模块包括挂起队列压人模块、挂起队列结构和挂起队列清除模
块;并完成映射数据块编号与映射数据表下刷信号的接收。
7.所述挂起队列压入模块用于接收映射数据块编号,并将其压入挂起队列,然后进行挂起队列溢出状态检查,若挂起队列已满,则需要产生映射数据表下刷信号,并提交给挂起队列清除模块;若挂起队列未满,则等待映射数据表下刷信号。
8.所述挂起队列结构拥有头尾游标,最大深度为64位,每一个深度代表一个队列结点,结点宽度固定为32位;所述队列结点用于存放映射数据块编号;所述头尾游标用于指示挂起队列的操作状态,当尾游标滞后头游标一个结点位置时,挂起队列为满状态;当尾游标与头游标指向同一结点位置时,挂起队列为空状态。
9.所述挂起队列清除模块用于接收映射数据表下刷信号,并对所有有效的挂起队列结点上的映射数据块进行擦除和信息更新,然后完成映射数据表下刷操作;所述有效的挂起队列结点是指在头尾游标之间的队列结点;所述映射数据块擦除是指发送flash擦除命令,使flash变为空状态;所述映射数据块信息更新包括块状态、剩余块数量、块寿命值更新;所述映射数据表下刷信号,由flash转换层模块和挂起队列压入模块提供;所述映射数据表下刷操作是指将映射数据表通过flash编程命令写入到flash中。
10.所述尾游标用于挂起队列压入模块,每压入一个新的映射数据块编号,尾游标向后环绕偏移;所述头游标用于挂起队列清除模块,头游标为起始清除队列结点,每清除一个队列结点,头游标向后环绕偏移,直到挂起队列状态变为空状态。
11.所述查找最新的映射数据表,其记录了映射数据块的所有状态信息,并与实际的映射数据块信息同步,不需要对映射数据块进行扫描与重建。
12.所述重建数据区模块完成对固态硬盘主机或者垃圾回收写入数据区的物理信息与逻辑信息进行重建。
13.所述固态硬盘的flash转换层模块除了给挂起队列管理模块提供映射数据块编号,还会提交映射数据表下刷信号。
14.本发明所提供的一种固态硬件中重建的加速方法,通过维护映射数据块的挂起队列,对映射数据源块进行暂存,保证其上的数据在映射数据表下刷前不丢失,以此来保证与映射数据表同步。在固态硬盘重建过程中,找到最新的映射数据表后,不再需要对映射数据块的信息进行重建,就可以直接进行数据区重建,大大降低了重建的业务复杂度与时间消耗,从而达到重建加速的目的。
附图说明
15.图1示出固态硬盘中重建的加速方法示意图;图2示出挂起队列结构图;图3示出挂起队列管理模块内部结构图。
具体实施方式
16.图1示出固态硬盘中重建的加速方法示意图,在本发明提出的固态硬盘中重建的加速方法在重建过程中,可以完全移除重建映射数据块信息,从而极大程度节省重建时间,加快上电启动过程中命令响应时间。如图1所示,本发明的固态硬盘中重建的加速方法包括:增加了挂起队列管理模块,固态硬盘的flash转换层模块提交映射数据块编号和映射数
据表下刷信号到挂起队列管理模块,挂起队列管理模块完成映射数据块编号和映射数据表下刷信号的处理,并通过维护映射数据块的挂起队列,对映射数据源块进行暂存,保证其上的数据在映射数据表下刷前不丢失,以此来保证映射数据与flash上存储的映射数据表同步;在固态硬盘重建过程中,查找到最新的映射数据表后,直接跳过映射数据块重建,进行用户数据区重建。其中,映射数据块编号对应的映射数据块上均为无效数据。挂起队列管理模块包括:挂起队列压入模块、挂起队列结构和挂起队列清除模块;并完成映射数据块编号与映射数据表下刷信号的接收。
17.重建时,查找最新映射表中记录了映射数据块的所有状态信息,并且可保证与实际的映射数据块状态同步,不需要单独进行映射数据块的扫描与重建,完成对重建映射数据块信息的移除方法,其中,所述映射数据块信息的重建操作的移除是指相关的数据可以直接从nand flash恢复,不需要进行一系列映射块信息的重建,可大大节省重建时间。然后,重建数据区模块完成对固态硬盘主机或垃圾回收写入数据区的物理信息与逻辑信息进行重建。
18.图2示出挂起队列结构图,如图2所示,上电初始化阶段,完成挂起队列的构建,包括对头尾游标、64个队列结点,然后对所有的挂起对列结点进行初始化操作。图2示出的映射数据块的挂起队列结构图包括:挂起队列结构最大深度为64,结构宽度固定为32位,结构的结点类型为表项映射数据块序号,拥有头尾游标。头游标用于挂起队列清除模块,头游标为起始清除位置,清除一个队列结点,头游标向后环绕偏移;所述尾游标用于挂起队列压入模块,每压入一个新的映射数据块编号,尾游标向后环绕偏移。挂起队列满状态为尾游标滞后头游标一个结点位置;挂起队列空状态为头尾游标指向同一个结点位置。
19.本发明的核心思想在于提供一种重建加速方法,以解决现有的固态硬盘上电阶段命令响应时间慢的问题。
20.为了实现上述思想,本发明提供了一种固态硬盘中重建的加速方法,图3示出挂起队列管理模块内部结构图,如图3所示,挂起队列管理模块包括:挂起队列压入模块、挂起队列结构和挂起队列清除模块。主要完成挂起队列压入、挂起队列结构和挂起队列清除的管理。当挂起对列构建完成后,固态硬盘第一次进行重建,因之前无任何业务,所以会将系统关键数据从nand flash读出来即可。然后,固态硬盘会进入业务状态,用户可以写入数据,在业务数据达到一定程度时,flash转换模块就会将映射数据块编号送入挂起队列管理模块,挂起队列自动完成映射数据块编号入队,即将映射数据块编号放入挂起队列尾游标指向的结点,并将尾游标环绕向后偏移。压入后,需要对挂起对列进行溢出检查,当挂起对列已满,则立即进行映射数据表下刷操作;若挂起队列未满,则等待映射数据表下刷信号。在flash转换模块中,需要将系统关键数据下刷到nand flash,而这些信息均在映射数据表中。所以,映射数据表下刷后,需要对挂起对列进行清除,清除方法为:从头游标开始,对每个挂起对列结点对应的映射数据块进行释放,并改变其状态为未使用,并更新剩余映射数据块总量。当挂起队列为空,则清除完成。此时,会出现多种掉电场景:(1)系统关键数据下刷完成,那么下一次重建过程中,读出来的系统关键数据就是最新的,挂起队列中的映射数据块全部释放成功,重建流程无需进行表项映射关系的重建;(2)系统关键数据未下刷完成,那么下一次重建过程中,读出来的系统关键数据就不是最新的,挂起队列中的映射数据块未释放成功,系统关键数据所有指向为未释放的表
项映射数据块上,但因为挂起队列中映射数据块未释放,所以,映射数据未丢失,读出来的系统关键数据与表项映射数据是同步的,重建流程无需进行表项映射关系的重建。
21.如图3所示,挂起队列压入方法,包括:flash转换模块除了给挂起队列管理模块提供映射数据块,还会提交映射数据表下刷信号。挂起队列压入模块接收flash转换模块提供的映射数据块编号,并将其压入挂起队列,然后进行挂起队列溢出状态检查,若挂起队列已满,则需要产生映射数据表下刷信号,并将映射数据表下刷信号提交给挂起队列清除模块;若挂起队列未满,则等待映射数据表下刷信号。
22.如图3所示,挂起队列清除模块用于接收映射数据表下刷信号,并对所有有效的挂起队列结点上的映射数据块进行擦除和信息更新,然后完成映射数据表下刷操作;有效的挂起队列结点是指在头尾游标之间的队列结点;映射数据块擦除是指发送flash擦除命令,使flash变为空状态;其中,映射数据块信息更新包括块状态、剩余块数量、块寿命值更新;映射数据表下刷信号,由flash转换层模块和挂起队列压入模块提供;映射数据表下刷操作是指将映射数据表通过flash编程命令写入到flash中。
23.综上所述,根据本发明提供的一种固态硬盘中重建的加速方法,通过维护映射数据块的挂起队列,对映射数据源块进行暂存,保证其上的数据在映射数据表下刷前不丢失,以此来保证与映射数据表同步。在固态硬盘重建过程中,找到最新的映射数据表后,不再需要对映射数据块的信息进行重建,就可以直接进行数据区重建,很好地解决解决固态硬盘启动阶段对命令的响应的技术难题。同时,还降低了重建业务的复杂度,对固态硬盘的稳定性也有大大的提升。在固态硬盘实际错综复杂的应用操作场景中,使得整个系统的读写性能更加迅速便捷。
24.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜