CN107544913A - 一种ftl表快速重建方法与装置 - Google Patents
一种ftl表快速重建方法与装置 Download PDFInfo
- Publication number
- CN107544913A CN107544913A CN201610500411.6A CN201610500411A CN107544913A CN 107544913 A CN107544913 A CN 107544913A CN 201610500411 A CN201610500411 A CN 201610500411A CN 107544913 A CN107544913 A CN 107544913A
- Authority
- CN
- China
- Prior art keywords
- ftl
- daily record
- blocks
- frames
- frame
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种利用日志重建FTL表的方法,包括:确定要重建第一FTL块,其中第一FTL块是FTL表的部分;获取第一FTL块的FTL帧与日志帧的存储位置;读取属于第一FTL块的多个FTL帧与多个日志帧;利用所述多个FTL帧重建第一FTL块;以及利用日志帧更新第一FTL块;在所述FTL表被完全重建之前,以第一FTL块响应访问第一FTL块的逻辑地址空间的IO请求。本申请提出的FTL表快速重建方法与装置,在读取阶段,通过FTL帧中的元数据,可以将属于同一FTL块的FTL帧或数据帧读出,使得在需要用到某一FTL表的部分的时候先进行读取,在重建阶段,按照FTL块来重建,极大降低用户等待FTL表重建的时间。
Description
技术领域
本申请涉及固态硬盘,特别是涉及固态硬盘日志的快速重建方法与装置。
背景技术
随着科技的进步,对于电子设备的存储能力和反应速度提出了越来越高的要求,图1示出了现有技术中的固态存储设备(Solid Storage Device,SSD)的框图。存储设备102通过接口103同主机相耦合,主机可以是能够通过上述方式同存储设备102相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)存储芯片105以及固件存储器110。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SCSI、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM存储芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104在运行时从固件存储器110加载固件。
在现有技术的固态存储设备中,例如图1所示出的存储设备102中,利用FTL(FlashTranslation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。固态存储设备的FTL表具有较大的尺寸,例如若干GB级。而在固态存储设备关闭时,需要完整地保存FTL表,在固态存储设备启动时,需要完成FTL完全加载。
现有技术中,在固态存储设备的每个物理页中附加地存储该物理页所对应的逻辑地址。在固态存储设备启动时,需要访问所有物理页,以获得每个物理页所对应的逻辑地址,并重建FTL表。然而这样的操作将需要大量时间,并导致固态存储设备启动过程耗时很长。
在中国专利申请(CN201510430174.6)中,提供了基于日志的FTL表重建方法。
发明内容
有鉴于此,本申请提供一种FTL表快速重建方法与装置。
根据本发明的第一方面,提供了根据本发明第一方面的第一利用日志重建FTL表的方法,包括:确定要重建第一FTL块,其中第一FTL块是FTL表的部分;获取第一FTL块的FTL帧与日志帧的存储位置;读取属于第一FTL块的多个FTL帧与多个日志帧;利用所述多个FTL帧重建第一FTL块;以及利用日志帧更新第一FTL块;在所述FTL表被完全重建之前,以第一FTL块响应访问第一FTL块的逻辑地址空间的IO请求。
根据本发明第一方面的第一利用日志重建FTL表的方法,提供了根据本发明第一方面的第二利用日志重建FTL表的方法,其中,确定要重建的第一FTL块,包括:按FTL块在FTL表中的地址顺序,选择第一FTL块;或者预测存储设备启动后将被首先访问的第一逻辑地址,选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第一逻辑地址;或者获取存储设备上存储的存储设备之前启动后被首先访问的第二逻辑地址,选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第二逻辑地址。
根据本发明第一方面的第一利用日志重建FTL表的方法,提供了根据本发明第一方面的第三利用日志重建FTL表的方法,其中,确定要重建的第一FTL块,包括:识别存储设备接收到的IO请求所对应的第三逻辑地址,选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第三逻辑地址。
根据本发明第一方面的第三利用日志重建FTL表的方法,提供了根据本发明第一方面的第四利用日志重建FTL表的方法,确定要重建的第一FTL块,包括:响应于识别存储设备接收到的IO请求所对应的第三逻辑地址,暂停对第二FTL块的重建而选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第三逻辑地址。
根据本发明第一方面的第一至第四之一利用日志重建FTL表的方法,提供了根据本发明第一方面的第五利用日志重建FTL表的方法,其中所述获取第一FTL块的FTL帧与日志帧的存储位置包括:从NVM的启动页中获取第一FTL块的最后FTL帧的存储位置,以及第一FTL块的最后日志帧的存储位置;或者从NVM的启动页中获取第一FTL块的最后FTL帧组的存储位置,以及第一FTL块的最后日志帧组的存储位置,其中FTL帧组是存储于相同NVM物理页上的多个FTL帧,以及日志帧组是存储于相同NVM物理页上的多个日志帧。
根据本发明第一方面的第一至第五之一利用日志重建FTL表的方法,提供了根据本发明第一方面的第六利用日志重建FTL表的方法,其中,所述利用日志帧更新第一FTL块包括,按日志帧中的日志条目被生成顺序来更新第一FTL块或按日志帧中的日志条目被生成顺序的逆序来更新第一FTL块。
根据本发明第一方面的第六利用日志重建FTL表的方法,提供了根据本发明第一方面的第七利用日志重建FTL表的方法,其中,所述按日志帧中的日志条目被生成顺序的逆序来更新第一FTL块,包括:获得属于第一FTL块的第一日志帧;用第一日志帧中的多个日志条目按从后向前的顺序更新第一FTL块;对被更新的FTL条目设置标记;若待被第一日志条目更新的FTL条目上存在标记,则忽略该第一日志条目;用属于所述第一FTL块的所有其他日志帧更新第一FTL块后,或者第一FTL块的所有FTL条目都存在标记后,对第一日志帧的更新完成。
根据本发明第一方面的第七利用日志重建FTL表的方法,提供了根据本发明第一方面的第八利用日志重建FTL表的方法,其中用属于所述第一FTL块的所有其他日志帧更新第一FTL块后,或者第一FTL块的所有FTL条目都存在标记后,还将当前FTL块的FTL条目的标记清除。
根据本发明第一方面的第六或第七利用日志重建FTL表的方法,提供了根据本发明第一方面的第九利用日志重建FTL表的方法,还包括:从所述第一日志帧中获取第二日志帧的地址并获取第二日志帧,并按所述第二日志帧中的日志条目被生成的顺序的逆序来更新第一FTL块,其中所述第一日志帧与所述第二日志帧属于相同的第一FTL块。
根据本发明第一方面的第九利用日志重建FTL表的方法,提供了根据本发明第一方面的第十利用日志重建FTL表的方法,其中所述第一日志帧是第一FTL块的最后日志帧;以及所述第二日志帧是按生成顺序在所述第一日志帧的紧邻前一个日志帧。
根据本发明第一方面的第六利用日志重建FTL表的方法,提供了根据本发明第一方面的第十一利用日志重建FTL表的方法,其中按日志帧中的日志条目被生成顺序来更新FTL块,包括:获得属于第一FTL块的第一日志帧;将第一日志帧中的多个日志条目按从前向后的顺序更新到该FTL块;重复上述步骤以将所有属于第一FTL块的日志帧都更新到第一FTL块。
根据本发明第一方面的第十一利用日志重建FTL表的方法,提供了根据本发明第一方面的第十二利用日志重建FTL表的方法,还包括:从所述第一日志帧中获取第二日志帧的地址并获取第二日志帧,并按所述第二日志帧中的日志条目被生成的顺序来更新第一FTL块,其中所述第一日志帧与所述第二日志帧属于相同的FTL块。
根据本发明第一方面的第十二利用日志重建FTL表的方法,提供了根据本发明第一方面的第十三利用日志重建FTL表的方法,其中所述第一日志帧是第一FTL块的最早的日志帧;以及所述第二日志帧是按生成顺序在所述第一日志帧的紧邻后一个日志帧。
根据本发明第一方面的第一至第十三利用日志重建FTL表的方法,提供了根据本发明第一方面的第十四利用日志重建FTL表的方法,其中,FTL帧包括元数据,记录了与该FTL帧属于同一FTL块的前一个FTL帧的存储位置。
根据本发明第一方面的第一至第十四利用日志重建FTL表的方法,提供了根据本发明第一方面的第十五利用日志重建FTL表的方法,其中,所述日志帧包括元数据,记录了与该日志帧属于同一FTL块的前一个日志帧的存储位置。
根据本发明第一方面的第一至第十五利用日志重建FTL表的方法,提供了根据本发明第一方面的第十六利用日志重建FTL表的方法,还包括:确定要重建第二FTL块;获取第二FTL块的FTL帧与日志帧的存储位置;读取属于第二FTL块的第二多个FTL帧与第二多个日志帧;利用所述第二多个FTL帧重建第二FTL块;以及利用所述第二多个日志帧更新第二FTL块。
根据本发明的第二方面,提供了根据本发明第二方面的第一利用日志重建FTL表装置,包括:FTL块确定模块,用于确定要重建第一FTL块,其中第一FTL块是FTL表的部分;存储位置获取模块,用于获取第一FTL块的FTL帧与日志帧的存储位置;日志帧读取模块,用于读取属于第一FTL块的多个FTL帧与多个日志帧;FTL块重建模块,用于利用所述多个FTL帧重建第一FTL块;FTL块更新模块,用于利用日志帧更新第一FTL块;IO请求响应模块,用于在所述FTL表被完全重建之前,以第一FTL块响应访问第一FTL块的逻辑地址空间的IO请求。
根据本发明的第三方面,提供了根据本发明第三方面的第一固态硬盘,包括控制器、NVM、随机访问存储器;控制器分别耦合到NVM与随机访问存储器;NVM中包括日志区与用户数据区;在日志区中存储固态硬盘日志;在用户数据区存储用户数据;其中在存储器中存储有FTL表,所述FTL表包括多个FTL块;其中所述控制器用于执行根据本发明第一方面的第一至第十六利用日志重建FTL表的方法。
根据本发明的第四方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序代码使所述存储设备执行根据本发明第一方面的利用日志重建FTL表的方法。
由以上技术方案可见,本发明提出的FTL表快速重建方法与装置,获得了以下技术效果:
1、本申请提出的FTL表快速重建方法与装置,在读取阶段,通过FTL帧中的元数据,可以将属于同一FTL块的FTL帧或数据帧读出,使得在需要用到某一FTL块的时候能够读取出专属于该FTL块的FTL帧与日志帧,极大提高FTL表重建速度。
2、本申请提出的FTL表快速重建方法与装置,在重建阶段,按照FTL块来重建,重建好的FTL块可响应IO请求,从而降低了用户等待FTL表重建的时间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是现有技术中固态存储设备的结构示意图;
图2是根据本发明的一个实施例的固态硬盘日志的结构框图;
图3是是根据本发明的实施例的FTL表的结构框图;
图4是根据本发明的实施例的“写”日志的结构框图
图5是根据本发明的实施例的固态硬盘日志生成方法的流程图;
图6是根据本发明的另一个实施例的固态硬盘日志的结构框图;
图7是根据本发明的又一实施例的固态硬盘日志生成方法的流程图;
图8是根据本发明的实施例的利用日志重建FTL表方法的流程图;
图9是根据本发明实施例的固态硬盘的框图;以及
图10是根据本发明实施例的响应掉电事件而生成固态硬盘日志的示意图。
具体实施方式
本申请提出的FTL表快速重建方法与装置,在读取阶段,通过FTL帧中的元数据,可以将属于同一FTL块的FTL帧或数据帧读出,使得在需要用到某一FTL块的时候能读取专用于该FTL块的FTL帧与日志帧,从而快速重建该FTL块,并用重建后的FTL块响应IO请求。本申请提出的FTL表快速重建方法与装置,在重建阶段,按照FTL块来重建,加快FTL表重建速度。当然,实施本申请的任一技术方案必不一定需要同时达到以上的所有优点。
为了使本领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。
下面结合本申请附图进一步说明本申请具体实施方式。
图2是根据本发明的一个实施例的固态硬盘日志的结构框图。为了在固态硬盘启动时,能够快速重建FTL表,并且减少不必要的FTL块写入操作,根据本发明的实施例提供固态硬盘日志210。固态硬盘日志210存储在非易失存储介质中。参看图2,固态硬盘日志210包括FTL帧1-1(220)、FTL帧1-2(221)……FTL帧2-3(225),固态硬盘日志210还包括日志帧230……日志帧235。FTL帧是FTL块的组成部分,在图2的例子中,FTL块1包括3个FTL帧,由FTL帧1-1、FTL帧1-2与FTL帧1-1组成。日志帧0-1(230)是用于FTL块O(图2中未示出)的第一个日志帧,日志帧1-1(231)是用于FTL块1的第一个日志帧,日志帧1-3(232)是用于FTL块1的第2个日志帧,日志帧1-3(235)是用于FTL块1的第3个日志帧,日志帧2-1(233)是FTL块2的第1个日志帧,日志帧4-1(234)是用于FTL块4的第一个日志帧。在日志帧的元数据中记录信息,以指示该日志帧所属的FTL块。以及可选地,在日志帧(例如,日志帧1-3(232))的元数据中还记录属于相同FTL块的日志帧中的前一日志帧(例如,日志帧1-3(232)与日志帧1-1(231)同属于FTL块1,且日志帧1-3(232)的前一日志帧为日志帧1-1(231))。在图2的实施例中,FTL块占据固态硬盘中连续的物理地址空间(可选地,跳过坏块)。可选地,在固态硬盘中以非易失性存储介质提供日志存储区,FTL块存储在日志存储区的连续地址空间中。FTL帧与日志帧占据非易失存储介质的物理页,从而可在一次写操作中,将FTL帧与日志帧的组合写入非易失存储介质。
在根据本发明的一个实施例中,非易失存储介质是MLC(Multi Level Cell,多级单元)或TLC(Triple Level Cell,三级单元)非易失存储介质,将固态硬盘日志存储到非易失存储介质的数据页时,使用pSLC(pseudo-SLC,伪SLC)模式或SLC(Single Level Cell,单级单元)模式访问非易失存储介质,以加快固态硬盘日志存储过程并获得较高的数据可靠性。作为另一种实施方式,在SLC非易失存储介质中存储固态硬盘日志。在依然又一个实施例中,在MLC非易失存储介质的LSB页中存储固态硬盘日志。
对应于各个FTL块的日志帧的数量可以是不同的。参看图2,在一段时间内不存在对FTL块3的更新,因而在固态硬盘日志210中不存在对应于FTL块3的日志帧。而存在对FTL块1的多次更新,因而用3个日志帧(231、232、235)记录对FTL块1的所有更新操作。
在图2的实施例中,固态硬盘日志210中按FTL块在FTL表中的内存地址的顺序存储FTL块(例如,FTL块2在FTL块1之后存储),而按日志帧生成的顺序记录日志帧。每个日志帧属于且仅属于一个FTL块。在一个例子中,在内存中缓存属于各个FTL块的“写”日志条目。在属于某个FTL块的“写”日志条目填满一个日志帧时,将日志帧写入固态硬盘日志。
以此方式,FTL表在固态硬盘日志中可以仅需保存一份完整记录,并在固态硬盘日志中记录对FTL表项的每次更新。在不发生FTL表项更新时,无需再将FTL表记录在固态硬盘日志中,从而节省了系统资源。在发生FTL表项更新时,仅将对FTL表项的修改记录在日志帧中,减少了固态硬盘日志的写入数据量。
利用固态硬盘日志210,能够重建FTL表。由于存储设备掉电等原因,内存中的FTL表消失,需要读取固态硬盘日志210并重建FTL表。为重建FTL表,在固态硬盘的非易失性存储介质中,还存储各个FTL块在固态硬盘中的存储地址(物理地址),以及属于各个FTL块的最后日志帧的物理地址(可选地,也存储属于各个FTL块的最早日志帧的物理地址)。
在重建FTL表时,作为举例,获取在非易失存储介质中存储的FTL块1的FTL帧在固态硬盘日志210中的物理地址,并读取固态硬盘日志210中的FTL块1(包括FTL帧1-1、FTL帧1-2与FTL帧1-3)。接下来,获取属于FTL块1的最后日志帧(参看图2,日志帧1-3(235))的物理地址,并按照日志帧1-3(235)中按地址排列的日志条目的逆序,以日志帧1-3(235)中记录的日志条目更新内存中的FTL块1中的对应FTL条目。作为举例,以日志条目更新FTL块的对应条目的含义包括,以日志条目的逻辑地址为索引访问FTL块,并用日志条目的物理地址替换FTL块中被索引的FTL条目的物理地址。由于按照日志帧1-3(235)的逆序更新FTL块1,而日志帧1-3(235)中位置在后的日志条目包含了对FTL条目的在后的更新,因而在重建FTL表的过程中,对每个FTL条目仅需更新一次。为此目的,进一步地,还标记被更新的该FTL条目,使得在重建FTL表的过程中,对被更新过的FTL条目不再进行更新。用日志帧1-3(235)更新FTL块1之后,获取与日志帧1-3(235)同属于FTL块1的前一日志帧(参看图2,日志帧1-2(232));直到将FTL块1的所有日志帧(FTL帧1-1(231)、FTL帧1-2(232)与FTL帧1-3(235))都更新到FTL块1,或者FTL块1的所有条目都被更新。作为举例,在日志帧1-3(235)中记录了同属于FTL块1的前一FTL帧1-2(232)的地址。
作为本发明的另一举例,为重建FTL表,获取在非易失存储介质中存储的FTL块1的FTL帧在固态硬盘日志210中的物理地址,并读取固态硬盘日志210中的FTL块1(包括FTL帧1-1、FTL帧1-2与FTL帧1-3)。接下来,获取属于FTL块1的第一日志帧(参看图2,日志帧1-1(231))的物理地址,并按照日志帧1-1(231)中按地址排列的日志条目的顺序,以日志帧1-1(231)中记录的日志条目更新内存中的FTL块1中的对应FTL条目。作为另一举例,以日志条目更新FTL块的对应条目的含义包括,以日志条目的逻辑地址为索引访问FTL块,并用日志条目的物理地址替换FTL块中被索引的FTL条目的物理地址。由于按照日志帧1-1(231)的顺序更新FTL块1,因而在重建FTL表的过程中,需用每个日志条目对FTL块进行更新。用日志帧1-1(231)更新FTL块1之后,获取与日志帧1-1(231)同属于FTL块1的后一日志帧(参看图2,日志帧1-2(232));直到将FTL块1的所有日志帧(FTL帧1-1(231)、FTL帧1-2(232)与FTL帧1-3(235))都更新到FTL块1。作为举例,在日志帧1-1(231)中记录了同属于FTL块1的下一FTL帧1-2(232)的地址。
图3是根据本发明的实施例的FTL表的结构框图。FTL表包括多个FTL表条目(或称表项)。在一个实施例中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在又一个实施例中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。在依然另一个实施例中,FTL表组织为树结构。
在依然又一个实施例中,在连续的内存地址空间中存储FTL表,每个FTL表条目中记录物理地址,而以每个FTL表条目自身的内存地址代表对应于物理地址的逻辑地址。FTL表条目的数量对应于固态存储设备逻辑地址空间的大小。
为了在非易失存储介质中存储FTL表的目的,将FTL表组织为数据帧。参看图3,FTL表(310)包括FTL帧1、FTL帧2、FTL帧3……FTL帧600。每个FTL帧,包括多个FTL表条目。每个FTL帧的大小同非易失存储介质的最小写入单位相对应(例如,页)。非易失存储介质的数据页大小通常为2KB、4KB、8KB或16KB。在一个实施例中,非易失存储介质的数据页大小为16KB,而FTL帧大小为2KB、4KB或8KB。在另一个实施例中,非易失存储介质的数据页大小为4KB,而FTL帧大小为512B、1KB或2KB。一般地,选择FTL帧大小,使得非易失存储介质的数据页大小是FTL帧大小的整数倍,以便于将多个FTL帧存储到为非易失存储介质的数据页。在一个例子中,FTL表包含的FTL帧1、FTL帧2、FTL帧3……FTL帧600在内存中按内存地址连续存储。
在根据本发明的实施例中,还将FTL表(310)组织为FTL块。FTL块包括多个FTL帧,优选地,包括内存地址连续的多个FTL帧。在图3的例子中,FTL块1(320)包括100个FTL帧(FTL帧1到FTL帧100),FTL块2(321)包括FTL帧101到FTL帧200,而FTL块6(325)包括FTL帧501到FTL帧600。作为举例,FTL帧大小为4KB,包括1K(1024)个FTL条目,而每个FTL条目对应了4KB逻辑/物理地址空间,因而每个FTL帧对应4MB逻辑/物理地址空间,而每个FTL块包括100个FTL帧,对应了400MB逻辑/物理地址空间。
在固态存储设备处理写请求时,为该写请求分配物理地址,并在FTL表中记录该写请求的逻辑地址与物理地址的对应关系。在另一个实施例中,由访问固态存储设备的主机维护FTL表,在需要向固态存储发出写请求时,为该写请求分配固态存储设备的物理地址,并在FTL表中记录该写请求的逻辑地址与物理地址的对应关系。
图4是根据本发明的实施例的“写”日志的结构框图。在固态存储设备处理写请求时,还生成“写”日志。在“写”日志中记录了写操作对应的逻辑地址与物理地址。对于每个FTL表项的更新请求,生成一条对应的“写”日志条目。
为了在非易失存储介质中存储“写”日志的目的,将“写”日志组织为日志帧410(参看图4)。每个日志帧410包括多个“写”日志条目(422、424、42n)(或称“表项”)。每个“写”日志条目(422、424或42n)包括一个逻辑地址以及与之相对应的物理地址。按照接收FTL表被更新的先后顺序生成并在日志帧中组织“写”日志条目。因而在“写”日志中,可能存在具有相同逻辑地址和/或物理地址的“写”日志条目。
每个日志帧410的大小同非易失存储介质的最小写入单位相对应(例如,页)。非易失存储介质的数据页大小通常为2KB、4KB、8KB或16KB。在一个实施例中,非易失存储介质的数据页大小为16KB,而日志帧大小为2KB、4KB、8KB或16KB。在另一个实施例中,非易失存储介质的数据页大小为4KB,而日志帧大小为512B、1KB或2KB或4KB。一般地,选择日志帧大小,使得非易失存储介质的数据页大小是日志帧大小的整数倍,以便于将一个或多个日志帧存储到非易失存储介质的数据页。在又一个实施例中,一个或多个FTL帧与一个或多个“写”日志数据帧构成非易失存储介质的一个数据页。
在根据本发明实施例的日志帧410中还包括元数据440,元数据440中指示了日志帧410属于FTL块1。日志帧410属于FTL块1,意味着日志帧410中的条目记录了对FTL块1的条目的更新,换句话说,日志帧410中的条目的逻辑地址均在FTL块1的逻辑地址范围内。
在一个例子中,提供队列来容纳“写”日志条目。在“写”日志被产生时,将日志条目插入队列(队尾)。可选地,组合多个条目并在一次内存访问操作中插入队列,所组合的多个条目的尺寸可以等于总线宽度或内存接口宽度。在从队列的队头取出日志条目中,按日志帧大小取出指定数目的日志条目。队列是先进先出的,从而使得在固态硬盘日志中能够容易识别日志条目的生成顺序。恰当选择队列的深度,使得在发生掉电时,在备用电源供电的有限时间内,能够将队列中的日志条目写入到固态硬盘日志。
在另一个例子中,提供日志帧缓冲区来容纳“写”日志条目。日志帧缓冲区具有对应于一个或多个日志帧的大小。恰当选择缓冲区的大小,使得在发生掉电时,在备用电源供电的有限时间内,能够将日志帧缓冲区中的日志条目写入到固态硬盘日志。当日志帧缓冲区积累了日志帧大小的数据时,将其内容写入到固态硬盘日志中。
在进一步的例子中,向队列或日志帧缓冲区添加“写”日志条目时,还检查队列或缓冲区中是否已存在具有相同逻辑地址的条目。若在队列或缓冲区中已经记录了具有相同逻辑地址的条目,则用要写入的日志条目更新队列或缓冲区中的已有条目,从而减少要写入固态硬盘日志的数据量。
如图5所示,是根据本发明的实施例的基于FTL表的固态硬盘日志生成方法的流程图。在更新FTL表时,记录被更新的FTL表项的逻辑地址与物理地址的对应关系(510)。可选地相应更新FTL表。缓存所记录的逻辑地址与物理地址的对应关系,每一条逻辑地址与物理地址的对应关系,构成一个“写”日志条目。一定数量“写”日志条目构成一个日志帧。在同一日志帧中的“写”日志条目记录的是对相同的FTL块的FTL条目的更新。当缓存的多条逻辑地址与物理地址的对应关系能够构成一个日志帧时,利用缓存的多条逻辑地址与物理地址的对应关系生成日志帧(520)。还选择内存中的FTL表的多个FTL块之一的部分生成FTL帧(530)。例如,所选择的FTL帧1-1是FTL块1的尚未被写入到非易失存储介质的部分。在优选实施例中,FTL帧1-1(220)与日志帧(230)的组合的大小对应于固态硬盘的非易失存储介质的数据页大小,从而可通过一次非易失存储介质的写操作将FTL帧1-1(220)与日志帧(230)的组合写入固态硬盘的非易失存储介质(540)。
根据本发明的又一个实施例,每接收到预定数量的写请求,生成一个日志帧,其中一个日志帧中能够容纳该预定数量的写请求所对应的逻辑地址与物理地址的映射关系。而每生成一个日志帧,则选择FTL表的部分生成FTL帧。根据本发明的依然又一个实施例,周期地利用所缓存的“写”日志条目生成日志帧。以及每生成一个日志帧,则选择FTL表的部分生成FTL帧。根据本发明的依然又一个实施例,日志帧的大小对应于非易失存储介质的数据页大小,FTL帧的大小也对应于非易失存储介质的数据页大小。
根据本发明的依然又一个实施例,生成FTL表的FTL帧时,按FTL块自身的内存地址而选择FTL块的部分来生成FTL帧。
例如,选择FTL块1内从地址0开始的长度为L的FTL块的部分,以构成FTL帧1-1。选择FTL块1内从地址L开始的长度为L的FTL块的部分,以构成FTL帧1-2。选择FTL块1内从地址(N-1)*L开始的长度为L的FTL块的部分,以构成FTL帧1-N。依次将FTL表的各个FTL块FTL帧并写入非易失存储介质,使得在固态硬盘日志中能够记录完整的FTL表。
以此方式,每次向固态硬盘存储一个物理页。即使固态硬盘掉电,也可在备用电源有限的工作时间内,完成FTL表的存储。
所属领域技术人员将意识到,某些情况下,固态硬盘日志中不包括完整的FTL表。例如,对于新的或者空白的固态硬盘,随着对固态硬盘的使用,3次选择FTL表的部分而生成FTL帧后发生掉电,此时,FTL表中仅FTL块1是有效的,固态硬盘日志中仅记录了FTL块1。通过在固态硬盘日志中标记已使用的数据块和/或未使用的数据块,而识别出在固态硬盘日志中的有效数据帧,从而重建固态硬盘掉电时的FTL表。
图6是根据本发明的另一个实施例的固态硬盘日志的结构框图。固态硬盘日志610存储在非易失存储介质中。参看图6,固态硬盘日志410包括多个物理页(物理页620、621、622……628、629)。物理页620中包括FTL帧1-1、FTL帧1-2、FTL帧1-3与日志帧0-1。FTL帧与日志帧具有相同的大小。FTL帧1-1、FTL帧1-2……FTL帧1-100容纳了FTL块1的所有FTL条目,日志帧1-1、日志帧1-2与日志帧1-3是属于FTL块1的日志帧。固态硬盘日志610还包括其他类型的帧(其他帧1、其他帧2与其他帧3)。
每个FTL帧还包括元数据,记录了该FTL帧所属的FTL块以及属于同一FTL块的前一个FTL帧的存储位置(物理地址)。从而属于同一FTL块的多个FTL帧被组织成链表。每个日志帧也包括元数据,记录了该日志帧所属的FTL块以及属于同一FTL块的前一个日志帧的存储位置(物理地址)。从而属于同一FTL块的多个日志帧被组织成链表。
在图6的例子中,FTL帧1-1是FTL块1的第一个FTL帧,FTL帧1-2是FTL块1的第2个FTL帧,以此类推,FTL帧1-100是FTL块1的最后一个FTL帧。属于同一FTL块的多个FTL帧可以在固态硬盘日志610中不连续的存储。在有高优先级的其他类型帧出现时,可以及时将其存储到固态硬盘日志。日志帧0-1是用于FTL块0(图6中未示出)的第一个日志帧,日志帧1-1是用于FTL块1的第一个日志帧,日志帧1-2是用于FTL块1的第2个日志帧,日志帧1-3是用于FTL块1的第3个日志帧。日志帧中的条目按生成的顺序排列。
图7是根据本发明的又一实施例的固态硬盘日志生成方法的流程图。根据图7的实施例,生成如图6所示的固态硬盘日志610。
在更新FTL表时,记录被更新的FTL表项的逻辑地址与物理地址的对应关系(710)。可选地相应更新FTL表。缓存所记录的逻辑地址与物理地址的对应关系,每一条逻辑地址与物理地址的对应关系,构成一个“写”日志条目。一定数量“写”日志条目构成一个日志帧。在同一日志帧中的“写”日志条目记录的是对相同的FTL块的FTL条目的更新。当缓存的多条逻辑地址与物理地址的对应关系能够构成一个日志帧时,利用缓存的多条“写”日志条目生成日志帧,并在日志帧中标记其所属的FTL块(720)(参看图6与图7,例如日志帧0-1)。可选地,在日志帧中还标记与该日志帧属于同一FTL块的前一个日志帧的存储位置。参看图6,日志帧0-1是FTL块0(图6中未示出)的第一个日志帧,在日志帧0-1中标记其前一个日志帧不存在。
还选择内存中的FTL表的多个FTL块之一(例如,FTL块1)来生成FTL帧(730)。将所生成的一个或多个FTL帧与日志帧一同写入非易失存储介质(740)。在图6的例子中,3个FTL帧与1个日志帧的组合占据非易失存储介质的一个物理页。重复执行步骤710-740,以随时将日志帧与FTL帧写入固态硬盘日志。
在一个例子中,选择FTL块之一(例如,FTL块1)生成FTL帧,并且在将FTL块1完全写入固态硬盘日志610之前,尽量避免向固态硬盘日志写入其他FTL块,以使FTL块尽量集中地在固态硬盘日志中分布。然而,由于FTL帧中包括指示前一个FTL帧的元数据,因而属于同一FTL块的FTL帧不必在固态硬盘日志中连续存储。可将其他类型的帧(例如,图6的其他帧1)或其他FTL块的FTL帧(例如,图6的FTL帧2-1)存储在FTL块1的多个FTL帧之间。
在存储设备上电时,可从固态硬盘日志610中读取FTL帧与日志帧,以重建FTL表。在一个例子中,通过读取完整的固态硬盘日志610,找到在固态硬盘日志610中记录的各个FTL块以及与其对应的日志帧,并确定在存储设备掉电前,FTL表的状态。在另一个例子中,为加快FTL表重建过程,还在非易失存储介质中记录各个FTL块的多个FTL帧的第一FTL帧和/或最后FTL帧的存储位置,以及记录各个FTL块的多个日志帧的第一日志帧和/或最后日志帧的存储位置。从而,在存储设备上电时,可以迅速定位各个FTL块的FTL帧与日志帧的存储位置,并恢复各个FTL块,而无需读取完整的固态硬盘日志610。
在一个实施方式中,响应于存储设备掉电,即使缓存的日志条目数量不足以形成日志帧,也填充缓存的日志条目以形成日志帧,并写入固态硬盘日志。并在非易失存储介质中记录各个FTL块的多个FTL帧的第一FTL帧和/或最后FTL帧的存储位置,以及记录各个FTL块的多个日志帧的第一日志帧和/或最后日志帧的存储位置。返回参看图6,在固态硬盘日志中,完整记录了FTL块1的100个FTL帧;因而,响应于存储设备掉电,在非易失存储介质中记录FTL帧1-1和/或FTL帧1-100的存储位置,与日志帧1-1和/或日志帧1-3的存储位置,以便从固态硬盘日志中恢复FTL块1。而作为举例,在掉电时,尚未完整记录FTL块2的100个FTL帧,但日志帧中完整记录了对FTL块2的更新,在此情况下,不使用固态硬盘日志610中记录的FTL帧2-1、FTL帧2-2、FTL帧2-3、FTL帧2-7、FTL帧2-8、FTL帧2-9来重建FTL块2,而是仅使用属于FTL块2的日志帧2-1来重建FTL块2,而在日志帧2-1中未被记录的FTL2的其他表项在重建时可标记为未分配。在另一个例子中,在固态硬盘日志610中记录了多份完整的FTL块2(每份FTL块2包括100个FTL帧)与未完整记录的FTL块2,响应于存储设备掉电,而在非易失存储介质中记录最新一份完整的FTL块2的第一FTL帧和/或最后FTL帧的存储位置,并用于FTL重建。
图8是根据本发明的实施例的设备启动方法的流程图。根据图8的实施例的方法可以由固态硬盘实施,也可以由访问固态硬盘的主机实施。在诸如固态硬盘的设备启动时,需要重建FTL表。
在根据本发明的实施例中,将FTL表分成多个FTL块,从固态硬盘日志中独立地重建各个FTL块。确定待重建的FTL块(800)。例如,从第一个FTL块开始重建。或者,估计存储系统启动后将被首先访问的存储区域(例如,主机存储操作系统的存储区域),并优先加载对应这部分存储区域的FTL块。或者,在固态硬盘中(例如,固态硬盘日志中)存储上一次或者先前的固态硬盘启动后被首先访问的逻辑地址或对应的FTL块,并作为选择优先重建的FTL块的依据。在固态硬盘上电时,获取所存储的逻辑地址(一个或多个)或FTL块。在固态硬盘上存储了之前启动后被首先访问的逻辑地址时,选择FTL块,使得所选的FTL块的逻辑地址范围包括该被首先访问的逻辑地址。
在另一个例子中,识别存储设备接收到的IO请求所对应的FTL块(包含所接收的IO请求所请求的逻辑地址的FTL块),并优先加载这部分FTL块。
依然在另一个例子中,设备启动后,按FTL块地址的顺序对FTL表进行重建。当重建到FTL块3时,接收到来自主机的访问对应FTL块5的逻辑地址的IO请求,则暂停对FTL块3的重建操作,开始对FTL块5的重建,在FTL块5重建完成后,响应该IO请求,而后再继续先前中断的FTL表顺序重建操作。
依然在又一个例子中,设备启动后,以预测的方式对FTL表进行重建,当预测到下一个将被访问的FTL块为FTL块2时,对FTL块2进行重建。这时若接收到来自主机的访问对应FTL块5的逻辑地址的IO请求,则暂停对FTL块2的重建操作,开始对FTL块5的重建,在FTL块5重建完成后,响应该IO请求,而后重新预测待重建的FTL块,并进行重建操作。
为重建FTL块,从非易失存储介质中的预定位置获取指定FTL块(例如FTL块1)的FTL帧和/或日志帧(若存在)在固态硬盘日志的存储位置(810)。根据本发明的一个实施例,非易失存储介质中记录FTL块1的最后1个FTL帧的存储位置,以及FTL块1的最后1个日志帧的存储位置。
从FTL块1的最后1个FTL帧的存储位置读取FTL帧,并从所读取的FTL帧中获取前1个FTL的存储位置,并读取该前1个FTL帧,以此方式,从固态硬盘日志中读取属于FTL块1的所有FTL帧(820)。以及若存在属于FTL块的日志帧,还从FTL块1的最后1个日志帧的存储位置读取日志帧,从所读取的日志帧中获取前1个日志帧的存储位置,以此方式从固态硬盘日志中读取属于FTL块1的所有日志帧。
将读取的每个FTL帧按其在FTL块1中位置写入内存来作为FTL块1的部分。将属于FTL块1的所有FTL帧放入内存,以形成FTL块1的基本内容(830)。接下来,若存在属于FTL块1的日志帧,还用日志帧来更新内存中的FTL块1,以完成对FTL块1的重建(840)。用日志帧更新FTL块1需要遵循指定的顺序。例如,按日志帧中的日志条目被生成顺序的逆序来更新FTL块1。首先,从固态硬盘日志中获得属于FTL块1的最后1个日志帧,将最后一个日志帧中的多个日志条目按从后向前的顺序更新到FTL块1。用日志条目更新FTL块的含义在于,用日志条目中的逻辑地址作为索引,替换FTL块1中的被索引条目的物理地址。接下来,获取属于FTL块1的倒数第二个日志帧,并用其中的日志条目更新FTL块1。
由于在日志条目中可能存在具有相同逻辑地址的多个条目,而这些条目中的最后条目记载了对应FTL条目的最新内容,在更新FTL块1时要避免由FTL条目的旧内容替换了新内容。为此目的,在重建FTL块1的过程中,对每一个被更新的FTL条目设置标记,在后续重建过程中,若待被日志条目更新的FTL条目上存在标记,则忽略该日志条目(即,不使用该日志条目来更新FTL块)。而当处理了FTL块1的所有日志帧后,清除FTL块1的所有被设置的标记。
作为本发明的又一实施例,按日志帧中的日志条目被生成顺序来更新FTL块1,首先,从固态硬盘日志中获得属于FTL块1的第一日志帧,将第一日志帧中的多个日志条目按从前向后的顺序更新到FTL块1。用日志条目更新FTL块的含义在于,用日志条目中的逻辑地址作为索引,替换FTL块1中的被索引条目的物理地址。接下来,获取属于FTL块1的第二日志帧,并用其中的日志条目更新FTL块1。
FTL块1的重建完成后,虽然尚未重建出完整的FTL表,但对FTL块1对应逻辑地址范围的IO请求已可得到响应。
接下来,判断是否还存在其他待重建的FTL块(850)。若已经重建了FTL表的所有FTL块,可以完成系统启动(860)。若依然存在未重建的FTL块,继续步骤800并确定待重建的FTL块。
图9是根据本发明实施例的固态硬盘的框图。存储设备包括控制器、NAND闪存、DRAM与NOR闪存。控制器分别耦合到NAND闪存、NOR闪存与DRAM。在NAND闪存中包括启动页、日志区与用户数据区。在日志区中存储根据本发明实施例的固态硬盘日志,在用户数据区存储固态硬盘作为存储设备而保存的用户数据。固态硬盘日志中存储了来自多个FTL块的FTL帧与日志帧。
DRAM中存储了FTL表,图9中,由阴影所指示的FTL表的部分是已经被更新的FTL表部分(例如,对应于FTL帧1)。在日志区中存储的日志帧1-1与日志帧1-2记录了FTL表的更新。并且日志帧1-1还存储了其所对应的FTL帧1的地址,而日志帧1-2存储了同属于FTL帧1的前一个日志帧(日志帧1-2)的地址。从而通过在FTL帧1所指示的FTL表部分上重放日志帧1-1与日志帧1-2中记录的更新,能够获得由阴影所指示的FTL表部分。
在图9的例子中,NAND闪存的启动页中存储各个FTL块的FTL帧与日志帧的在日志区的地址。可选地,属于同一FTL块的FTL帧组织成链表,而属于同一FTL块的日志帧也组织为链表,在启动页中存储每个FTL块的FTL帧链表与日志帧链表在日志区的首地址与尾地址。或者在启动页中存储每个FTL块的FTL帧链表的头节点与尾节点在日志区的存储位置,以及日志帧链表的头节点与尾节点在日志区的存储位置。
在进一步的实施例中,NAND闪存中存储了多个启动页,用于提供启动页的备份或启动页的不同版本。还在NOR闪存中存储有效启动页的存储位置(在NAND闪存中的物理地址)。固态硬盘上电时,控制器从NOR闪存中获取有效启动页的地址,并依据该地址从NAND闪存中获取有效启动页,进而依据启动页指示的FTL帧地址和/或日志帧地址来在DRAM中重建FTL表。
图10展示了根据本发明实施例的响应掉电事件而生成固态硬盘日志的示意图。在图10的实施例中,固态硬盘日志1010包括物理页1020、物理页1021、物理页1022、……物理页1028与物理页1029。在发生掉电时,物理页1022已经被写入非易失存储介质。在掉电后,备用电源供电的时间有限,为在有限的时间内在非易失存储介质中存储FTL表的最新状态,改变写入物理页的FTL帧与日志帧的比例,增加日志帧的占比。在图10的例子中,掉电发生后,用日志帧完全填充物理页1028与1029,而不再写入FTL帧,从而将尽可能多的日志帧写入非易失存储介质。
在备用电源供电期间,即使完全写入日志帧不写入FTL帧,能够写入非易失存储介质的日志帧也是有限的。在根据本发明的一个实施例中,为确保对FTL表的更新能够被保存到非易失存储介质,依据在备用电源供电期间,能够写入非易失存储介质的日志帧的数量来确定缓存的日志条目的数量。例如,若备用电源能够支持将N个日志帧写入非易失存储介质,则缓存的日志条目的总量不超过N个日志帧所容纳的日志条目的数量。进一步地,由于日志帧同FTL块相对应,日志帧的数量不超过N。若已经在内存中的N个日志帧中添满了日志条目,在将这些日志帧的一个或多个写入非易失存储介质前,暂停新日志帧的生成,以及可选地,暂停对需要更新FTL表条目的操作(例如,写命令、擦除命令、Trim命令等)的响应。
在根据本发明的又一实施例中,不仅响应于掉电事件,还依据其他原因来调整FTL帧与日志帧的比例。例如,在写命令频繁出现时,内存中缓存了较多的日志条目,调整固态硬盘日志的物理页中FTL帧与日志帧的比例,以尽快将日志条目写入非易失存储介质。
其中,响应于异常事件发生,包括在NVM的启动页中存储每个FTL块的最后FTL表数据帧在NVM中的地址与最后日志帧在NVM中的地址或在NVM的启动页中存储每个FTL块的最后FTL表数据帧组在NVM中的物理页地址与最后日志帧组在NVM中的物理页地址,其中FTL表数据帧组是存储于相同NVM物理页上的多个FTL帧,以及日志帧组是存储于相同NVM物理页上的多个日志帧。
本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种利用日志重建FTL表的方法,包括:
确定要重建第一FTL块,其中第一FTL块是FTL表的部分;
获取第一FTL块的FTL帧与日志帧的存储位置;
读取属于第一FTL块的多个FTL帧与多个日志帧;
利用所述多个FTL帧重建第一FTL块;以及
利用日志帧更新第一FTL块;
在所述FTL表被完全重建之前,以第一FTL块响应访问第一FTL块的逻辑地址空间的IO请求。
2.如权利要求1所述的利用日志重建FTL表的方法,其中,确定要重建的第一FTL块,包括:
按FTL块在FTL表中的地址顺序,选择第一FTL块;或者
预测存储设备启动后将被首先访问的第一逻辑地址,选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第一逻辑地址;或者
获取存储设备上存储的存储设备之前启动后被首先访问的第二逻辑地址,选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第二逻辑地址。
3.如权利要求1所述的利用日志重建FTL表的方法,其中,确定要重建的第一FTL块,包括:
识别存储设备接收到的IO请求所对应的第三逻辑地址,选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第三逻辑地址。
4.如权利要求3所述的利用日志重建FTL表的方法,确定要重建的第一FTL块,包括:
响应于识别存储设备接收到的IO请求所对应的第三逻辑地址,暂停对第二FTL块的重建而选择第一FTL块,使得所述第一FTL块的逻辑地址范围包括所述第三逻辑地址。
5.如权利要求1-4之一所述的利用日志重建FTL表的方法,其中所述获取第一FTL块的FTL帧与日志帧的存储位置包括:
从NVM的启动页中获取第一FTL块的最后FTL帧的存储位置,以及第一FTL块的最后日志帧的存储位置;或者
从NVM的启动页中获取第一FTL块的最后FTL帧组的存储位置,以及第一FTL块的最后日志帧组的存储位置,其中FTL帧组是存储于相同NVM物理页上的多个FTL帧,以及日志帧组是存储于相同NVM物理页上的多个日志帧。
6.如权利要求1-5之一所述的利用日志重建FTL表的方法,其中,所述利用日志帧更新第一FTL块包括,按日志帧中的日志条目被生成顺序来更新第一FTL块或按日志帧中的日志条目被生成顺序的逆序来更新第一FTL块。
7.如权利要求6所述的利用日志重建FTL表的方法,其中,所述按日志帧中的日志条目被生成顺序的逆序来更新第一FTL块,包括:
获得属于第一FTL块的第一日志帧;
用第一日志帧中的多个日志条目按从后向前的顺序更新第一FTL块;
对被更新的FTL条目设置标记;
若待被第一日志条目更新的FTL条目上存在标记,则忽略该第一日志条目;
用属于所述第一FTL块的所有其他日志帧更新第一FTL块后,或者第一FTL块的所有FTL条目都存在标记后,对第一日志帧的更新完成。
8.如权利要求1-7之一所述的利用日志重建FTL表的方法,还包括:
确定要重建第二FTL块;
获取第二FTL块的FTL帧与日志帧的存储位置;
读取属于第二FTL块的第二多个FTL帧与第二多个日志帧;
利用所述第二多个FTL帧重建第二FTL块;以及
利用所述第二多个日志帧更新第二FTL块。
9.一种利用日志重建FTL表装置,包括:
FTL块确定模块,用于确定要重建第一FTL块,其中第一FTL块是FTL表的部分;
存储位置获取模块,用于获取第一FTL块的FTL帧与日志帧的存储位置;
日志帧读取模块,用于读取属于第一FTL块的多个FTL帧与多个日志帧;
FTL块重建模块,用于利用所述多个FTL帧重建第一FTL块;
FTL块更新模块,用于利用日志帧更新第一FTL块;
IO请求响应模块,用于在所述FTL表被完全重建之前,以第一FTL块响应访问第一FTL块的逻辑地址空间的IO请求。
10.一种固态硬盘,包括:
控制器、NVM、随机访问存储器;
控制器分别耦合到NVM与随机访问存储器;
NVM中包括日志区与用户数据区;
在日志区中存储固态硬盘日志;
在用户数据区存储用户数据;
其中在存储器中存储有FTL表,所述FTL表包括多个FTL块;
其中所述控制器用于执行如权利要求1-8之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610500411.6A CN107544913B (zh) | 2016-06-29 | 2016-06-29 | 一种ftl表快速重建方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610500411.6A CN107544913B (zh) | 2016-06-29 | 2016-06-29 | 一种ftl表快速重建方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107544913A true CN107544913A (zh) | 2018-01-05 |
CN107544913B CN107544913B (zh) | 2021-09-28 |
Family
ID=60966571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610500411.6A Active CN107544913B (zh) | 2016-06-29 | 2016-06-29 | 一种ftl表快速重建方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107544913B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727632A (zh) * | 2018-07-16 | 2020-01-24 | 华为技术有限公司 | 一种数据处理方法和装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055532A1 (en) * | 2003-09-05 | 2005-03-10 | James Yu | Method for efficiently controlling read/write of flash memory |
CN101169751A (zh) * | 2006-10-25 | 2008-04-30 | 三星电子株式会社 | 具有闪存设备的系统及其数据恢复方法 |
CN101930404A (zh) * | 2010-08-27 | 2010-12-29 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
CN102253868A (zh) * | 2010-05-21 | 2011-11-23 | 联发科技股份有限公司 | 用于数据恢复的方法以及用于数据恢复的装置 |
US20130042052A1 (en) * | 2011-08-11 | 2013-02-14 | John Colgrove | Logical sector mapping in a flash storage array |
CN102955742A (zh) * | 2012-10-31 | 2013-03-06 | 浪潮集团有限公司 | 一种系统上电后固态硬盘地址映射表的快速重建方法 |
CN103136116A (zh) * | 2011-12-05 | 2013-06-05 | 财团法人工业技术研究院 | 存储器存储系统及其中控装置、管理方法与断电恢复方法 |
CN103744795A (zh) * | 2013-12-19 | 2014-04-23 | 记忆科技(深圳)有限公司 | 固态硬盘快速启动的方法及其固态硬盘 |
US20140223079A1 (en) * | 2013-02-05 | 2014-08-07 | Via Technologies, Inc. | Non-volatile memory apparatus and operating method thereof |
CN105027090A (zh) * | 2012-10-05 | 2015-11-04 | 西部数据技术公司 | 用于固态驱动器中的物理到逻辑映射的方法、设备和系统 |
US20160062908A1 (en) * | 2014-09-02 | 2016-03-03 | Silicon Motion, Inc. | Methods for Maintaining a Storage Mapping Table and Apparatuses using the Same |
-
2016
- 2016-06-29 CN CN201610500411.6A patent/CN107544913B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055532A1 (en) * | 2003-09-05 | 2005-03-10 | James Yu | Method for efficiently controlling read/write of flash memory |
CN101169751A (zh) * | 2006-10-25 | 2008-04-30 | 三星电子株式会社 | 具有闪存设备的系统及其数据恢复方法 |
CN102253868A (zh) * | 2010-05-21 | 2011-11-23 | 联发科技股份有限公司 | 用于数据恢复的方法以及用于数据恢复的装置 |
CN101930404A (zh) * | 2010-08-27 | 2010-12-29 | 威盛电子股份有限公司 | 存储装置及其操作方法 |
US20150081960A1 (en) * | 2010-08-27 | 2015-03-19 | Via Technologies, Inc. | Memory device and operating method thereof |
US20130042052A1 (en) * | 2011-08-11 | 2013-02-14 | John Colgrove | Logical sector mapping in a flash storage array |
CN103136116A (zh) * | 2011-12-05 | 2013-06-05 | 财团法人工业技术研究院 | 存储器存储系统及其中控装置、管理方法与断电恢复方法 |
CN105027090A (zh) * | 2012-10-05 | 2015-11-04 | 西部数据技术公司 | 用于固态驱动器中的物理到逻辑映射的方法、设备和系统 |
CN102955742A (zh) * | 2012-10-31 | 2013-03-06 | 浪潮集团有限公司 | 一种系统上电后固态硬盘地址映射表的快速重建方法 |
US20140223079A1 (en) * | 2013-02-05 | 2014-08-07 | Via Technologies, Inc. | Non-volatile memory apparatus and operating method thereof |
CN103744795A (zh) * | 2013-12-19 | 2014-04-23 | 记忆科技(深圳)有限公司 | 固态硬盘快速启动的方法及其固态硬盘 |
US20160062908A1 (en) * | 2014-09-02 | 2016-03-03 | Silicon Motion, Inc. | Methods for Maintaining a Storage Mapping Table and Apparatuses using the Same |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727632A (zh) * | 2018-07-16 | 2020-01-24 | 华为技术有限公司 | 一种数据处理方法和装置 |
CN110727632B (zh) * | 2018-07-16 | 2022-11-11 | 超聚变数字技术有限公司 | 一种数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107544913B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112765006B (zh) | 固态硬盘日志生成方法及其固态硬盘 | |
CN102779096B (zh) | 一种基于页块面三维的闪存地址映射方法 | |
US8386698B2 (en) | Data accessing method for flash memory and storage system and controller using the same | |
CN107346290A (zh) | 使用并行化日志列表重放分区逻辑到物理数据地址转换表 | |
CN103425600B (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
US11520696B2 (en) | Segregating map data among different die sets in a non-volatile memory | |
KR20120058352A (ko) | 하이브리드 메모리 시스템, 및 그 관리 방법 | |
CN106557432B (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
CN109164975A (zh) | 一种将数据写入固态硬盘的方法以及固态硬盘 | |
CN101419573A (zh) | 一种存储管理的方法、系统和存储设备 | |
US8892816B1 (en) | System and method for writing data to a memory | |
CN106354658B (zh) | 一种降低混合映射算法中映射表内存资源占用的方法 | |
CN107544912A (zh) | 一种日志记录方法、加载方法及其装置 | |
Chen et al. | Unified non-volatile memory and NAND flash memory architecture in smartphones | |
CN109521944A (zh) | 数据储存装置以及数据储存方法 | |
Rizvi et al. | Data storage framework on flash memory based SSD RAID 0 for performance oriented applications | |
CN106326135B (zh) | 一种平移非易失性存储器nvm的数据的方法及装置 | |
CN107544913A (zh) | 一种ftl表快速重建方法与装置 | |
CN101739350A (zh) | 存储器储存装置及其控制方法 | |
US20170052899A1 (en) | Buffer cache device method for managing the same and applying system thereof | |
Kim et al. | IPL-P: In-page logging with PCRAM | |
CN107544866A (zh) | 一种日志更新方法与装置 | |
Lin et al. | Greedy page replacement algorithm for flash-aware swap system | |
Pratibha et al. | Efficient flash translation layer for flash memory |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 Room 302, 3 / F, building B-2, Dongsheng Science Park, 66 xixiaokou Road, Haidian District, Beijing Applicant before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |