物理介质感知的空间耦合的日志记录和重放的制作方法

文档序号:17727870发布日期:2019-05-22 02:38阅读:130来源:国知局
物理介质感知的空间耦合的日志记录和重放的制作方法

虚拟化计算环境常常是由基于块的存储来支持的。这种基于块的存储越来越多地由固态驱动器(ssd)提供。ssd提供块式接口,可以轻松地将这些驱动器集成到传统上依赖于硬盘驱动器和其他块存储设备的系统中。ssd驱动器制造商采用控制器,该控制器提供块式接口并管理数据存储和映射。例如,当接收到读或写请求时,它可以包括与请求相关联的逻辑块地址。控制器可以确定ssd上的应该从哪里读取数据、或者应该向哪里写入数据的物理位置。控制器还可以管理ssd上的数据存储以改善设备的寿命,并管理其他闪存特定功能。然而,虽然驱动器制造商可以提供适合普通客户的控制器,但是这样的控制器可能无法为可以部署这种驱动器的所有用户和应用场合提供足够的灵活性或可定制性。

附图说明

将参考附图描述根据本公开的各种实施方案,其中:

图1示出了可以实施各种实施方案的各方面的示例环境。

图2示出了可以根据各种实施方案使用的固态驱动器的闪存转换层的框图。

图3示出了根据各种实施方案的闪存阵列的简图。

图4示出了根据各种实施方案的日志和闪存阵列。

图5示出了根据各种实施方案的空间耦合的日志。

图6示出了可以根据各种实施方案使用的间接模块的框图。

图7示出了可以根据各种实施方案使用的空间耦合日志记录的方法的框图。

图8示出了使用可以根据各种实施方案使用的空间耦合的日志的重放方法的框图。

图9示出了可用于执行各种实施方案的各方面的示例计算设备的部件。

具体实施方式

根据本公开的各种实施方案的系统和方法克服了电子环境中的基于块的存储服务中管理固态驱动器(ssd)的传统方法中遇到的上述和其他缺陷中的一个或多个。特别是,ssd管理功能可以与内置ssd控制器分离,并在外部控制器中实现。ssd管理功能可以包括间接映射和重放。间接映射数据结构可以维持主机计算机使用的逻辑块地址与ssd上的物理数据存储位置之间的映射。对间接映射数据结构的更新可以存储在日志中。一个或多个日志可以与簇块相关联,以便日志存储对该簇块的间接映射数据结构的更新。在各种实施方案中,簇块可以包括跨n个连续管芯的阵列的物理擦除块的分组。物理擦除块的分组可以包括来自每个管芯的相同块索引,以简化从逻辑擦除块到物理擦除块的转换。在其中在管芯上使用多平面编程的实施方案中,来自n个管芯中的每一个的p个连续块可以被分组为单个簇块,其中p是nand管芯支持的平面的数量。当日志已经达到预定义限制时,可以将日志存储到基于由日志存储的条目数量确定的簇块上的预定位置。在一些实施方案中,每个日志的预定义限制可以使用以下各项中的一项或多项作为输入,根据公式导出:日志编号、簇块索引号、簇块序列号。这种一起位于分散在整个簇块中的预定位置处被称为空间耦合的日志记录。此外,还在日志中捕获簇块中的每个物理介质块(包括未编程的有缺陷/坏块),或诸如填充或其他元数据之类的其他非主机数据。由于这种直接映射,该日志被认为是物理介质感知的。当在断电之后恢复通电时,可以从分散的预定义位置检索空间耦合的日志,并将其用于重建间接映射数据结构。

图1示出了可以实施各种实施方案的各方面的示例环境100。在该示例配置中,基于块的数据存储服务102使用在数据中心104中的多个基于块的数据存储系统,以向执行程序或各种其他部件、系统或服务提供可靠的、非本地的、基于块的数据存储。数据中心102包括多个机架104,每个机架都包括多个计算系统106。所示机架104上的计算系统106均可包括控制器108,该控制器包括闪存转换层(ftl)和一个或多个固态驱动器(ssd)110。固态驱动器通常包括执行各种管理功能的控制器。然而,在各种实施方案中,这些功能是与驱动器本身分离的,并由外部控制器108提供。例如,控制器108的闪存转换层可以提供日志记录、重放和其他间接映射管理服务,如下面进一步讨论的。

如图1所示,基于块的数据存储服务112可以为一个或多个主机计算系统114、虚拟机和/或其他服务提供块存储设备。在一些实施方案中,可以通过网络116访问块存储设备,网络116包括本地网络和/或外部网络(例如,因特网或另一公共数据网络)。在一些实施方案中,数据中心104可以经由网络116连接到一个或多个其他数据中心118,每个所述其他数据中心118都可以包括为数据中心104示出的一些或所有计算系统和存储系统。主机计算系统114可以由各方为各种目的进行操作,例如由数据中心的运营商或第三方(例如,基于块的数据存储服务的客户)进行操作。此外,一个或多个其他计算系统可以是档案存储系统(例如,作为远程网络可访问存储服务的一部分),块数据存储服务可以例如在一个或多个档案管理器模块(未示出)的控制下与档案存储系统进行交互,一个或多个档案管理器模块在一个或多个其他计算系统上执行或者在数据中心的一个或多个计算系统上执行。

应当理解,图1的示例为了解释的目的而进行了简化,并且主机计算系统、服务器块数据存储系统和其他设备的数量和组织可以比图1中所示的大得多。例如,作为一个说明性实施方案,每个数据中心可能会有数千个计算系统,其中这些计算系统中的至少一些计算系统是主机计算系统,每个主机计算系统都可以托管一个或多个虚拟机,和/或这些计算系统中的一些是基于块的数据存储系统,每个基于块的数据存储系统都可以存储几个卷副本。如果每个托管虚拟机都执行一个程序,则这样的数据中心可以一次执行多达数万个程序副本。此外,可以在服务器块数据存储系统上存储数百或数千(或更多)个卷,这取决于服务器存储系统的数量、卷的大小和每卷的镜像副本的数量。应当理解,在其他实施方案中,可以使用其他数量的计算系统、程序和卷。

在各种实施方案中,基于块的存储服务可以将存储作为web服务暴露给客户。客户可以提交web服务请求或其他适当的请求或调用,以在这些服务器上分配存储和/或从为这些客户提供的实例访问该存储。在某些实施方案中,用户能够访问这些存储设备的数据卷,就好像那些存储设备是传统的块设备一样。由于数据卷对于客户实例而言似乎每个卷都是磁盘驱动器或类似的块设备,因此可以使用偏移量、长度和其他此类传统块设备方面来对卷进行寻址。

传统的固态硬盘(ssd)包括一个提供各种驱动和数据管理功能的控制器。例如,ssd将数据持久存储在闪存单元中;但是数据不能被覆盖,而是必须先删除,然后才能存储新数据。另外,每个单元在其不再能可靠地存储数据之前具有有限数量的写/擦除周期数。因此,为了有效地管理数据存储,ssd控制器可以实现ssd特定的垃圾收集、重放和修整方法。如上所述,这些功能是由驱动器制造商提供的,并且可能并非所有用户都适合。根据各种实施方案,控制器提供的许多功能可以与ssd分离。

图2示出了可以根据各种实施方案使用的与固态驱动器分离的控制器的框图200。控制器202可以包括闪存转换层(ftl)204,其为ssd206提供各种数据管理功能。如图2所示,ftl204可以包括间接模块208、垃圾收集器210和输入/输出管理器212。其中许多管理功能需要定位ssd上的物理存储数据的位置。间接模块208可以使用间接映射表214来管理这些位置,所述间接映射表214将主机计算系统使用的逻辑块地址映射到磁盘上的物理数据位置。在存储在间接映射表中的间接单元中描述了这些逻辑到物理映射。间接管理器216可以使间接映射表中的间接单元能够被存储、修改或更新。间接映射表可以作为本领域普通技术人员已知的各种数据结构来实现。在各种实施方案中,每个间接条目都可以表示多个逻辑上且连续的数据块。

这种间接映射表可能会变得非常大,与ssd的大小成比例地增大。间接映射表可以保存在诸如ram之类的易失性存储器中。这提供了对映射的快速访问,但是在发生电源故障或其他意外电源中断的情况下可能会导致间接映射表的丢失。在各种实施方案中,并且如下面进一步讨论的,实现了一种空间耦合的日志记录方案,在该方案中,每次将数据写入磁盘时,包括逻辑地址信息的日志条目。基于日志条目的位置,可以推断出相应的物理位置。每个日志都具有有限的大小,存储最大数量的相应条目。在一些实施方案中,所有日志都具有相同的大小。在一些实施方案中,日志可以具有可变大小。另外,每个物理介质块,无论是否有缺陷,都被记录下来。通过包括每个物理介质块的日志条目,可以将日志存储在预定位置,而不管磁盘上的有缺陷块(例如,坏块)的位置。当日志已达到预定义的限制时,日志将存储在同一簇块中的ssd中,并紧挨在其描述的数据之后。由于日志包括对应于已知磁盘空间量的有限数量的条目,因此确切地知道日志在磁盘上的相对于簇块的开始的位置(或最后一个日志存储位置)。

如所讨论的,在可以将数据存储到闪存块之前,闪存块必须处于擦除状态(例如,不能将数据覆盖到相同的物理位置,除非首先擦除其中的数据)。为了适应这些特性,可以将数据按顺序写入下一可用页面。当向与先前写入的数据相同的逻辑地址写入新数据并将其与该逻辑地址相关联时,使先前写入的数据失效。垃圾收集器210可以确保已擦除的簇块可用于存储数据,并减少数据碎片。垃圾收集器210可以包括日志选择器218,该日志选择器218可以从预定位置检索日志并确定数据是否有效。然后,垃圾收集引擎220可以根据需要重新定位数据或忽略数据,从而在擦除簇块时将其擦除。输入/输出管理器212可以管理对ssd206的读和写访问。在各种实施方案中,读管理器222和写管理器224可以包括存储被请求读取或写入的数据的读和写高速缓存。在各种实施方案中,修整管理器226可以使客户端设备能够指出一系列逻辑地址已陈旧,并且可以被丢弃。通过使客户端能够将某些逻辑地址范围标记为陈旧,可以减少垃圾收集开销。

图3示出了根据各种实施方案的闪存阵列的简图300。簇块302表示ssd上的连续管芯304的分组。该分组可以包括跨n个连续管芯的阵列的物理擦除块。物理擦除块的分组可以包括来自每个管芯的相同块索引,以简化从逻辑擦除块到物理擦除块的转换。在其中在管芯上使用多平面编程的实施方案中,来自n个管芯中的每一个的p个连续块可以被分组为单个簇块,其中p是nand管芯支持的平面的数量。当将数据存储到磁盘时,它存储在簇块302的一个或多个页面306上。尽管图3中示出的示例簇块302包括五个管芯302和六个页面304,但是也可以使用替代配置。另外,簇块的长度可以是可变的。在此示例中,每个虚线框都表示ssd上的在写入操作期间写入的物理空间量。每个虚线框内的每个数字都表示间接单元在簇块上的布置顺序。当将数据写入簇块时,相应的条目存储在日志中,每个条目都按所示顺序对应于间接单元。该示例在图4中继续。

图4示出了根据各种实施方案的日志和闪存阵列的简图400。如图4所示,簇块402存储对应于逻辑块地址的数据。日志404可以保存在ram中,并且包括存储在簇块中的数据的逻辑块地址。可以按照与将数据写入磁盘相同的顺序来更新日志。如上面参考图3所述,数据以特定顺序写入磁盘。例如,日志404的前三个条目对应于管芯0,页面0-3,反映了数据被写入的顺序。通过以相同顺序来更新日志,日志中的每个条目都对应于磁盘上的已知位置。该日志包括介质的每个物理部分的条目,即使该部分未被写入,例如包括有缺陷或跳过的块,以便该日志与磁盘上的数据保持同步。例如,如图4所示,虚线框406包括被表示为具有值x的有缺陷块。这些有缺陷块(也称为坏块)可以使用坏块表来标识,或者通过在写入期间或在随后读取有缺陷位置期间检测到错误来标识。日志404包括日志条目408中所示的物理磁盘的每个部分(包括有缺陷块)的条目。如下面进一步讨论的,这使得空间耦合的日志不仅可以用于重建间接映射,而且还可以按需重建坏块表。如图4所示,如上所述,在有缺陷块之后,日志404还可以继续按顺序包括条目。例如,虚线框410表示要写入的下一部分磁盘,其对应于日志404的接下来的三个条目412。

在一些实施方案中,每个日志404都可以具有相同的大小。一旦日志填满了所有条目,就可以被存储到簇块402。例如,可以使日志的大小等于间接单元的大小,以便日志可以在单个写操作中写入,而下一个日志可以包括从下一个间接单元开始的条目。由于每个日志都存储在预定位置,因此每个日志都包括将固定数量的物理介质映射到逻辑单元的条目。在这些逻辑单元具有固定大小的情况下,每个日志都具有固定数量的日志条目。如果逻辑单元具有可变大小,例如,在使用压缩的情况下,日志仍然存储在预定位置。为了使日志能够存储在预定位置,每个日志都可以包括可变数量的条目。当已经记录了对应于固定物理磁盘空间量的条目时,可以关闭日志并将其存储在预定位置。在该示例中,每个日志都可以包括不同数量的日志条目,但是将被存储在预定位置并且覆盖固定物理磁盘空间量。

图5示出了根据各种实施方案的空间耦合的日志的简图500。如上所述,日志可以存储到磁盘中与日志中描述的数据一致的同一簇块中。这被称为空间耦合,因为日志和数据是共位的。此外,由于数据以特定顺序存储到磁盘,因此每个物理介质块都被记录在内,包括坏块,并且日志的大小有限,每个日志都存储在磁盘上相对于簇块的开始的确切地知道的物理位置。在一些实施方案中,可以在检测到日志存储事件时存储日志。如上所述,日志存储事件的一个示例是确定日志已满。当确定日志已满时,可将其保存到簇块上的下一个物理位置。如图5所示,可以有多个日志502、504、506在空间上耦合到簇块508,每个日志都包括在该日志之前但在任何先前存储的日志之后的间接单元的存储在簇块中的数据的间接条目。例如,日志502可以包括从簇块508的开始510开始的间接单元的间接条目,直到日志502紧前面的间接单元。类似地,日志504可以包括在日志502之后并且在日志504紧前面的间接单元的间接条目。

如该示例所示,基于日志的大小,每个日志都被存储在相对于簇块的开始确切地知道的物理位置处。例如,图5中的每个日志都存储有40个间接条目,并存储在下一个间接单元中。为了确保将日志存储在预定位置,可以将写放置管理器配置为在检测到日志存储事件时立即将日志存储到下一个间接单元中。此外,每个日志都还绑定到特定的簇块。因此,包括簇块的间接单元的日志存储在该簇块中。这可能会导致日志在快满之前被关闭。这样,日志存储事件的另一示例是确定簇块快满(例如,剩余一个或其他可配置数量的间接单元)。如图5所示,日志506在簇块的末尾处关闭,其比日志502或504少一个条目。虽然图5的示例示出了具有少量日志条目的日志,但这只是为了简化描述和说明。在各种实施方案中,可以使用具有更多或更少条目的日志。例如,如果日志的大小与32kib间接单元相匹配,则每个日志条目都为32位,并且每个日志都包含一个20字节的标头,日志可以包含大约8,000个日志条目,然后再存储到磁盘。这种日志记录方案使单个32kib日志能够包含大约256mib数据的间接条目。

在一些实施方案中,物理介质上的将存储日志的预定位置可能是有缺陷的(例如,介质生产时产生或由于使用或其他因素所导致的)。在一些实施方案中,可以为每个日志预先确定物理介质上的n个连续位置,其中n可以被定义为任何整数。例如,日志的预定位置可以对应于ssd上的2个预定连续页面。虽然这增大了专用于日志的物理介质上的空间量,但它提供了冗余层以确保如果预定位置之一有缺陷,仍然可以使用固定位置日志记录方案。在一些实施方案中,可以在逻辑上将有缺陷位置重新映射到无缺陷位置。例如,可以维护映射到日志位置的有缺陷块的映射,并在设备初始化期间重新映射到一个或多个无缺陷位置。此重新映射可以由ssd固件完成或在闪存设备级别(如果支持的话)完成。

在一些实施方案中,在簇块中的管芯数量等于或大于簇块中使用的日志的数量的情况下,每个日志都可以存储到不同的管芯。例如,如图5所示,每个日志502、504、506都被存储到不同的管芯。如果簇块中的一个物理块出现故障,则只会影响单个日志。为了确保日志在不同的管芯中交错,每个日志都可以包括可变数量的日志条目。由于记录了整个物理介质,因此可以预定义日志条目的数量,以便在每个日志已满时将其存储到不同的管芯中。

在一些实施方案中,如果簇块中的管芯数量等于或大于簇块中使用的日志的数量的两倍,则可以复制每个日志并将其存储到不同的管芯。如果有任何管芯发生故障,则不会丢失日志,因为相应的副本可以从其在另一个管芯上的位置恢复。另外,或者可选地,可使用冗余独立磁盘阵列(raid)来为日志提供额外的保护。例如,可以在簇块中的所有日志中累积raid5奇偶校验,并保存,以便在日志读取失败时进行恢复。

上述实施方案假设每个间接条目都对应于固定磁盘空间量,以便在特定条目数量(例如,日志的大小)之后,日志被存储在预定位置。但是,在使用压缩算法的情况下,每个条目都可能不对应于相同磁盘空间量。因此,如果日志具有固定的大小并且在它被填满时存储它,则它可能不被存储在预定位置。在一些实施方案中,可以使用可变大小的日志,其可以在检测到数据已被写入预定位置时存储到磁盘。例如,写放置管理器可以跟踪写入位置并使日志被写入到磁盘的预定位置。无论日志的大小如何,都可以将日志关闭,并将其写入到磁盘的预定位置,以便稍后可以从预定位置恢复日志。

在一些实施方案中,因为每个日志都存储在预定位置,所以可以使用技术来降低这些位置之一处产生缺陷的可能性。例如,一些ssd可以以单级单元(slc)模式写入,其中每个单元都存储单个数据位,或者以更高密度存储模式写入,例如多级单元(mlc)模式或三级单元(tlc),其中每个单元都可以分别存储两个位或三个位。与mlc或tlc模式相比,slc模式可以存储更少的数据,但该数据存储更加可靠。因此,在一些实施方案中,用户数据可以以mlc或tlc模式存储到磁盘以最大化存储密度。当如本文所讨论的那样将日志与用户数据一起存储时,它可以以slc模式存储。这降低了在存储日志的预定位置处产生缺陷的可能性,使得日志更加健壮。例如,日志502、504、506可以以slc模式写入,而图5中所示的所有其他间接单元可以以tlc模式写入。

图6示出了可以根据各种实施方案使用的间接模块的框图600。如上所述,间接管理和重放功能可以与ssd分离并由诸如图2所示的控制器202之类的外部控制器提供。如图6所示,间接模块602可以包括诸如ram之类的存储器604,在其中保存间接映射表606。在一些实施方案中,存储器604还可以包括一个或多个日志608。在一些实施方案中,在将日志写入磁盘之前,可以将每个日志保存在单独的缓冲区中。在系统启动时,存储器604被清除,同样,如果之前没有存储间接映射表606,则它也被清除。但是,这种间接映射表可能非常大,可能会包括有数亿个条目。这样的表大小使得在意外断电的情况下难以完成备份。因此,一些实施方案使用存储到磁盘的日志来在系统启动时重建(在本文中也称为重放)间接映射表。在重放期间,可以按照日志被写入的顺序读取日志,以使用当前值来重建间接映射表。这使得间接映射表可以通过例如每个簇块读取8或16个日志而不是整个簇块本身来被重建。

在一些实施方案中,间接管理器610可以使客户端设备能够读取和更新给定的间接条目。在各种实施方案中,取决于实现需要,间接映射表606可以用不同的间接粒度来实现。间接粒度可以指间接映射表606中的一个间接单元所引用的主机数据块(或扇区)的数量。例如,在一些实施方案中,可以使用32kib的间接粒度。如果驱动器被格式化为4kib块设备,则每个间接单元都将8个连续主机扇区映射到1个物理介质位置。在这样的实施方案中,可以通过将lba的低三位移位来从扇区的逻辑块地址(lba)确定间接条目。间接条目可以指出对应于lba的管芯、块和页面。为了确定对应于lba的间接条目内的扇区,可以执行mod操作。例如,在具有16kib页面大小和32kib间接单元的4kib块格式化驱动器中,前四个扇区将位于间接单元的第一个块中,而后四个扇区将位于间接单元的第二个块中。

在意外断电的情况下,映射表的大小(例如,对于32tb大约为4gb)足够大,以至于保持足够的功率以将映射存储到非易失性存储器将难以完成。相反,重放管理器614可以使用空间耦合的日志来重建间接映射表606。在各种实施方案中,重放管理器614可以在检测到重放事件时启动重放。重放事件可以包括在发生断电后恢复时、在接收到重放请求时等情况下的启动。例如,在调试期间,可以请求对整个磁盘执行重放,或者对介质的已检测到错误的某一特定部分或某些特定部分执行重放。在一些实施方案中,可以从每个簇块上的预定位置将每个簇块的第一日志读取到存储器604中。然后,通过使用来自每个日志的簇块序列号,可以对每个簇块进行处理。例如,可以读取簇块序列中第一个簇块的日志。如上所述,由于日志的位置是已知的,因此间接单元的大小也是已知的,并且每个物理介质块(包括有缺陷块)都被记录,可以在不咨询任何附加元数据的情况下计算每个间接单元的物理位置。这样,当在日志条目中读取逻辑块地址时,可以将相应的物理位置添加到间接映射表中的该lba条目。可以如所讨论的那样从磁盘上的预定位置检索第一簇块中的每个日志,并对其进行处理,直到已经处理了簇块上的最后一个日志并且已经更新了间接映射表。然后,重放管理器614可以转向簇块序列中的下一个簇块。通过按顺序处理每个簇块,间接映射表中的陈旧数据(例如,稍后改变的映射)的物理位置将被覆盖,以便一旦重放完成,间接映射表不包括陈旧映射。通过空间耦合在磁盘上的已知位置的日志,可以在不使用检查点的情况下执行重放。相反,可以读取和处理日志以重建间接映射表。

在各种实施方案中,写放置管理器616可以接收写请求并将那些写请求推送到磁盘。在一些实施方案中,写放置管理器616可以包括一个或多个写高速缓存,写指令在被写入磁盘之前被存储在这些高速缓存中。当执行写请求时,日志管理器612可以相应地更新日志608。在一些实施方案中,可以在初始化ssd时分配多个日志缓冲区。可以将一个日志标记为活动,并将间接条目添加到活动日志中。一旦检测到日志存储事件,可以将日志写入磁盘,并将与另一个日志缓冲区相关联的另一个日志标记为活动日志。这样可以在写入日志时不断推送写入操作,而不会影响响应时间。

在一些实施方案中,并且如下面进一步讨论的,重放管理器614可以被配置为在重放期间重建有缺陷块表,例如坏块映射618。如上所述,介质的每个部分都是被记录的,包括有缺陷的块。这使得坏块映射618能够在其丢失或损坏的情况下被重建。在一些实施方案中,坏块映射618一旦被恢复,就可以从存储器604存储到非易失性数据存储中。

图7示出了可以根据各种实施方案使用的空间耦合日志记录的方法的框图700。如图7所示,可以将固态驱动器(ssd)的间接映射表存储702到存储器中。间接映射表可以包括多个间接单元,这些间接单元将ssd上的物理数据位置映射到主机计算机使用的逻辑地址。在一些实施方案中,可以从主机计算机接收将数据存储到ssd的写请求。可以将数据写入到ssd上的簇块中的物理数据位置。如所讨论的,写放置管理器可以确定簇块上的存储数据的位置。数据按顺序被写入到簇块中的块。

可以将间接单元存储704到间接映射表。在间接映射表中,间接单元将数据映射到ssd上的簇块中的物理数据位置。响应于写请求,可以将数据存储706到ssd。一旦存储了数据,就可以更新708间接映射表以包括到存储了数据的物理数据存储位置的映射。可以基于写请求,使用间接单元将条目添加710到日志。例如,可以使用对应于物理数据位置的逻辑块地址来生成条目。在一些实施方案中,可以确定712要向其写入的下一个物理数据位置是否有缺陷。例如,可以对下一个物理数据位置执行尝试的读/写操作。如果返回错误,则可以确定该位置有缺陷。另外或替代地,可以在坏块映射中查找下一个物理数据位置以确定它是否已经被标识为是有缺陷的。如果确定下一个物理数据位置有缺陷,则可以将指出下一个物理数据位置有缺陷的条目附加714到日志中。

可以将日志条目附加到活动日志,直到检测到日志存储事件716。如果未检测到日志存储事件,则可以在接收到写入请求时,持续向日志附加条目。在检测到日志存储事件时,可以将日志存储718到预定位置。预定位置与簇块中的数据共位。在一些实施方案中,日志存储事件可以包括确定日志达到了日志条目的最大数量。在一些实施方案中,日志存储事件可以包括确定日志达到了对应于ssd上的预定磁盘空间量的条目数量。日志可以存储在日志缓冲区中。在一些实施方案中,可以使用多个日志缓冲区,每个日志缓冲区都存储不同的日志。

在一些实施方案中,在将活动日志写入到磁盘的同时,在不同的日志缓冲区中创建一个新日志。对间接映射的后续更新可以存储720在新日志中。在一些实施方案中,日志包括标头和内容区域,标头包括簇块的簇块序列号,内容区域包括将簇块上的数据的物理数据位置映射到逻辑地址的多个条目。

图8示出了使用可以根据各种实施方案使用的物理介质感知的空间耦合的日志的重放方法的框图800。可以检测802重放事件。例如,重放事件可以是启动事件、重放请求或其他事件。可以检索804ssd上的预定位置处的日志。在一些实施方案中,可以从分散在整个簇块中的多个预定位置检索多个日志。所述多个日志可以包括来自每个簇块的第一日志,或者存储在ssd上的每个日志,或者多个日志的任何其他组合。

可以根据日志来确定806与簇块相关联的序列号。例如,当从每个簇块检索第一日志时,可使用序列号来确定处理簇块以重建间接映射表的顺序。在一些实施方案中,可以从包括在日志中的标头中读取序列号。可以使用按序列号排序的日志来重建808间接映射表。重建间接映射表可以包括创建810新的间接映射表。可以从正在解析的当前日志中读取812条目。如所讨论的,介质的每个部分都与日志条目相关联,包括没有存储数据的有缺陷部分。可以分析日志条目以确定814是否包括指出对应的物理位置有缺陷的值。如果日志条目未指出其有缺陷,则可以使用来自该日志条目的映射数据来更新816新的间接映射表。如果日志条目确实指出其有缺陷,则可以更新818坏块映射以将对应物理位置包括到日志条目。

一旦处理了日志条目,就可以确定820是否已到达日志的结尾。如果还存在其他条目,则处理可以返回到框812并且可以处理下一个条目。如果已到达日志的结尾,则可以确定822是否存在其他日志。在一些实施方案中,每个日志都可以包括日志标头数据。例如,标头可以包括写入日志时、写入第一个条目时、写入最后一个条目时的时间戳,或其他数据。另外或替代地,日志标头可以包括每次存储新日志时更新的日志总数。在各种实施方案中,日志标头中的数据可用于确定处理日志的顺序。如果存在其他日志,则可以从其预定位置检索824下一个日志,并且可以如上面针对框812-820所讨论的那样处理下一日志的条目。如果不存在其他日志,则可以发送826指出重播已完成的通知。一旦完成,间接映射表和坏块映射中每一个都已重建。尽管图8的实施方案描述了间接映射表和坏块映射是在相同重放操作期间重建的,但是,在各种实施方案中,可以执行重放以仅重建间接映射表或坏块映射。例如,可以接收重建坏块映射而不重建间接映射表的请求。在这样的示例中,在步骤814,如果日志条目不包括坏块值,则处理可以直接进行到步骤820。类似地,如果接收到重建间接映射表但不重建坏块映射的请求,则在步骤814,如果日志条目包括坏块值,则处理可以直接进行到步骤820。

图9示出了可用于实现各种实施方案的各方面的示例计算设备的一组通用部件的逻辑布置。在该示例中,该设备包括处理器902,用于执行可以存储在存储器设备或元件904中的指令。对于本领域普通技术人员显而易见的是,该设备可以包括许多类型的存储器、数据存储装置或非暂时性计算机可读存储介质,诸如用于存储由处理器902执行的程序指令的第一数据存储装置、用于图像或数据的单独存储装置、用于与其他设备共享信息的可移动存储器等。该设备可以包括某种类型的显示元件906,诸如触摸屏或液晶显示器(lcd),尽管诸如便携式媒体播放器之类的设备可以通过其他方式(诸如通过音频扬声器)来传达信息。在一些实施方案中,计算设备900可以包括一个或多个联网和/或通信元件908,例如wi-fi、蓝牙、rf、有线或无线通信系统。许多实施方案中的设备可以与诸如因特网之类的网络进行通信,并且可以能够与其他这样的设备进行通信。在一些实施方案中,设备可包括至少一个另外的输入部件910,其能够接收来自用户的常规输入。这种常规输入部件可包括例如按钮、触摸板、触摸屏、方向盘、操纵杆、键盘、鼠标、小键盘或用户可以用来向设备输入命令的任何其他这样的设备或元件。但是,在一些实施方案中,这样的设备可能根本不包括任何按钮且可能只通过视觉和音频命令的组合来进行控制,以便用户可以在无需接触设备的情况下来控制设备。设备还将包括一个或多个电源部件912,例如,电源、电池盒、无线充电电路等,用于提供和/或获得计算设备所需的电力。

如所论述,可以根据所描述的实施方案在各种环境中实现不同方法。如将了解,虽然为了解释的目的可以为本文的许多示例使用基于web的环境,但是可以视情况使用不同环境以实施各种实施方案。这样的系统可以包括一个或多个电子客户端设备,其可以包括可操作以通过适当的网络发送和接收请求、消息或信息,并将信息传送回设备的用户的任何适当的设备。此类客户端设备的示例包括个人计算机、蜂窝电话、手持式消息传递设备、膝上计算机、机顶盒、个人数据助理、电子书阅读器等等。网络可包括任何适当的网络,其包括内部网、因特网、蜂窝网、局域网或任何其他此类网络或上述网络的组合。用于这种系统的部件可至少部分地取决于所选择的网络和/或环境的类型。用于通过这样的网络进行通信的协议和部件是公知的,将不在此进行详细讨论。通过网络的通信可以通过有线连接或无线连接和其组合来实现。

说明性环境可以包括至少一个应用程序服务器和数据存储。应当理解,可以存在可以被链接或以其他方式配置的多个应用程序服务器、层或其他元件、进程或部件,其可以交互以执行诸如从适当的数据存储获取数据的任务。如本文所使用的,术语“数据存储”指代能够存储、访问和检索数据的任何设备或设备组合,其可包括任何标准、分布式或集群式环境中的任何组合和任何数目的数据服务器、数据库、数据存储设备和数据存储介质。应用程序服务器可以包括任何适当的硬件和软件,用于根据需要与数据存储集成以执行用于客户端设备的一个或多个应用程序的各方面,处理应用程序的大部分数据访问和业务逻辑。应用程序服务器协同数据存储提供访问控制服务,且能够产生诸如将传递给用户的文字、图形、音频和/或视频的内容,其可以在本示例中通过web服务器以html、xml或另一适当结构化语言向用户提供。对所有请求和响应的处置以及客户端设备与应用程序服务器之间的内容递送可由web服务器来处置。应当理解,web和应用程序服务器不是必需的,并且仅仅是示例部件,因为本文中所讨论的结构化代码可以在任何适当的设备或主机上执行,如本文其他地方所讨论的。

每个服务器通常都将包括操作系统,所述操作系统提供用于所述服务器的一般管理和操作的可执行程序指令,并且每个服务器通常都将包括存储指令的计算机可读介质,所述指令在由服务器的处理器执行时可使服务器执行它的预期功能。服务器的操作系统和一般功能的合适实施方式是已知或可商购的,并且易于由本领域的普通技术人员实施,尤其是根据本文中的公开内容来实施。

在一个实施方案中,环境是利用通过通信链路、使用一种或多种计算机网络或直接连接来互连的数个计算机系统和部件的分布式计算环境。然而,本领域普通技术人员将了解,此类系统可以在具有比所示的部件更少或更多数量部件的系统中同样良好地操作。因此,本文中对任何系统的描绘都应被视作说明性的,而不限制本公开的范围。

如上所述,各种实施方案可进一步在广泛范围的操作环境中实现,在一些情况下,所述环境可包括一个或多个用户计算机、计算设备或可用于操作多个应用程序中的任一个的处理设备。用户或客户端设备可以包括许多通用个人计算机中的任何一种,诸如运行标准操作系统的台式或膝上型计算机,以及运行移动软件,并且能够支持多种联网和消息协议的蜂窝、无线和手持设备。这样的系统还可以包括多个工作站,它们运行各种市场上可买到的操作系统中的任何一种以及用于诸如开发和数据库管理之类的用途的其他已知应用程序。这些设备还可以包括其他电子设备,诸如虚拟终端、瘦客户端、游戏系统以及能够经由网络进行通信的其他设备。

各个方面也可以作为至少一个服务或web服务的一部分来实现,例如可以是面向服务的架构的一部分。诸如web服务之类的服务可以使用任何适当类型的消息传递协议来进行通信,例如通过使用可扩展标记语言(xml)格式的消息,并使用诸如soap(源自“简单对象访问协议”)之类的适当协议进行交换。由这些服务提供或执行的进程可以用诸如web服务描述语言(wsdl)之的任何适当的语言来编写。使用诸如wsdl之类的语言允许诸如在各种soap框架中自动生成客户端代码之类的功能。

大多数实施方案利用本领域技术人员所熟悉的至少一个网络,所述网络使用各种可商购的协议中的任何协议来支持通信,所述协议如tcp/ip、ftp、upnp、nfs以及cifs。网络可以是,例如,局域网、广域网、虚拟专用网、因特网、内联网、外联网、公共交换电话网、红外网络、无线网络以及其任何组合。

在利用web服务器的实施方案中,web服务器可运行多种服务器或中间层应用程序中的任何一个,web服务器包括http服务器、ftp服务器、cgi服务器、数据服务器、java服务器和业务应用程序服务器。服务器还可以能够响应于来自用户设备的请求而通过(诸如)执行一个或多个web应用程序来执行程序或脚本,所述一个或多个web应用程序可以被实施为以任何编程语言(诸如c、c#或c++)或任何脚本语言(诸如perl、python或tcl)以及其组合编写的一个或多个脚本或程序。服务器还可以包括数据库服务器,包括但不限于,可从购买到的数据库服务器。

环境可以包括各种数据存储以及其他存储器和存储介质,如上文所论述。这些可以驻留在各种位置,诸如,在计算机中的一者或多者的本地(或驻留在所述计算机中)或者远离跨网络的计算机中的任何或全部的存储介质上。在一组特定的实施方案中,信息可以驻留在本领域技术人员熟悉的存储区域网络(“san”)中。类似地,用于执行计算机、服务器或其他网络设备所特有的功能的任何必要文件可以在适当的情况下本地和/或远程存储。在系统包括计算机化设备的情况下,每一个这种设备都可包括可通过总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(cpu)、至少一个输入设备(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出设备(例如,显示设备、打印机或扬声器)。这样的系统还可以包括一个或多个存储设备,诸如磁盘驱动器、光存储设备以及诸如随机存取存储器(“ram”)或只读存储器(“rom”)之类的固态存储设备,可移动介质设备、存储卡、闪存卡等。

此类设备还可以包括计算机可读存储介质读取器、通信设备(例如,调制解调器、网卡(无线或有线的)、红外通信设备等)以及如上文所描述的工作存储器。计算机可读存储介质读取器可以与计算机可读存储介质连接或被配置成接收计算机可读存储介质,所述计算机可读存储介质表示远程、本地、固定和/或可移动存储设备,以及用于临时和/或更永久地含有、存储、传输和检索计算机可读信息的存储介质。系统和各种设备通常还将包括位于至少一个工作存储器设备内的多个软件应用程序、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用程序或web浏览器。应理解,替代实施方案可以具有与上述实施方案不同的变化。例如,也可以使用定制的硬件和/或可以采用硬件、软件(包括可移植软件,诸如小应用程序)或两者来实现特定的元件。此外,还可以采用到诸如网络输入/输出设备的其他计算设备的连接。

含有代码或代码的部分的存储介质和其他非暂时性计算机可读介质可包括本领域已知或已使用的任何适合介质,诸如但不限于用于存储信息(如计算机可读指令、数据结构、程序模块或其他数据)的以任何方法或技术所实现的易失性介质和非易失性介质、可移动式介质和不可移动式非暂时性介质,包括ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字通用光盘(dvd)或其他光学存储器、磁盒、磁带、磁盘存储器或其他磁性存储设备,或可用来存储所需信息且可供系统设备访问的任何其他介质。基于本文中提供的公开和教导,本领域普通技术人员将理解用于实施各种实施方案的其他方式和/或方法。

本发明的各种实施方案可鉴于以下条款来描述:

1.一种计算机实现的方法,其包括:

将固态驱动器(ssd)的间接映射表存储在存储器中,所述间接映射表包括将所述ssd上的物理数据位置映射到主机计算机使用的逻辑地址的多个间接单元;

从所述主机计算机接收将数据存储到所述ssd的写请求;

将所述数据存储到所述ssd上的簇块中的物理数据位置;

将间接单元存储到所述间接映射表中,所述间接单元将所述数据映射到所述ssd上的所述簇块中的所述物理数据位置;

使用所述间接单元来生成日志的条目,所述日志包括对应于所述ssd上的固定磁盘空间量的多个条目,所述多个条目中的至少一个条目指出所述ssd上的对应物理数据位置是有缺陷的;

确定所述日志包括最大数量的日志条目;

将所述日志存储到所述ssd上的预定位置,所述预定位置共位在所述簇块中紧挨它所描述的所述数据之后;

确定在断电发生后电力已经恢复;

至少使用存储在所述ssd上所述预定位置处的所述日志,生成新的间接映射表;以及

至少使用存储在所述预定位置处的所述日志,生成坏块映射。

2.根据条款1所述的计算机实现的方法,其还包括:

接收后续写请求;

确定所述ssd上的对应于所述后续写请求的物理数据位置是有缺陷的;以及

生成所述日志的后续条目,所述后续条目包括指出对应于所述后续写请求的所述物理数据位置有缺陷的坏块值。

3.根据任一项前述条款所述的计算机实现的方法,其中所述日志包括:标头,所述标头包括所述簇块的簇块序列号;以及内容区域,所述内容区域包括将所述簇块上的数据的物理数据位置映射到逻辑地址的多个条目。

4.根据任一项前述条款所述的计算机实现的方法,其中所述数据以多级单元或三级单元模式存储到所述ssd,并且所述日志以单级单元模式存储到所述ssd。

5.一种计算机实现的方法,其包括:

接收将数据存储到固态驱动器(ssd)的写请求;

至少部分地基于所述写请求来更新间接映射表,所述间接映射表将所述ssd上的物理数据位置映射到逻辑地址;

至少部分地基于所述写请求来生成日志的条目;

检测日志存储事件;以及

将所述日志存储到独立于所述ssd上的有缺陷位置的预定位置。

6.根据条款5所述的计算机实现的方法,其中所述日志的每个条目都对应于固定磁盘空间量,并且所述日志与对应的最大条目数量相关联,并且其中检测日志存储事件包括:

确定所述最大数量的日志条目已被写入所述日志。

7.根据条款5或6所述的计算机实现的方法,其中所述日志的每个条目都对应于可变磁盘空间量,并且其中检测日志存储事件包括:

确定所述日志包括对应于所述ssd上的预定磁盘空间量的条目数量。

8.根据条款5-7中任一项所述的计算机实现的方法,其中每个日志都包括:标头,所述标头包括正向其写入的簇块的簇块序列号;以及内容区域,所述内容区域包括将所述簇块上的数据的物理位置映射到所述逻辑地址的多个条目。

9.根据条款5-8中任一项所述的计算机实现的方法,其中所述预定位置与所述ssd上的所述数据共位。

10.根据条款5-9中任一项所述的计算机实现的方法,其还包括:

接收后续写请求;

确定所述ssd上的对应于所述后续写请求的物理位置是有缺陷的;以及

生成所述日志的后续条目,所述后续条目包括指出对应于所述后续写请求的所述物理位置有缺陷的坏块值。

11.根据条款5-10中任一项所述的计算机实现的方法,其还包括:

检测重放事件;

从多个预定位置检索多个日志;

基于所述多个日志来重建所述间接映射表;以及

至少基于所述多个日志来生成坏块映射。

12.根据条款10或11所述的计算机实现的方法,其中从多个预定位置检索多个日志还包括:

从每个簇块的第一预定位置处检索日志;以及

使用来自每个簇块的所述日志来确定簇块序列。

13.根据条款10-12中任一项所述的计算机实现的方法,其中基于所述多个日志来生成坏块映射还包括:

将坏块映射存储在存储器中,所述坏块映射包括所述ssd上的至少一个有缺陷的物理位置;

确定日志条目包括坏块值;以及

基于所述日志条目来更新所述坏块映射,包括所述ssd上的对应于所述日志条目的物理位置。

14.根据条款5-13中任一项所述的计算机实现的方法,其还包括:

以多级单元或三级单元模式将所述数据写入到所述ssd。

15.根据条款14所述的计算机实现的方法,其中将所述日志存储到所述ssd上的预定位置还包括:

以单级单元模式将所述日志写入到所述ssd上的所述预定位置。

16.一种系统,其包括:

至少一个处理器;以及

存储器,所述存储器包括指令,所述指令在由所述至少一个处理器执行时致使所述系统:

接收将数据存储到固态驱动器(ssd)的写请求;

至少部分地基于所述写请求来更新间接映射表,所述间接映射表将所述ssd上的物理数据位置映射到逻辑地址;

至少部分地基于所述写请求来生成日志的条目;

检测日志存储事件;以及

将所述日志存储到所述ssd上的预定位置。

17.根据条款16所述的系统,其中所述日志的每个条目都对应于固定物理存储空间量,并且所述日志与对应的最大条目数量相关联,并且其中检测日志存储事件的指令在被执行时还致使所述系统:

确定所述最大数量的日志条目已被写入所述日志。

18.根据条款16或17所述的系统,其中所述日志的每个条目都对应于可变磁盘空间量,并且其中所述检测日志存储事件的指令在被执行时还致使所述系统:

确定所述日志包括对应于所述ssd上的预定磁盘空间量的条目数量。

19.根据条款16-18中任一项所述的系统,其中所述指令在被执行时还致使所述系统:

在接收到后续写请求时,确定所述ssd上的对应于所述后续写请求的物理位置是有缺陷的;以及

生成所述日志的后续条目,所述后续条目包括指出对应于所述后续写请求的所述物理位置有缺陷的坏块值。

20.根据条款16-19中任一项所述的系统,其中所述预定位置与所述ssd上的所述数据共位。

因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,显而易见的是,在不脱离如权利要求所述的本发明的更广泛精神和范围的情况下,可以进行各种修改和改变。

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