存储设备的元数据聚合处理方法及存储设备与流程

文档序号:24983511发布日期:2021-05-07 22:59阅读:79来源:国知局
存储设备的元数据聚合处理方法及存储设备与流程

本申请涉及存储技术领域,尤其涉及去存储设备的元数据聚合处理方法及存储设备。



背景技术:

图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm芯片105以及dram(dynamicrandomaccessmemory,动态随机访问存储器)110。

nand闪存、相变存储器、feram(ferroelectricram,铁电存储器)、mram(magneticrandomaccessmemory,磁阻存储器)、rram(resistiverandomaccessmemory,阻变存储器)等是常见的nvm。

接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。

控制部件104用于控制在接口103、nvm芯片105以及dram110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io(input/output)命令。控制部件104还可以耦合到dram110,并可访问dram110的数据。在dram可存储ftl表和/或缓存的io命令的数据。

控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。已知的nvm芯片接口协议包括“toggle”、“onfi”等。

存储器目标(target)是nand闪存封装内的共享ce(,chipenable,芯片使能)信号的一个或多个逻辑单元(lun,logicunit)。nand闪存封装内可包括一个或多个管芯(die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(plane)。逻辑单元内的多个平面可以并行存取,而nand闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。

存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。

在存储设备中,利用ftl(flashtranslationlayer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。

存储了从逻辑地址到物理地址的映射信息的表结构被称为ftl表。ftl表是固态存储设备中的重要元数据。ftl表的数据项记录了固态存储设备中以数据单元为单位的地址映射关系。在一个例子中,ftl表中的逻辑页对应4kb存储空间,而物理页的存储空间也为4kb(还包括附加的带外存储空间)。ftl表为每个4kb的数据单元提供一条记录,以记录其逻辑地址到物理地址的映射。在另一个例子中,数据单元对应的存储空间大小和物理页的存储空间大小不同,例如物理页可容纳多个数据单元,数据单元对应4kb的存储空间,而物理页的存储空间能够容纳多个数据单元(例如4个)

ftl表包括多个ftl表条目(或称表项)。在一种情况下,每个ftl表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个ftl表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个ftl表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,ftl表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。

在处理来自主机的读命令时,固态存储设备利用读命令中携带的逻辑地址从ftl表中获得对应的物理地址,并依据物理地址向nvm芯片发出读请求,并接收nvm芯片响应于读请求输出的数据。在处理来自主机的写命令时,固态存储设备为写命令分配物理地址,在ftl表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向nvm芯片发出写请求。

除了逻辑地址提供的存储空间,存储设备还通过扩展地址空间来存储其他数据,例如,根据工业标准的s.m.a.r.t.(self-monitoringanalysisandreportingtechnology,自监测、分析及报告技术)信息,存储设备内部的元数据、存储设备的工作日志等。以及通过将扩展地址空间与逻辑地址空间集成,来使用统一的地址映射机制管理逻辑地址空间与扩展地址空间。

大块包括来自多个逻辑单元(lun),也称为逻辑单元组的每个的物理块。每个逻辑单元可以为大块提供一个物理块。例如,在图2所示出的大块的示意图中,在每16个逻辑单元(lun)上构造大块。每个大块包括16个分别来自16个逻辑单元(lun)的物理块。在图2的例子中,大块0包括来自16个逻辑单元(lun)中的每个逻辑单元的物理块0,而大块2包括来自每个逻辑单元(lun)的物理块2。也可以以多种其他方式来构造大块。图2中,用形如ba-b的附图标记指示物理块,其中a指示该物理块由逻辑单元(luna)提供,而b指示该物理块在逻辑单元中的块号为b。大块存储用户数据与校验数据。根据大块存储的用户数据计算得到大块的校验数据。作为举例,在大块的最后一个物理块中存储校验数据。也可以选择大块的其他物理块来存储校验数据。作为又一个例子,在申请号为201710752321.0的中国专利申请的图3a及其说明书中对图3a的相关描述中,提供了大块的又一种构造方式。



技术实现要素:

将存储设备使用一些元数据称为系统数据。系统数据记录了例如存储系统自身关键数据的超级块的地址,ftl表的存储地址,存储设备的一个或多个组件所需的关键数据/运行日志等。存储设备工作期间,系统数据被不断产生和/或更新,代表了存储设备的运行状态发生变化。在存储设备被关闭时,需要在nvm存储介质上保存系统数据,以便存储设备再次启动后能根据被关闭时的状态继续运行。

存储设备可能因异常掉电而关闭,异常掉电时,来不及将系统数据存储到nvm,或者可能存储了部分或非最新的系统数据到nvm,这些存储的系统在再次启动后不应被使用。

存储设备的一个或多个组件都需要保存并使用系统数据,需要统一的系统数据处理单元以统一的方式来保存各组件的系统数据或在启动后为各组件提供系统数据。通过统一的系统数据处理单元,也降低了各组件的复杂度。各组件的系统数据可能在不同时间产生,由统一的数据处理单元合并各组件的系统数据的处理也降低了存储设备的整体工作负担,简化了系统数据的备份流程。

系统数据需要被有效的存储,以在启动后便于获取最新的有效版本。nvm存储介质需要被管理,系统数据被通过扩展地址空间存储在物理存储单元。从而对系统数据的垃圾回收得以通过存储设备的垃圾回收流程处理。

根据本申请第一方面,提供了本申请第一方面的第一元数据聚合处理方法,包括:将生成或更新的元数据记录在各组件自身的元数据缓存中;响应于系统数据处理请求,根据各组件的元数据缓存生成记录系统数据的元数据页,将元数据页临时存储在系统数据缓存中;将系统数据缓存中的元数据页写入nvm中。

根据本申请的第一方面的第一元数据聚合处理方法,提供本申请第一方面的第二元数据聚合处理方法,其中,响应于各组件自身的元数据缓存被写满的通知,从发起通知的组件对应的元数据缓存搬移数据至系统数据缓存中,生成标识脏系统数据的元数据页,将系统数据缓存中的元数据页写入nvm中。

根据本申请的第一方面的第一元数据聚合处理方法,提供本申请第一方面的第三元数据聚合处理方法,其中,周期性地或响应于指定条件满足,从一个或多个组件对应的元数据缓存搬移数据至系统缓存,生成标识脏系统数据的元数据页,将系统数据缓存中的元数据页写入nvm中。

根据本申请的第一方面的第二或第三元数据聚合处理方法,提供本申请第一方面的第四元数据聚合处理方法,其中,标记脏系统数据的元数据页具体为系统数据缓存存满或满足指定条件时,将当前缓存的系统数据写入nvm的一个元数据页,该页被标记为脏状态。

根据本申请的第一方面的第一至第四元数据聚合处理方法之一,提供本申请第一方面的第五元数据聚合处理方法,其中,响应于收到第一个io命令,将当前的系统数据缓存标记为脏状态,并生成标识主动刷写系统数据的元数据页写入nvm。

根据本申请的第一方面的第一至第五元数据聚合处理方法之一,提供本申请第一方面的第六元数据聚合处理方法,其中,响应于对正常关机的指示,用当前的系统数据生成标识可恢复系统数据的元数据页,将标识可恢复系统数据的元数据页标记为干净状态并写入nvm。

根据本申请的第一方面的第六元数据聚合处理方法,提供本申请第一方面的第七元数据聚合处理方法,其中,用当前的系统数据生成元数据页,包括从各组件对应的元数据缓存中获取最新的元数据并搬移到系统数据缓存,将系统数据缓存的元数据页标记为干净状态,以生成标识可恢复系统数据的元数据页。

根据本申请的第一方面的第一至第七元数据聚合处理方法之一,提供本申请第一方面的第八元数据聚合处理方法,其中,响应于存储设备发生异常掉电,丢弃当前各元数据缓存与系统数据缓存中的数据,不将其写入nvm。

根据本申请的第一方面的第一至第八元数据聚合处理方法之一,提供本申请第一方面的第九元数据聚合处理方法,其中,响应于存储设备启动,若从nvm中查找到上次存储设备被关闭时写入的记录了可恢复系统数据的元数据页,使用从该元数据页中获取到的可恢复系统数据对存储设备实施上电初始化。

根据本申请的第一方面的第一至第九元数据聚合处理方法之一,提供本申请第一方面的第十元数据聚合处理方法,其中,响应于存储设备启动,若从nvm中未查找到上次存储设备被关闭时写入的记录了可恢复系统数据的元数据页,则丢弃该元数据页,发起处理异常掉电的上电初始化流程。

根据本申请的第一方面的第九或第十元数据聚合处理方法,提供本申请第一方面的第十一元数据聚合处理方法,其中,通过从nvm中找到的最后一次被写入的元数据页被标记的状态来识别是否为记录了可恢复系统数据的元数据页;所述元数据页被标记的状态具体为记录了可恢复系统数据的元数据页被标记为干净状态,其他元数据页被标记为脏状态。

根据本申请的第一方面的第一至第十一元数据聚合处理方法之一,提供本申请第一方面的第十二元数据聚合处理方法,其中,存储设备启动后,系统数据处理组件被初始化后为空闲状态,响应于系统数据处理组件开始系统数据处理,修改该系统数据处理组件为忙状态,在系统数据处理完成后将系统数据处理组件设置为空闲状态。

根据本申请的第一方面的第十二元数据聚合处理方法,提供本申请第一方面的第十三元数据聚合处理方法,其中,响应于其他组件发出的系统数据处理请求,若系统数据处理组件处于实施系统数据处理流程期间,则系统数据处理组件设置挂起标志,挂起标志指示有待处理的系统数据处理请求。

根据本申请的第一方面的第十二或第十三元数据聚合处理方法,提供本申请第一方面的第十四元数据聚合处理方法,其中,响应于收到其他组件发出的元数据更新消息,处于空闲状态的系统数据处理组件设置忙状态,获取其他组件的元数据缓存的元数据,用获取的元数据生成带有脏状态标记的元数据页,将生成的元数据页写入nvm,并将自身状态设置为空闲状态。

根据本申请的第一方面的第十三或第十四元数据聚合处理方法之一,提供本申请第一方面的第十五元数据聚合处理方法,其中,响应于收到其他组件发出的元数据更新消息,系统数据处理组件还检查是否存在挂起标志,若不存在挂起标志,则系统数据处理组件进入空闲状态,若存在挂起标志,则系统数据处理组件再次设置忙状态以处理被挂起的元数据更新消息。

根据本申请的第一方面的第十五元数据聚合处理方法,提供本申请第一方面的第十六元数据聚合处理方法,其中,在检查存在挂起标志后,从元数据更新消息缓存中取出待处理的更新消息,若元数据更新消息缓存为空,则清除挂起标志,若元数据更新消息缓存非空,则保留挂起标志。

根据本申请的第一方面的第十五或第十六元数据聚合处理方法,提供本申请第一方面的第十七元数据聚合处理方法,其中,响应于再次收到元数据更新消息,将新收到的元数据更新消息记录在元数据更新消息缓存中,并设置挂起标志。

根据本申请的第一方面的第一至第十七数据处理方法之一,提供本申请第一方面的第十八元数据聚合处理方法,其中,存储设备在进入低功耗工作状态之前,用当前系统数据生成记录可恢复系统数据的元数据页,并将该元数据页写入nvm中。

根据本申请的第一方面的第十八数据处理方法,提供本申请第一方面的第十九元数据聚合处理方法,其中,存储设备从低功耗工作状态退出到正常状态的过程中,从nvm搜索之前保存的记录可恢复系统数据的元数据页,从中获取系统数据。

根据本申请的第一方面的第一第十九数据处理方法之一,提供本申请第一方面的第二十元数据聚合处理方法,其中,元数据页存储在指定物理块中,所有指定大块按物理地址顺序排序,元数据页被顺序写入指定的大块;通过扫描指定的物理块来搜索元数据页。

根据本申请的第一方面的第二十数据处理方法,提供本申请第一方面的第二十一元数据聚合处理方法,其中,所述指定物理块为最后一个被写入的物理块,或者为记录了被写入时间最近或时间戳最大的物理块,或者预先指定的物理块。

根据本申请的第一方面的第二十或第二十一数据处理方法,提供本申请第一方面的第二十二元数据聚合处理方法,其中,在存储元数据的大块未被写满时,将元数据按物理地址顺序地写入元数据页。

根据本申请的第一方面的第二十或第二十一数据处理方法,提供本申请第一方面的第二十三元数据聚合处理方法,其中,在大块被写满后,分配空闲大块来承载元数据页,采用同为用户数据分配大块相同的策略来为承载系统数据分配大块,在扩展地址空间上写入元数据页,按物理地址顺序为写入扩展地址空间的元数据页分配物理页。

根据本申请的第一方面的第二十三数据处理方法,提供本申请第一方面的第二十四元数据聚合处理方法,其中,在系统数据中记录扩展地址空间的ftl表或其索引,通过搜索到的记录系统数据的元数据页重建ftl表。

根据本申请第二方面,提供了根据本申请第二方面的第一存储设备,其中,包括控制部件与nvm芯片,所述控制部件执行第一方面的方法。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是现有技术的固态存储设备的框图;

图2是现有技术的大块的示意图;

图3是根据本申请的存储设备存储系统数据的示意图;

图4展示了根据本申请实施例的存储设备的框图;

图5a-图5c展示了根据本申请实施例的存储设备正常工作、关机和上电对元数据处理流程图;

图6展示了根据本申请另一实施例的系统数据处理流程图;

图7展示了根据本申请再一实施例的系统数据处理流程图。

具体实施方式

下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图3是根据本申请的存储设备存储系统数据的示意图。

每份系统数据在nvm上占用一个元数据页。一个元数据页得以在nvm的一次编程命令中被写入nvm。例如,元数据页包括多个物理页,或者属于相同lun的多个平面(plane)的物理页。

存储设备包括多个逻辑单元。在多个逻辑单元上构造大块(例如,大块n、大块n+1)用于存储系统数据。大块包括页条带。系统数据的元数据页被按物理地址顺序地写入大块。物理地址顺序,是例如构成大块的逻辑单元号(lun0、lun1、……lun7)和/或物理页号的顺序。参看图3,元数据页被先写入大块n的逻辑单元0的物理页0,再写入逻辑单元1的物理页0,在构成大块n的所有逻辑单元的物理页0被写入后,逻辑单元号发生回绕,再写入逻辑单元0的物理页1。可选地,来自多个逻辑单元的具有相同编号的物理页构成页条带(例如,页条带n)。

根据本申请的实施例,元数据页有三种类型,可恢复系统数据(图3的斜杠阴影块)、脏系统数据(图3的横杠阴影块)与主动刷写系统数据(图3的网状阴影块)。元数据页具有不同的状态。可恢复系统数据被标记为干净状态,而脏系统数据与主动刷写系统数据都被标记为脏状态。

可恢复系统数据,指在正常掉电发生时写入nvm的一份元数据页。这个元数据页被标记为干净状态。可恢复系统数据仅用来在存储设备启动时区分之前一次掉电是不是正常掉电,如果是正常掉电,在启动的时候从存储设备查找到这个存储了可恢复系统数据的元数据页,并加载/使用其中记录的系统数据。

主动刷写系统数据,是存储设备上电之后,第一个io来的时候,主动刷下去的一个元数据页,它被标记为脏状态。这么做的目的是,来io之前将记录主动刷写系统数据的元数据页写入nvm是为了逻辑上覆盖上一份记录可恢复系统数据的元数据页(物理上,上一份可恢复系统数据位于该主动刷写系统数据之前),以防止此时系统进入异常掉电,再次上电时读到了上一份可恢复系统数据。

脏系统数据,是存储设备工作的时候,如果系统数据缓存满了,就通过系统数据处理流程将当前缓存的系统数据写入nvm的一个元数据页,它页被标记为脏状态。除了系统数据缓存满,也因为其他原因,将当前缓存的系统数据作为脏系统数据写入一个元数据页。

从而存储设备工作过程中,可能产生多个记录了脏系统数据的元数据页。在存储设备上电后到掉电前,最多产生一份记录了主动刷写系统数据的元数据页与一份记录了可恢复系统数据的元数据页。

在大块n逻辑单元0的物理页3中记录可恢复系统数据,然后在逻辑单元1的物理页3中记录主动刷写系统数据,用于在逻辑上覆盖上一份记录可恢复系统数据的元数据页,以防止此时系统进入异常掉电,再次上电时读到了上一份可恢复系统数据;若此时系统数据存满或其他指定情况发生时在逻辑单元2和逻辑单元3的物理页3中系统数据标记为脏数据。

响应于再次有数据更新请求,顺次在逻辑单元4的物理页3中记录可恢复系统数据,然后在逻辑单元5的物理页3中记录主动刷写系统数据;若此时系统数据未满,在数据再次更新时顺次在逻辑单元6的物理页3中记录可恢复系统数据,不再需要标记脏数据。

图4展示了根据本申请实施例的存储设备的框图。

存储设备的控制部件包括多个部件。作为举例,图4展示了固件日志组件410、smart管理组件420与掉电管理组件430。每个组件有自己的元数据缓存(日志组件缓存411、smart信息缓存421与掉电信息缓存431)。各组件工作中生成或更新的元数据被记录在自身的元数据缓存中。控制部件还包括系统数据处理组件440,根据各组件的元数据缓存,生成记录了系统数据的元数据页,并将元数据页通过介质接口控制器450写入nvm。系统数据处理组件使用系统数据缓存441来临时存储生成的元数据页,以便将其写入nvm。

作为举例,固件日志组件410、smart管理组件420与掉电管理组件430,各自响应于自身的元数据缓存被写满,而通知系统数据处理组件。响应于通知,系统数据处理组件440从发起通知的组件对应的缓存搬移数据到系统数据缓存441,生成元数据页(脏系统数据),并写入nvm。该元数据页被标记为脏状态。

依然作为举例,系统数据处理组件440,周期性地或响应于指定条件满足,从一个或多个组件对应的缓存搬移数据到系统数据缓存441,生成元数据页(脏系统数据),并写入nvm。该元数据页被标记为脏状态。

依然作为举例,存储设备上电后,响应于收到第一个io命令,系统数据处理组件440将当前的系统数据缓存标记为脏状态,并生成元数据页(主动刷写系统数据)写入nvm。

依然作为举例,响应于存储设备要被正常关闭,系统数据处理组件440从固件日志组件410、smart管理组件420与掉电管理组件430对应的缓存搬移数据到系统数据缓存,标记为干净状态,生成元数据页(可恢复系统数据),并写入nvm460。

依然作为举例,若存储设备发生了异常掉电,系统数据处理组件440丢弃当前各元数据缓存与系统数据缓存中的数据,不将其写入nvm460。

根据本申请的实施例,在存储设备启动的时候,从nvm460中查找上次存储设备被关闭时写入的记录了可恢复系统数据的元数据页,将其读出并存储在系统数据缓存。若上次存储设备被关闭时未生成记录了可恢复系统数据的元数据页(例如,因为发生了异常掉电),则发起指定的处理流程。作为举例,通过从nvm460中找到的最后一次被写入的元数据页被标记的状态来识别是否为记录了可恢复系统数据的元数据页。记录了可恢复系统数据的元数据页被标记为干净状态,而其他元数据页被标记为脏状态。

作为举例,扫描存储设备的nvm460,最后一个被写入的物理页记录了元数据页。依然作为举例,物理页记录了时间戳和/或类型(元数据页或用户数据页),获取被写入时间最近(或者时间戳最大)的元数据页。依然作为举例,元数据页仅被存储在存储设备的指定物理块中,从而存储设备上电时仅扫描这些指定的物理块来搜索元数据页。

上电的时候,如果搜索到的元数据页是干净状态,意味着之前的掉电是安全掉电,这个元数据页是可用的,就使用这个元数据页的内容来得到系统数据并使用。如果搜索到的元数据页是脏状态,意味着之前的掉电是非安全掉电,这个元数据页就不可用,直接丢弃,并发起处理异常掉电的上电流程。

根据本申请的进一步实施例,除了正常掉电,nvme标准还定义了ps3(一种存储设备的低功耗工作状态),在进入ps3状态之前会先备份存储设备的系统数据,采用同处理正常掉电同样的方式用当前系统数据生成记录了可恢复系统数据元数据页,并将该元数据页写入nvm460。在从ps3状态退出到正常状态的过程中,从nvm460搜到之前保存的该元数据页,从中获取系统数据。这样就不用重新实施初始化流程,使得存储设备可以更快速地从ps3状态进入正常工作状态。

图5a-图5c展示了根据本申请实施例的流程图。

参看图5a,存储设备正常工作期间,控制部件的一个或多个组件生成或更新自身的元数据,例如存储在自身的元数据缓存中。系统数据处理组件从各组件的元数据缓存获取元数据,生成代表了系统数据的元数据页,该元数据页具有脏状态标记(511),并写入nvm(512)。

虽然脏状态的元数据页在将来不会被用来读取系统数据,也将这些元数据页写入nvm,这样既保证系统数据被及时更新,又能同之前写入的可恢复系统数据相区分,使得之前写入的可恢复系统数据不会被误认为最新的可恢复系统数据。

在存储元数据的大块未被写满时,系统数据处理组件将元数据按物理地址顺序地写入元数据页。在大块被写满后,分配空闲大块来承载元数据页。作为举例,采用同为用户数据分配大块相同的策略来为承载系统数据分配大块,系统数据处理组件在扩展地址空间上写入元数据页,按物理地址顺序为写入扩展地址空间的元数据页分配物理页。以及系统数据中记录了扩展地址空间(和/或逻辑地址空间)的ftl表或其索引,从而通过搜索到的记录系统数据的元数据页,得以重建ftl表。

可选地,采用指定的大块存储元数据页。所有指定大块按物理地址顺序排序,元数据页被顺序写入指定的大块。

参看图5b,展示了存储设备的关机流程。若要执行的是正常关机(521),系统数据处理组件用当前的系统数据生成元数据页,将其设置为干净状态(522),并写入nvm(523)。可选地,系统数据处理组件响应于对正常关机的指示,还从各组件获取其最新的元数据,以生成最新的系统数据。

若要执行的是非正常关机(521),系统数据处理组件忽略当前的系统数据(524)。

参看图5c,展示了存储设备的上电流程。存储设备上电后,在存储设备的nvm中搜索最后写入nvm的记录了可恢复系统数据的元数据页(531),从获取的可恢复系统数据,对存储设备实施初始化(532)。

根据本申请实施例的系统数据处理组件工作中可能处于空闲状态与忙状态。系统数据处理组件初始化后处于空闲状态。在空闲状态的系统数据处理组件可实施系统数据处理流程。开始实施系统数据处理流程后,系统数据处理组件处于忙状态,在系统数据处理流程完成后,系统数据处理组件返回空闲状态。

若系统数据处理组件实施系统数据处理流程期间又收到其他组件发出的系统数据处理请求,系统数据处理组件设置挂起标志。挂起标志指示有待处理的系统数据处理请求。

图6展示了根据本申请另一实施例的系统数据处理流程。

存储设备工作过程中,其控制部件的一个或多个组件向系统数据处理组件发出元数据更新消息,以指示其生成或更新的元数据,或者其元数据缓存被写满。

响应于收到元数据更新消息(601),处于空闲状态的系统数据处理组件设置忙状态(602),并清除挂起标志(603)。系统数据处理组件获取一个或多个组件的元数据缓存的元数据(604),用获取的元数据生成元数据页,该元数据页带有脏状态标记(605)。系统数据处理组件将生成的元数据页写入nvm,并将自身状态设置为空闲状态(606)。

系统数据处理组件检查是否存在挂起标志(607)。若不存在挂起标志,系统数据处理组件进入空闲状态(608)。若存在挂起标志,系统数据处理组件再次设置忙状态以处理被挂起的元数据更新消息。可选地,还设置元数据更新消息缓存。在检查到挂起标志后,从元数据更新消息缓存中取出待处理的更新消息。此时若元数据更新消息缓存为空,则清除挂起标志。若元数据更新消息缓存非空,则保留挂起标志。

在系统数据处理组件处理元数据更新消息期间,响应于再次收到元数据更新消息(609),将新收到的元数据更新消息记录在元数据更新消息缓存中(610),并设置挂起标志(611)。若未再次收到更新消息,则保留挂起标志(612)。

图7展示了根据本申请再一实施例的流程图。

存储设备上电后,在存储设备的nvm中搜索最后写入nvm的记录了可恢复系统数据的元数据页(710),根据获取的可恢复系统数据生成更新的元数据并存储在系统数据缓存中(720)。

响应于收到关机事件(730),获取元数据页的所有元数据(740),刷写系统数据缓存中缓存的元数据页(750)。响应于收到数据更新事件(760),获取元数据页的所有元数据(770),刷写系统数据缓存中缓存的元数据页(780)。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1