数据可用性的挂载时协调的制作方法

文档序号:6383970阅读:248来源:国知局
专利名称:数据可用性的挂载时协调的制作方法
数据可用性的挂载时协调
背景技术
NAND闪存和其他类型的非易失性存储器(NVM)常被用于大容量存储。举例来说,便携式媒体播放器之类的消费类电子设备往往包含了用于存储音乐、视频和其他媒体的闪存。系统可以在NVM中存储不同类型的文件。当系统遭遇到错误时,在NVM中存储的文件的文件系统视图与NVM中存储的实际文件之间有可能会出现分歧。最终,当文件系统需要访问一特定文件时,该系统可能会发现该文件是损坏的或者在NVM中是不存在的。于是,这种情形将会使得文件系统尝试从外部来源恢复文件。对于用户体验而言,在系统操作期间发现分歧以及后续的恢复处理有可能是破坏性的。

发明内容
所公开的是用于挂载时协调数据可用性的系统和方法。在系统引导期间,可以枚举非易失性存储器(NVM)驱动器,并且可以获取NVM驱动器映射。该NVM驱动器映射可以包括LBA在NVM中的实际可用性。然后,文件系统可被挂载,并且可以生成文件系统分配状态。所述文件系统分配状态可以指示LBA可用性的文件系统视图。随后,可以执行数据可用性协调。也就是说。文件系统分配状态和NVM驱动器映射可被相互叠加并比较,以揭示任何分歧。


通过结合附图来参考以下的详细描述,可以更清楚地了解本发明的上述和其他方面及优点,附图中相同的参考字符始终标弓I相同的部分,并且其中:图1和图2是根据本发明各实施例配置的电子设备的框图;图3是根据本发明各实施例的用于在系统引导期间协调数据可用性的例示处理的流程图;图4是根据本发明各实施例的从文件系统和非易失性存储器驱动器的角度看来的例示可用性状态映射的图形视图;图5是根据本发明各实施例的用于恢复数据的例示处理的流程图;图6是根据本发明各实施例的用于确定数据可用性的例示处理的流程图;图7是根据本发明各实施例的用于提供逻辑至物理映射的例示树的框图;以及图8是根据本发明各实施例的用于处理不可校正数据的例示处理的流程图。
具体实施例方式所提供的是用于挂载时协调数据可用性的系统和方法。在系统引导期间,非易失性存储器(NVM)驱动器可被枚举,并且NVM驱动器映射可被获取。所述NVM驱动器映射可以包括NVM中LBA的实际可用性。于是可以挂载文件系统。在挂载期间可以生成用于指示LBA可用性的文件系统视图的文件系统分配状态。随后,可以执行数据可用性协调。也就是说,文件系统分配状态和NVM驱动器映射可被相互叠加并比较,以便揭示任何分歧。更具体地,对于文件系统分配状态中的每一个可用LBA范围,文件系统可以向系统的NVM接口发送命令。一旦接收到该命令,NVM接口就能确定NVM驱动器映射是否具有一致状态。如果NVM接口确定NVM驱动器映射不一致(例如LBA范围的至少一部分不可用),那么NVM接口可以向文件系统发送指示这种不一致性的信息。对于这里使用的LBA范围来说,如果得知所述LBA范围是不可校正或未映射的,所述LBA范围就是“不可用的”。一旦接收到该信息,则文件系统可以调用策略,用以复原与LBA范围的该至少一部分相关联的数据。图1示出的是电子设备100的框图。在一些实施例中,电子设备100可以是或者可以包括便携式媒体播放器、蜂窝电话、口袋大小的个人计算机、个人数字助理(PDA)、桌上型计算机、膝上型计算机以及其他任何适当类型的电子设备。电子设备100可以包括片上系统(SoC) 110和非易失性存储器(NVM) 120。非易失性存储器120可以包括基于浮栅或电荷俘获技术的NAND闪存、NOR闪存、可擦写可编程只读存储器(EPR0M)、电可擦写可编程只读存储器(EEPR0M)、铁电式RAM (FRAM)、磁阻RAM(MRAM)或是其任何组合。NVM 120可被组织成“块”,所述块可以是最小的可擦写单元,并且可被进一步组织成“页面”,所述页面是可被编程或读取的最小单元。在一些实施例中,NVM 120可以包括多个集成电路,其中每一个集成电路都可以具有多个块。来自相应集成电路的存储单元(例如块或块的页面)可以形成“超级块”。NVM 120的每一个存储单元(例如页面或块)都可以使用物理地址(例如物理页面地址或物理块地址)来引用。在一些实施例中,NVM 120的一个或多个指定块可以存储上下文信息。这里使用的“上下文信息”指的是在具体时间点与整个NVM的状态相关联的信息。例如,上下文信息可以包括在一具体时刻有关NVM 120的各个块的逻辑至物理映射。这里使用的“逻辑至物理映射”可以是数据页面的一个或多个逻辑地址(例如逻辑扇区)与物理页面地址之间的映射。在一些实施例中,NVM 120的一个或多个块可以包括块内容表(T0C)。每一个块TOC都可以包括将块页面映射到相应逻辑地址的信息。在一些实施例中,块TOC可以只包括用于在块中被编程的每个页面的逻辑地址(例如逻辑块地址(LBA)或逻辑页面编号)。在其他实施例中,块TOC还可以包括针对页面所进行的更新的相对寿命(例如某一个页面相对于其他页面的更新时间)。在此类实施例中,块TOC可以包括用于被编程的每一个页面的逻辑地址-寿命配对。片上系统110可以包括SoC控制电路112、存储器114以及NVM接口 118。SoC控制电路112可以控制SoC 110以及SoC 110或设备100的其他部件的常规操作和功能。例如,响应于用户输入和/或应用或操作系统的指令,SoC控制电路112可以向NVM接口 118发布读取或写入命令,以便从NVM 120中获取数据或者将数据写入NVM120。尽管数据未必与用户或用户应用直接关联,但为了清楚起见,在这里可以将SoC控制电路112请求存储或检索的数据称为“用户数据”。更确切地说,用户数据可以是由SoC控制电路112生成或获取(例如经由应用或操作系统)的任何适当的数字信息序列。
SoC控制电路112可以包括硬件、软件和固件、以及可以通过操作来驱动电子设备100的功能的任何组件、电路或逻辑的任何组合。例如,SoC控制电路112可以包括在NVM120或存储器114中存储的软件/固件的控制下操作的一个或多个处理器。存储器114可以包括任何适当类型的易失性存储器,例如随机存取存储器(RAM)(例如静态RAM (SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率(DDR) RAM)、高速缓冲存储器、只读存储器(ROM)或是其任何组合。存储器114可以包括能够临时存储编程至非易失性存储器120中或是从中读取的用户数据的数据源。在一些实施例中,存储器114可以充当作为SoC控制电路112的一部分实施的任何处理器的主存储器。存储器114可以包括用于存储逻辑至物理映射的一个或多个数据结构。例如,存储器114可以包括能在LBA范围与NVM 120相应物理地址之间提供映射的树。在下文中将会结合图6和图7来更详细地描述这些树。NVM接口 118可以包括被配置成充当SoC控制电路112与NVM 120之间的接口或驱动器的硬件、软件和/或固件的任何适当组合。对于包含在NVM接口 118中的任何软件模块来说,相应的程序代码可以存储在NVM 120或存储器114中。NVM接口 118可以执行允许SoC控制电路112访问NVM 120以及管理NVM 120的存储单元(例如页面、块、超级块、集成电路)和其内存储的数据(例如用户数据)的多种功能。例如,NVM接口 118可以解释来自SoC控制电路112的读取或写入请求,执行损耗均衡,以及生成与NVM 120的总线协议相兼容的读取和编程指令。虽然将NVM接口 118和SoC控制电路112示出为分开的模块,但这仅仅是为了简化关于本发明实施例的描述。应该理解的是,这些模块可以共享各硬件部件、各软件部件或是这二者。例如,SoC控制电路112可以为NVM接口 118执行基于软件的存储器驱动器。在一些实施例中,电子设备100可以包括其中包含有NVM 120以及NVM接口 118的一些或全部(例如,如下将讨论的转换层)的目标设备,例如闪存驱动器或安全数字(SD)卡。在这些实施例中,SoC 110或SoC控制电路112可以充当目标设备的主机控制器。例如,作为主机控制器,SoC 110可以向目标设备发布读取和写入请求。图2例示了根据各实施例的电子设备200的框图,其中该图更详细地例示了电子设备100 (图1)中的一些固件、软件和/或硬件部件。电子设备200可以具有以上结合图1所述的任何特征和功能,并且反之亦然。如所示,虚线标定的是分层。应该理解的是,关于哪些组件落入标定线以内的描述仅仅是示例性的,并且一个或多个部件可以隶属于不同的层。电子设备200可以包括文件系统210、NVM驱动器212、NVM总线控制器216以及NVM 220。在一些实施例中,文件系统210和NVM驱动器212可以是软件或固件模块,而NVM总线驱动器216和NVM 220可以是硬件模块。相应地,在这些实施例中,NVM驱动器212可以代表NVM接口 218的软件或固件方面,并且NVM总线控制器216可以代表NVM接口 218的硬件方面。文件系统210可以包括任何适当类型的文件系统,例如文件分配表(FAT)文件系统或扩展分层文件系统(HFS+),并且可以是电子设备200的操作系统的一部分(例如图1的SoC控制电路的一部分)。在一些实施例中,文件系统210可以包括提供页面的逻辑至物理映射的闪速文件系统。在这些实施例中,文件系统210可以执行如下所述的NVM驱动器212的一些或所有功能,由此,文件系统210和NVM驱动器212既可以是也可以不是分开的模块。文件系统210可以管理应用和操作系统的文件和文件夹结构。文件系统210可以在电子设备200上运行的应用或操作系统的控制下工作,并且可以在应用或操作系统请求从NVM 220中读取信息或向其存入信息时向NVM驱动器212提供读取和写入命令。连同每一个读取或写入命令,文件系统210还可以提供一逻辑地址以指示用户数据应被读取或是写入的位置,例如逻辑页面地址或是具有页面偏移的LBA。文件系统210可以向不与NVM 220直接兼容的NVM驱动器212提供读取和写入请求。例如,逻辑地址可以使用基于硬驱动的系统典型遵守的规约或协议。与闪存不同,基于硬驱动的系统可以在不先执行块擦除的情况下盖写存储单元。此外,硬驱动可以不需要损耗均衡处理来提高设备的使用寿命。因此,NVM接口 218可以执行存储器特定的功能、厂家特定的功能或是所有这两种功能,从而以适合NVM220的方式来处理文件系统请求以及执行其他管理功能。NVM驱动器212可以包括转换层214。在一些实施例中,转换层214可以是或者包括闪速转换层(FTL)。对于写入命令,转换层214可以将所提供的逻辑地址映射成NVM 220上的已擦除的空闲物理位置。对于读取命令,转换层214可以使用所提供的逻辑地址来确定存储了被请求的数据的物理地址。由于每一个NVM有可能依照NVM的大小或厂家而具有不同的布局,因此,这种映射操作有可能是特定于存储器和/或厂家的。除了逻辑-物理地址映射之外,转换层214还可以执行其他任何适当的功能。举例来说,转换层214可以执行闪速转换层典型具有的其他任何功能,例如垃圾收集(GC )和损耗均衡。举例来说,转换层214可以通过执行垃圾收集来释放已被编程的NVM 220的块,以便进行擦除。举例来说,一旦被释放并擦除,各存储单元则可用于存储接收自文件系统210的新的用户数据。在一些情况中,GC处理可以包括将有效数据从已编程块拷贝至具有已擦除的存储单元的另一个块,籍此使已编程块中的有效数据无效。一旦使已编程块中的所有存储单元无效,则转换层214可以指引总线控制器216对所述已编程块执行擦除操作。这里使用的“有效数据”可以是指响应于与一个或多个逻辑地址(例如LBA)相对应的最近的写入命令而被编程的用户数据,并且由此可以是用于一个或多个逻辑地址的用户数据的有效版本。NVM驱动器212可以与NVM总线控制器216对接,以便完成NVM存取命令(例如编程、读取以及擦除命令)。总线控制器216可以充当对接至NVM 220的硬件接口,并且可以使用NVM 220的总线协议、数据速率以及其他规范来与NVM 220进行通信。NVM接口 218可以基于存储器管理数据来管理NVM 220,所述数据在这里有时也被称为“元数据”。元数据可以是由NVM驱动器212生成的,或者可以是由在NVM驱动器212的控制下操作的模块生成的。举例来说,元数据可以包括用于管理如下的任何信息:逻辑与物理地址之间的映射、坏块管理、损耗均衡、用于检测或纠正数据错误的纠错码(ECC)数据或是其任何组合。所述元数据可以连同用户数据包括文件系统提供的数据,例如逻辑地址。于是一般而言,“元数据”可以是指关于用户数据或是与用户数据相关的任何信息,抑或是通常被用于管理非易失性存储器的操作和存储单元的任何信息。
NVM接口 218可以被配置成在NVM 220中存储元数据。在一些实施例中,NVM接口218可以将与用户数据相关联的元数据存储在其中存储有用户数据的相同存储单元(例如页面)。举个例子,NVM接口 218可以在NVM 220的一个或多个存储单元存储用户数据、相关联的逻辑地址以及关于用户数据的ECC数据。NVM接口 218还可以在相同的存储单元内存储与用户数据相关的其他类型的元数据。NVM接口 218可以存储逻辑地址,由此在NVM 220通电时或在NVM 220操作期间,电子设备200可以确定驻留在该存储单元处的数据。更具体地,由于文件系统210可以依照用户数据的逻辑地址而不非其物理位置来引用该用户数据,因此NVM接口 218可以将用户数据与逻辑地址存储在一起,以保持其关联性。由此,举例来说,即便在NVM 220中保持物理-逻辑映射的索引表过时,NVM接口 218也还是可以在电子设备200通电或在引导之时确定恰当的映射。通常,当系统在系统操作期间遭遇到错误(例如不可恢复的NVM错误,文件系统错误,或是常规系统错误)时,有可能会在NVM中存储的文件的文件系统视图与NVM中存储的实际文件之间出现分歧。举例来说,在不彻底的重新引导期间,文件系统有可能已经为文件分配了 LBA (例如元数据已被更新以反映文件已被下载),但是该文件却仍旧未被编程至NVM。在此类情形下,文件系统有可能假设一个或多个LBA可用(例如一个或多个LBA与NVM中存储的可校正用户数据相关联),但是所述一个或多个LBA实际有可能是不可用的。这里使用的“不可用LBA”可以指的是未被分配/未映射(例如不与NVM中存储的用户数据相关联的LBA)或是已知不可校正(例如与所述LBA相关联的用户数据的纠错码不起作用)的LBA。在稍后的某一时刻,当文件系统需要访问一个或多个LBA时,该系统有可能发现相关联的用户数据遗失或损坏。于是,文件系统有可能尝试恢复与一个或多个LBA相关联的用户数据。然而,该处理有可能会对用户体验产生负面影响。在一些实施例中,与等待用户截取分歧不同,系统可以在系统操作期间发起一个完整的NVM扫描。通过将关于LBA可用性的文件系统视图与NVM扫描结果相比较,系统能够检测出分歧。这会是一个耗时的处理,并且由于系统需要充分地响应于应用请求,因此还会在系统操作的同时造成问题。相应地,为了避免这些性能问题,系统可以在一较早时刻发起协调处理,尤其是在系统引导期间。这样可以允许在对系统性能影响最小的情况下执行协调。更具体地,由于文件系统在引导期间尚未必须对来自应用的读取和写入请求做出响应,因此该系统有足够的时间来执行协调处理。由此,可以在系统变得全面操作之前确定可用LBA的基线,并且系统访问可被推延,直至系统达到一个已知良好的状态。此外,由于协调处理应对的仅仅是存储在易失性存储器中的小型数据结构,因此,与完整地将NVM读取一遍的处理相比,该协调处理可被快得多地执行。现在参考图3,该图示出的是在系统引导期间协调数据可用性的处理300。处理300可以始于步骤302,并且在步骤304,NVM驱动器(例如图2的NVM驱动器212)可被枚举。更具体地,在枚举期间可以获取存储在易失性存储器(例如图1的存储器114)中的NVM驱动器映射。所述NVM驱动器映射可以包括NVM中的LBA的实际可用性。NVM驱动器的枚举可以通过扫描NVM (例如图1的NVM 120或图2的NVM 220)来执行。例如,NVM接口(例如图1的NVM接口 118或图2的NVM接口 218)可以读取存储在NVM中的上下文信息,其中所述上下文信息包括逻辑至物理映射。然后,NVM接口可以将逻辑至物理映射加载到易失性存储器中。在一些情况中,NVM接口可以识别具有未被上下文信息捕捉的逻辑至物理映射的一个或多个块(例如最近更新的块)。由此,NVM接口可以扫描一个或多个块的块TOC,以便更新易失性存储器中的逻辑至物理映射。在一些实施例中,更新的逻辑至物理映射可被存储在合适的数据结构中,例如树或映射表。基于NVM驱动器枚举的结果(例如更新的逻辑至物理映射),NVM接口可以获取能够指示NVM中的LBA的可用性的NVM驱动器映射。在下文中将会结合图6和7来更详细地讨论树和NVM驱动器映射。在其他实施例中,NVM接口可以通过直接扫描NVM来获取NVM驱动器映射(例如通过检查存储在NVM中的一个或多个标记的状态)。以下将会结合图8对该处理进行更详细的讨论。NVM驱动器映射可以采用任何合适的形式。举例来说,现在参考图4,该图从文件系统和NVM驱动器的角度示出了例示的可用性状态映射。更具体地,NVM驱动器映射402可以指示通过NVM接口(例如,图1的NVM接口 118或图2的NVM接口 218)确定的LBA范围1-5的可用性。如所示,可用的LBA(例如与NVM中存储的可校正用户数据相关联的LBA)是用水平线指示的,而不可用的LBA (例如未映射或不可校正的LBA)则是用空白空格指示的。本领域技术人员将会了解,NVM驱动器映射402可以提供任何适当数量的LBA (例如系统中的所有LBA)的可用性。为了简单起见,在图4中仅示出了 NVM驱动器映射的一个子集。NVM驱动器映射402可以作为任何合适的数据结构而被存储在易失性存储器(例如图1的存储器114)中,其中举例来说,所述数据结构可以是位图、映射表或是范围列表。在一些实施例中,NVM驱动器映射402的每一个条目都可以对应于单个比特。也就是说,所述位图的每一个条目都可以存储一个二进制值(例如O或I ),其中每一个二进制值都可以对应于相关联的LBA的可用性状态(例如可用或不可用)。作为替换,所述位图的每一个条目可以对应于多个比特,并且由此可以存储与相关联的LBA的可用性状态相关的附加信息(例如LBA是可用、不可用-未映射还是不可用-不可校正)。由于NVM驱动器映射402仅需要存储LBA的可用性,因此NVM驱动器映射402可以在易失性存储器中占用相对较小的空间。回过来参考图3,在步骤306,文件系统(例如图2的文件系统210)可被挂载。在挂载处理期间,从文件系统日志中可以生成文件系统分配状态。该文件系统分配状态可以指示LBA可用性的文件系统视图。举例来说,再次参考图4,文件系统分配状态404可以代表LBA范围1-5的可用性的文件系统视图。与NVM驱动器映射402相似,文件系统分配状态404可以作为任何合适的数据结构而被存储,例如位图、映射表或范围列表。此外,文件系统分配状态404的每一个条目都可以对应于一个或多个比特。继续图3的步骤308,可以执行引导时未映射。更具体地,文件系统可以向NVM驱动器提供关于当前未映射的LBA的列表。然后,处理300可以移动到步骤310。在步骤310,可以执行数据可用性协调处理。更具体地,在文件系统与NVM接口之间可以建立新的通信路径,并且文件系统分配状态与NVM驱动器映射可被相互叠加并比较,以便揭示任何分歧。由于文件系统分配状态和NVM驱动器映射是存储在易失性存储器中的相对较小的数据结构,因此,该比较处理的执行速度相对较快。在理想情景中,文件系统分配状态和NVM驱动器映射应该是相同的。然而,文件系统分配状态与NVM驱动器映射之间的任何分歧都可以指示其中文件系统假设一个或多个LBA是可用的而这些LBA实际在NVM中是不可用的状况。基于这些分歧,文件系统可以启动一个复处理,以复原与一个或多个不可用的LBA相关联的数据。现在参考图5,示出的是用于恢复数据的例示处理500。处理500可以始于步骤502,并且在步骤504,文件系统(例如图2的文件系统210)可以在系统引导期间确定文件系统分配状态(例如图4的文件系统分配状态404)。于是,在步骤506,针对文件系统分配状态中的每一个可用LBA范围,文件系统可以向NVM接口(例如图1的NVM接口 118或图2的NVM接口 218)传送命令,以确定NVM驱动器映射(例如图4的NVM驱动器映射402)是否具有一致状态。在一些情况中,该命令可以采用应用编程接口(API)命令的形式。API可以是允许软件程序或模块与其他软件交互的任何合适的接口。于是,对于文件系统假设在文件系统分配状态中分配的每一个LBA范围而言(例如图4的LBA范围1-5),文件系统可以传送API命令。在一些实施例中,所传送的API命令可以具有以下格式:IsAllValid(LBA, LBA end, callback);(I),其中LBA可以对应于LBA范围的起始LBA,LBA_End可以对应于LBA范围的结束LBA,以及回调可以对应于回调函数。该回调函数可以是使得该NVM接口能够与文件系统对接的函数。在其他实施例中,所传送的API命令可以具有以下格式:IsAllValid(LBA, LBA_end, list []) ; (2),其中LBA可以对应于LBA范围的起始LBA,LBA_end可以对应于LBA范围的结束LBA,而list[]可以对应于其中能够添加项目的列表。本领域技术人员将会了解,从文件系统传送的命令可以具有任何合适的格式。本领域技术人员还会了解,与在命令中传递单个LBA范围不同,文件系统可以在单个命令中传送LBA范围的列表。继续步骤508,文件系统可以从NVM接口接收指示一个或多个LBA范围具有不一致状态的信息。也就是说,基于与NVM驱动器映射的比较,NVM接口可以确定一个或多个LBA范围中的至少一部分是不可用的(例如未映射或不可校正)。于是,在步骤510,文件系统可以调用策略来复原与所述一个或多个LBA范围相关联的数据(例如用户数据)。为具体LBA范围调用的策略可以基于与所述LBA范围相关联的文件路径。举例来说,如果与LBA范围相关联的数据是临时数据(例如被删除以及随后在每次引导设备的时候重新创建的数据),那么文件系统可以停止复原该数据。另一方面,如果与该LBA范围相关联的数据是与文件系统相关联的内部数据,那么文件系统可以使用该内部数据来复原数据。另举一例,如果与该LBA范围相关联的数据是应用生成的数据,那么文件系统可以调用与相应应用相关联的策略来从外部或备份源恢复数据(例如向外部源发布复原命令,请求应用备份,或是请求用户将设备插入计算机)。一旦复原了数据,则文件系统可以重新挂载该数据。处理500于是可在步骤512结束。现在参考图6,示出的是用于确定数据可用性的处理600。处理600可以始于步骤602,并且在步骤604,NVM接口(例如图1的NVM接口 118或图2的NVM接口 218)能够检测到电子设备正在引导。继续步骤606,NVM接口可以从存储在易失性存储器(例如图1的存储器114)中的数据结构(例如树)获取LBA的可用性状态。举例来说,现在参考图7,NVM接口可以使用树700来获取LBA的可用性状态。树700可以包括多个节点,其中每一个节点都可以具有用于存储分配目的的一致大小(例如,每一个节点都可以具有64字节的固定大小)。为了简单起见,树700被示出为包括少量节点。由此,树700中的虚线框可以指示没有详细示出的树700的其他节点。此外,树700的每一个节点都可以包括一个或多个条目。举例来说,如图7所示,节点702可以包括两个条目(例如条目704和706)。节点的每一个条目都可以与多个字段相关联。例如,树700的每一个条目都可以与LBA范围712(例如压缩行程编码(rle-压缩)范围)以及页面地址714相关联。此外,树700的每一个条目都可以包括一个具有特定令牌值的指针字段716。本领域技术人员将会了解,树700的每一个条目704-710都可以包括图7中未示出的附加字段。然而为了简单起见,在这里只为树700中的每一个条目显示了二个字段。在一些实施例中,条目的每一个指针字段都可以具有与节点指针、NVM指针、NVM未映射指针或是NVM不可校正指针相对应的值。例如,树700的条目708被示出为包括节点指针720 (例如指向另一个节点730的指针)。作为另一个示例,条目706被示出为包括与NVM的一物理地址相对应的NVM指针722。作为另一个示例,条目704可以包括NVM未映射指针724,所述指针可以是指向NVM的指针。然而,NVM未映射指针724还可以表明相关联的条目704对应的是未映射的空间。作为另一个示例,条目710被示出为包括NVM不可校正指针726,所述指针同样可以是指向NVM的指针。NVM不可校正指针726可以表明相关联的条目710对应的是不可校正的空间。在一些实施例中,在垃圾收集(“GC”)处理期间可以更新树700中的指针。例如,在转换层(例如图2的转换层214)正对NVM的已编程块执行GC的同时,该转换层有可能在读取块中的有效数据时发现该数据是不可校正的。随后,转换层可以丢弃该数据,并且将树700中的相关联的指针更新成NVM不可校正指针。通过为树700中的指针保持不同的令牌值,树700可以保持与LBA的分配状态(例如已映射/未映射)以及不可校正状态相关的信息。由此,通过检测树700的指针的不同令牌值,NVM接口可以获取NVM驱动器映射(例如图4的NVM驱动器映射402)。更具体地,与NVM指针相关联的LBA可被认为是可用LBA,而与NVM未映射指针以及NVM不可校正指针相关联的LBA可被认为不可用的LBA。回过来参考图6,在步骤608,NVM接口可以接收来自文件系统(例如图2的文件系统210)的与LBA范围的数据可用性相关的请求。如先前结合处理500 (图5)所述,该请求可以采用API命令的形式。然后,在步骤610,NVM接口可以基于LBA的可用性状态(例如基于与诸如图4的NVM驱动器映射402之类的NVM驱动器映射的比较)来确定LBA范围的至少一部分是否不可用(例如未映射或不可校正)。在步骤610,如果NVM接口确定LBA范围的至少一部分是可用的,那么处理600可以在步骤612结束。在步骤610,如果相反地NVM接口确定LBA范围的至少一部分不可用,那么处理600可以移动至步骤614。举例来说,响应于来自文件系统的关于图4的LBA范围4的数据可用性的请求,NVM接口可以确定NVM驱动器映射402中的LBA范围4的一部分不可用(例如LBA范围4a与LBA范围4b之间的部分)。于是,在步骤614,NVM接口可以向文件系统传送指示LBA范围的至少一部分不可用的信息。NVM接口可以采用任何合适方式来向文件系统告知这一不可用。在一些实施例中,NVM接口可以调用回调函数(例如,所述回调函数可以由文件系统发布的初始API命令提供)。在一些情况中,回调函数可以在每次检测到LBA范围的不可用部分时被调用。作为替换,无论在LBA范围中检测到多少数量的不可用部分,所述回调函数都只被调用一次。在其他实施例中,NVM接口可以将该至少一个LBA范围附加于与API命令相关联的列表(例如,所述列表可以与文件系统发布的初始API命令相关联)。随后,所述NVM接口可以将该列表传送至文件系统。在一些情况下,NVM接口可以在所有不可用LBA已被发现并被附加于列表之后传送该列表。作为替换,NVM接口也可以一有LBA范围被添加至列表便传送该列表。NVM接口可以向文件系统传送与LBA不可用性相关的通用或专用信息。例如,NVM接口可以提供与LBA范围的不可用性相关的通用信息。作为替换,NVM接口可以提供与LBA范围中的哪些部分不可用相关的专用信息。在传送了所述信息之后,处理600可以在步骤612结束。因此,通过在系统引导期间协调LBA数据可用性的文件系统视图与从数据结构获取的LBA的可用性状态,NVM接口能在较早的时刻向文件系统传达任何不一致性。这使得文件系统能够在系统引导期间处理所述不一致性,而不是等到系统全面开始工作之后。在一些实施例中,并非使用树来获取关于LBA可用性的信息(例如一具体LBA是否不可校正),NVM接口可以通过直接扫描NVM来获取NVM驱动器映射(例如通过检查NVM中存储的一个或多个标记的状态)。例如,LBA的不可校正状态可被直接保持在NVM中。现在转到图8,示出的是用于处理不可校正数据的处理800。处理800可以始于步骤802,并且在步骤804,NVM接口(例如图1的NVM接口 118或图2的NVM接口 218)可以确定有必要对NVM (例如图1的NVM 120或图2的NVM 220)的第一个块执行垃圾收集。于是,在步骤806,NVM接口可以检测到存储在第一个块中的有效数据的至少一部分是不可校正的。处理800随后可以移动至步骤808。在步骤808,NVM接口可以令牌化或移动有效数据至NVM的第二块。举例来说,在一些实施例中,NVM接口可以将有效数据移动至第二块。在其他实施例中,NVM接口可以令牌化不可校正的数据。也就是说,NVM接口分配有效数据中的该至少一部分的不可校正状态作为逻辑至物理映射系统中的令牌值。继续至步骤810,NVM接口可以在NVM上存储令牌值,或者置位一个或多个页面中的一个或多个标记和/或第二块的块T0C,以便指示有效数据的所述至少一部分是不可校正的。处理800于是可以在步骤812结束。由此,通过直接在NVM中保持一个或多个LBA的不可校正状态,NVM接口不必使用该信息来更新易失性存储器中的数据结构(例如树)。当NVM接口需要获取NVM驱动器映射时,NVM接口可以为了 NVM的每一个块扫描块TOC。通过扫描块TOC,NVM接口可以确定一个或多个标记的状态,所述状态可以指示块中存储的相应数据(例如用户数据)是否是可校正的。NVM接口可以使用该信息来更新NVM驱动器映射。在其他实施例中,并非在系统引导期间执行该协调处理,而是可以在运行时期间执行该协调处理,并且该协调处理可被穿插以系统输入/输出请求(例如读取和写入命令)。也就是说,系统可以在挂载了文件系统并且完成了运行时去映射之后在不执行数据可用性协调的情况下行进至运行时。在一些情况中,在运行时期间,系统可以拖延针对某些尚未被协调的LBA范围的读取命令。然后,一旦发生特定事件(例如当NVM驱动器首次空闲时,当NVM驱动器发现不可校正数据时,和/或在垃圾收集期间),则可以执行数据可用性协调处理。应该理解的是,图3、5、6和8的处理300、500、600以及800可以由系统(例如图1的电子设备100或图2的电子设备200)中的一个或多个部件执行。例如,这些处理中的至少一些步骤可以由控制电路(例如图1的SoC控制电路112)执行。此外还应该理解,图3、5、6和8的处理300、500、600以及800仅仅是说明性的。在
不脱离本发明范围的情况下,这其中任何步骤都是可被移除、修改或组合的,并且任何附加步骤都是可以添加的。本发明的上述实施例是出于例示而非限制的目的呈现的。
权利要求
1.一种用于确定数据可用性的方法,该方法包括: 在系统引导期间扫描非易失性存储器(NVM)以枚举NVM驱动器; 基于所枚举的NVM驱动器获取NVM驱动器映射; 安装文件系统; 接收来自文件系统的关于至少一个逻辑块地址(LBA)范围的数据可用性的请求; 基于NVM驱动器映射确定所述至少一个LBA范围的至少一个部分是否不可用; 响应于确定至少一个LBA范围的至少一个部分不可用而向文件系统传送表明所述至少一个LBA范围的至少一个部分不可用的信息;以及 在系统引导期间发起恢复处理来复原与所述至少一个LBA范围的所述至少一个部分相关联的数据。
2.根据权利要求1所述的方法,其中NVM驱动器映射是位图、映射表以及范围列表中的至少一种。
3.根据权利要求1或2所述的方法,其中该扫描还包括: 读取存储在NVM中的上下文信息,其中所述上下文信息包括逻辑至物理映射;以及 将逻辑至物理映射加载到易失性存储器中。
4.根据权利要求3所述的方法,还包括: 识别带有尚未被上下文信息捕捉的逻辑至物理映射的至少一个块;以及 扫描所述至少一个块的块 内容表(TOC)以更新易失性存储器中的逻辑至物理映射。
5.根据权利要求4所述的方法,还包括:基于经更新的逻辑至物理映射获取NVM驱动器映射。
6.根据权利要求1或2所述的方法,其中NVM包括多个块。
7.根据权利要求6所述的方法,还包括: 针对多个块中的每一个块,扫描该块的块TOC以便确定标记状态,其中所述标记状态指示存储在该块中的相应数据是否是可校正的;以及基于所述标记状态来更新NVM驱动器映射。
8.根据权利要求1或2所述的方法,还包括:通过调用回调函数向文件系统传送所述信息。
9.根据权利要求1或2所述的方法,还包括: 将所述至少一个LBA范围附加于列表;以及 将该列表传送到文件系统。
10.一种系统,包括: 非易失性存储器(NVM); 操作以保持NVM驱动器映射的存储器接口 ;以及 文件系统,操作用于: 在系统引导期间确定文件系统分配状态; 针对文件系统分配状态中的每一个可用逻辑块地址(LBA)范围,向存储器接口传送应用编程接口(API)命令,以确定NVM驱动器映射是否具有一致状态; 从存储器接口接收表明至少一个LBA范围具有不一致状态的信息;以及 调用策略以在系统引导期间复原与所述至少一个LBA范围相关联的数据。
11.根据权利要求10所述的系统,其中文件系统操作以将文件系统分配状态存储成位图、映射表以及范围列表中的至少一种。
12.根据权利要求10或11所述的系统,其中用于复原数据的所述策略基于与所述至少一个LBA范围相关联的文件路径。
13.根据权利要求12所述的系统,其中文件系统操作用于: 确定与所述至少一个LBA范围相关联的所述数据是临时数据;以及 停止复原该数据。
14.根据权利要求12所述的系统,其中文件系统操作用于: 确定与所述至少一个LBA范围相关联的所述数据是与文件系统相关联的内部数据; 使用该内部数据来复原所述数据;以及 重新安装复原的所述数据。
15.根据权利要求12所述的系统,其中文件系统操作用于: 确定与所述至少一个LBA范围相关联的所述数据是应用生成的数据; 调用与特定应用相关联的策略来恢复所述数据;以及重新安装恢复的所述数据。
16.一种操作用于在设备引导期间执行数据可用性调和的存储器接口,所述存储器接口包括控制电路以操作用于: 从易失性存储器中存储的数据结构获取逻辑块地址(LBA)的可用性状态; 在电子设备的引导期间,协调LBA数据可用性的文件系统视图与从数据结构获取的LBA的所述可用性状态;以及 将所述文件系统视图与LBA的所述可用性状态之间的不一致性传达给文件系统,由此使得文件系统能够在电子设备的引导期间处理所述不一致性。
17.根据权利要求16所述的存储器接口,其中所述数据结构是存储在易失性存储器中的树。
18.根据权利要求16或17所述的存储器接口,其中所述控制电路操作以检测树结构是否包含指向NVM的未映射指针。
19.根据权利要求16或17所述的存储器接口,其中所述控制电路操作以检测树结构是否包含指向NVM的不可校正指针。
20.根据权利要求16或17所述的存储器接口,其中所述控制电路操作用于: 接收来自文件系统的与逻辑块地址(LBA)范围的数据可用性相关的请求;以及 基于LBA的所述可用性状态确定LBA范围的至少一个部分是否不可用。
21.根据权利要求20所述的存储器接口,其中所述控制电路操作用于: 确定LBA范围的至少一个部分不可用;以及 向文件系统传送表明LBA范围的至少一个部分不可用的信息。
22.根据权利要求20所述的存储器接口,其中所述控制电路操作以确定LBA范围的至少一个部分是未映射或不可校正中的至少一种。
23.一种用于确定数据可用性的系统,该系统包括: 在系统引导期间扫描非易失性存储器(NVM)以枚举NVM驱动器的装置; 基于所枚举的NVM驱动器获取NVM驱动器映射的装置;安装文件系统的装置; 接收来自文件系统的关于至少一个逻辑块地址(LBA)范围的可用性的请求的装置; 基于NVM驱动器映射来确定所述至少一个LBA范围的至少一个部分是否不可用的装置; 响应于确定至少一个LBA范围的至少一个部分不可用而向文件系统传送表明所述至少一个LBA范围的至少一个部分不可用的信息的装置;以及 在系统引导期间发起恢复处理来复原与所述至少一个LBA范围的所述至少一个部分相关联的数据的装置。
24.根据权利要求23所述的系统,其中NVM驱动器映射是位图、映射表以及范围列表中的至少一种。
25.根据权利要求23或24所述的系统,其中用于扫描的装置还包括: 读取存储在NVM中的上下文信息的装置,其中所述上下文信息包括逻辑至物理映射;以及 将逻辑至物理映射加载到易失性存储器中的装置。
26.根据权利要求25所述的系统,还包括: 识别带有尚未被上下文信息捕捉的逻辑至物理映射的至少一个块的装置;以及 扫描所述至少一个块的块内容表(TOC)以更新易失性存储器中的逻辑至物理映射的装置。
27.根据权利要求26所述的系统,还包括:基于经更新的逻辑至物理映射获取NVM驱动器映射的装置。
28.根据权利要求23或24所述的系统,其中NVM包括多个块。
29.根据权利要求28所述的系统,还包括: 针对多个块中的每一个块,扫描该块的块TOC以便确定标记状态的装置,其中所述标记状态指示存储在该块中的数据是否是可校正的;以及基于所述标记状态来更新NVM驱动器映射的装置。
30.根据权利要求23或24所述的系统,还包括:通过调用回调函数来向文件系统传送所述信息的装置。
31.根据权利要求23或24所述的系统,还包括: 将所述至少一个LBA范围附加于列表的装置;以及 将该列表传送到文件系统的装置。
全文摘要
提供了用于确定数据可用性的方法和系统。用于挂载时协调数据可用性的系统和方法被公开。在系统引导期间,可以枚举非易失性存储器(“NVM”),并且可以获取NVM驱动器映射。所述NVM驱动器映射可以包括NVM中LBA的实际可用性。文件系统于是可被挂载,并且生成产生文件系统分配状态。所述文件系统分配状态能够指示LBA可用性的文件系统视图。随后,可以执行数据可用性协调处理。也就是说,文件系统分配状态和NVM驱动器映射可被相互叠加并比较,以揭示任何分歧。
文档编号G06F12/02GK103164342SQ201210534198
公开日2013年6月19日 申请日期2012年12月12日 优先权日2011年12月12日
发明者D·J·波斯特, N·J·瓦卡拉特, V·科麦尔尼斯基 申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1