透明混合数据存储装置的制作方法

文档序号:13846983阅读:188来源:国知局
透明混合数据存储装置的制作方法



背景技术:

本公开涉及计算机系统领域。更具体地,提供了一种用于操作透明混合数据存储装置方案的系统、方法和设备,所述透明混合数据存储装置方案包括多种类型的存储部件,诸如一个或多个ssd(固态驱动器/磁盘/设备)和一个或多个hdd(硬盘驱动器)。

ssd和hdd各自相对于彼此具有优点和缺点。例如,ssd提供更快的存取时间和吞吐量以及更大的带宽,但是在给定的存储单位(例如,兆字节、千兆字节)方面更昂贵,并且在一些数量的写入操作之后将失败。

以ssd和hdd两者为特征的现有数据存储方案倾向于简单地使用ssd作为永久存储在hdd上的数据的临时高速缓存。不是提供等于ssd和hdd的组合容量的数据存储装置的总量,这种方案的容量由hdd的容量确定。另外,由于对数据存储装置方案每次访问都是经由ssd进行的,因此系统的吞吐量将受到ssd的限制,并且ssd易于相对较快地磨损。

一些专有的数据存储方案已经被开发出来,但是需要对供应商的硬件和软件平台作出承诺。这些方案通常以磁盘卷级别或磁盘块级别与ssd或hdd一起工作,并且基于用户/操作员无法调整或影响的一些算法,简单地将个体文件分配给给定的磁盘或设备。

附图说明

图1是描绘了根据一些实施例的在其中透明混合数据存储装置方案可以被实现的计算环境的框图。

图2是图示了根据一些实施例的操作透明混合数据存储装置方案的方法的流程图。

图3是根据一些实施例的在透明混合数据存储装置方案内的存储设备之间的数据迁移的框图。

图4描绘了根据一些实施例的用于操作透明混合数据存储装置方案的装置。

具体实施方式

以下描述被呈现以使得本领域的任何技术人员能够作出和使用所公开的实施例,并且在一个或多个特定应用及其要求的上下文中被提供。对所公开的实施例的各种修改对于本领域技术人员来说将是显而易见的,并且在不脱离所公开的范围的情况下,可以将本文中定义的一般原理应用于其他实施例和应用。因此,本发明不旨在限于所示出的实施例,而是应被赋予与本公开一致的最宽范围。

在一些实施例中,提供了一种用于实现透明混合数据存储装置方案的系统、方法和装置,该透明混合数据存储装置方案采用多种类型的存储设备,诸如传统的磁性hdd(硬盘驱动器)和ssd(固态磁盘/驱动器/设备)或其他基于闪存的存储器。本文公开的数据存储装置方案是透明的,因为它们在可以是用户平台(例如台式计算机、工作站、便携式设备)或服务器平台的计算平台上操作,而不需要平台的用户或操作者知道正在使用的存储设备的类型或知道如何将数据分配给设备。然而,用户或操作员(或应用)可以表达关于特定文件或文件集合被存储的位置的偏好(例如,ssd或hdd),数据存储装置方案将使用该偏好来确定文件的部件将被存储在哪里。

在一些实施例中,透明混合数据存储装置方案可以被实现在用户应用和平台的底层文件系统之间操作的库(或操作系统)内。因此,在这些实施例中,存储装置方案避免采用使组织或用户依赖存储解决方案的特定供应商的专有存储装置解决方案的任何需要,并且单独的存储设备的安装和替换是常规的。

在所公开的实施例中,透明混合数据存储装置方案的总存储容量等于所有设备(例如,ssd和hdd)的总可用容量,并且吞吐量(其可以在每秒的i/o操作(iops)方面被测量),并且该方案的带宽基本上等于所有设备的总吞吐量和组合带宽。

使用各种度量来确定哪些数据要存储在不同类型的设备和给定类型的个体设备上,诸如要存储的数据的量(例如,文件的大小)、在给定时间段期间对数据的访问(读取和/或写入)的总数、在给定时间段期间对数据的特定类型(例如,随机的、顺序的)的访问的总数、用户偏好、和/或其他。这些度量也可以用来重新分配方案内数据。例如,基于观察到的对数据的访问模式,可以将数据从一种类型的设备移动到另一种类型的设备。

在一些实施例中,较大或相对大的用户级文件通过透明混合数据存储装置方案被分区为多个固定大小的块,用于在混合设备之间的分配。块的示意性大小是1mb,但也可以考虑其他大小(例如,多兆字节、1gb)。在这些实施例中,包括给定用户级文件的块可以被存储在不同类型的设备上以及给定类型的不同设备上。

例如,取决于它们的可能的访问模式是否是已知的和/或如果与文件相关联的用户、操作员或应用指示文件优选将被存储在其中的设备的类型(例如,ssd、hdd),文件的块的初始分配可以将它们分配给相同的设备,可以随机分配它们,或者可以以某种其他方式分配或指派它们。然而,此后,诸如上所述的度量被累积,并且对块的访问的简档(“profile”)或模式被组装,这可能导致一个或多个块被重新分配或迁移。

如果对给定文件的大多数访问仅涉及有限数量的文件块,这些块可以被迁移到更快的存储装置(例如,ssd)如果这些块尚未被存储在那里,和/或不经常被访问的块被迁移到较慢的存储装置(例如,hdd)如果它们尚未被存储在那里。因此,对于只有一部分被频繁访问的大数据文件(例如数据库文件),繁忙(或“热”)部分可以驻留在一个或多个快速ssd上,而不太忙(或“冷”)部分驻留在一个或多个较慢的hdd上。因此,本文描述的存储装置方案可以基于其访问模式在混合设备之间动态地或自适应地分配和/或重新分配数据,而不是对一种类型的设备执行静态分配,如果对数据的访问随着时间的推移而变化,则该一种类型的设备这样后来可能会变得不合适。

在一些实施例中,给定存储块不包含多于一个文件的部分(或全部)。然而,在其它实施例中,多个文件或多个文件的部分可以驻留在一个块中。

而且,在一些实施例中,为了在易受影响的设备(例如,ssd)上分配磨损和/或用于其他目的,可以平衡某些类型的设备上的负载。这可能涉及将“更热”或更频繁访问的块放置在,和/或将更多块存储在具有比其他设备更长的剩余(估计)寿命的设备上。另外,或者替代,负载平衡可以涉及确保特定类型的每个设备存储分配给该类型的块的合适部分,或者确保对应于合适数量的预期输入/输出操作的多个块,该预其输入/输出操作将由分配给这种类型的块经历。

为了辅助用于存储设备之间的分配、再分配或迁移的热和冷存储块的标识,可以执行效用函数以计算在混合设备上存储的一些或所有块的效用值。在一些实施例中,应用于给定块的该效用函数将反映对块的访问频率(例如,i/o操作的数量)、访问模式(例如,随机或顺序i/o操作的数量或百分比)、块中的数据量、用户/操作员/应用偏好、与块的数据相关联的应用、块的数据的年龄等的因素进行组合。如下所讨论的,在不同的实现中,在块的效用值的计算中涉及的因素可以以不同的方式组合。

图1是描绘了根据一些实施例的在其中透明混合数据存储方案可以被实现的计算环境的框图。

图1的系统110是计算资源的数据中心或其他协作集合(或是其一部分),并且在不同的实施例中包括不同的部件。在图示的实施例中,系统包括用于托管一个或多个应用和/或服务的服务器112、混合存储装置114、和混合存储装置控制器116。存储装置114和/或控制器116可以被配置为对服务器112和/或其他计算平台可访问的数据存储装置子系统。在其他实施例中,混合数据存储装置方案可以用单个计算平台或者在单个计算平台内实现(诸如图4的装置400),这将在下面讨论。

应用服务器112执行创建、消耗和/或以其他方式操纵在混合存储装置114内存储的数据的软件程序。不同的应用或服务可以以不同的速率或吞吐量或者以不同的带宽输入或输出数据,操纵不同大小的数据集合(例如,文件、数据库、对象),可以以不同的优先级操作、可以以不同的规则执行、等等。因此,混合存储装置114接收和发送在吞吐量(例如,每单位时间的输入/输出操作)、带宽(例如,每单位时间的数据量)、大小、优先级(例如实时、批量)等等的方面具有各种特征的数据。

混合存储装置114包括两个或更多个类别或类型的数据存储设备,每个类别包括一个或多个设备。例如,类别1设备122a-122m可以是固态驱动器(ssd)或其他基于闪存的设备,其特征在于相对低容量、高吞吐量、高带宽和高成本(与类别2设备相比较),而类别2设备124a-124n可以是硬盘驱动器(hdd)或其他磁性设备,其特征在于相对较大的容量、低吞吐量、低带宽和低成本(与类别1设备相比较)。在其他实施例中,可以实现其他数量和类型的设备。

混合存储装置控制器116代表应用服务器112和/或其它实体控制对混合存储装置114的访问,并且可以在单独服务器112上执行的软件内、在包括存储设备122、124的一个或多个机器内、或者在中间机器(例如,另一个服务器)内实现。在其它实施例中,诸如在其中混合存储装置114是单个平台(例如,图4的装置400)的一部分的那些实施例中,控制器116可以被实现为由访问混合存储装置的应用采用的库或api(应用编程接口)、或被实现为操作系统、实用程序、或设备驱动程序的一部分。

混合存储装置控制器116使用当时可用的标记或因素和/或新数据的初始分配的默认策略向设备122,124分配新数据。控制器116还周期性地在设备之间重新分配和迁移数据,将热数据和冷数据放置在适当类型的设备上,平衡一些或全部设备的负载,和/或用于其它目的。

当混合存储装置控制器116接收到用于添加到混合存储装置114的文件时,控制器将数据分区或划分成固定大小的块(例如,1mb),然后该固定大小的块被写入一个或多个设备。当数据被输出到客户端或消费者(例如,应用服务器112)时,控制器从混合设备读取数据并根据需要(诸如当所请求的数据包括给定文件的两个或更多个块的内容时)重新组装数据。如果数据然后被重写(即,数据被修改),则包括数据的整个文件(或多个文件)可以被重新分区和存储,或者只是涵盖修改的个体块可以被更新或替换。

系统110可以包括图1中未描绘的其他元件。例如,该系统可以包括其他存储部件、处理部件、通信资源等等。尽管图1中仅示出了系统110的特定部件的单个实例,但是应该理解,可以采用一些或全部部件的多个实例。

图2是图示了根据一些实施例的操作透明混合数据存储装置方案的方法的流程图。在其他实施例中,所图示的操作中的一个或多个可以被省略、重复和/或以不同顺序执行。因此,图2中所示的步骤的具体布置不应被解释为限制实施例的范围。

在这些实施例中,混合数据存储装置包括一个或多个固态驱动器和一个或多个硬盘驱动器。在其它实施例中,可以采用不同类型和/或数量的设备。

操作透明混合数据存储装置方案的方法从混合设备的安装开始(操作202)。在该方法中,设备不需要专有配置,以便于与数据存储装置方案一起使用,因此实际上可以采用任何商业上可用的设备。

此外,如果还没有安装,则安装用于实现透明混合数据存储装置方案的库、api或其他程序代码(操作204)。这个程序代码可以被称为存储装置控制器、存储装置管理器、数据存储装置软件等。

在不同的实施例中,控制器代码可以与将数据存储在混合设备上和/或使用存储在该设备上的数据的应用一起被包括,可以被包括在托管使用在设备上存储的数据的应用的计算设备或平台的操作系统中,可以被实现为库(例如,用户级或应用级库)或设备驱动程序,或者可以具有其他形式。

当用于混合数据存储装置方案中的存储装置的新文件被接收到时(例如,来自用户或应用)(操作206),存储装置控制器确定其是否大于混合存储块的大小(例如,1mb、多个兆字节、1gb)。如果是这样的话,文件被划分为多个存储块。如果小于或等于块大小,则其被存储在单个块中。

以一个或多个存储块形式的文件然后被存储在混合数据存储装置方案中的一个或多个设备上(操作208)。如果存在指示哪个设备或哪个类型的设备(例如,ssd、hdd)更适合于用于文件或个体块的信息,则可以根据该信息存储文件或块。例如,如果应用或用户提名特定类型的存储装置(例如,由于未来使用的预期或可能的模式),则可以相应地存储文件/块。

在一些其它实施例中,所有新文件可以初始地被存储在ssd上,如果它们具有可用的存储空间,但是在对块的访问被观察到时文件的块可以随后迁移(如下所述)。

因为文件是新的,关于文件已被使用或访问的频率、对数据的访问本质上是随机的还是连续的、一次通常访问多少数据、等等的元数据可能是不可用的。当这些度量不可用时,新的文件/块可以被存储在装载最少的设备上,可以随机地分布在不同的设备上,或者可以以某种其它方式(例如循环)来分配。如下面所讨论的,这些度量(和/或其他)将在文件被存储之后被收集,并且可以被用于确定文件和/或其个体块的效用值,以便确定文件或块应当被存储在哪里以便提高数据存储装置方案的性能。

当从透明混合数据存储装置方案请求数据时,对应的块根据需要被读取、组装(例如,重构整个文件),并且响应于请求而被服务(操作210)。在所图示的方法中,控制器或一些其他实体维持标识在混合存储设备上驻留的每个文件的每个块被存储在哪里的映射表,从而促进所请求的数据的取回。

在数据存储装置方案的操作期间,本文讨论的各种度量和/或其他度量由存储装置控制器、一个或多个监视模块、和/或一些其它实体或实体记录(操作220)。在一些实施例中,例如,针对每个存储块维持的元数据标识块被访问的频率(例如,响应于用户或应用i/o操作)、块或块的数据如何被访问(例如,顺序地、随机地)、访问了多少数据等。对给定的存储块的给定数据访问本质上可以被认为是:顺序的,如果其起始偏移量(例如,第一字节读取)紧接在先前对块的访问的结束偏移量(例如,最后一个字节读取)之后;或者是随机的,如果起始偏移量不是紧跟在先前访问的结束偏移量之后。

可以通过应用指数移动平均或指数加权移动平均来平滑一些度量(例如,访问的总频率、随机访问的频率、顺序访问的频率)。例如,可以将移动平均应用于如针对多个常规时间段(例如,1小时、30分钟、1分钟)中的每一个的测量、观察或累计的这些度量的值。

本文使用值t来表示数据块、整个文件、或一些其他数据量的访问的总频率,而值r被用来表示对数据的随机访问的频率。其他值也可以被使用或者替代使用,诸如s用于表示对数据的顺序访问的频率。

基于收集的度量和/或其他信息,效用函数被应用于一个或多个存储的块以产生对应的效用值(操作222)。如下面所讨论的,给定块的效用值将被用于帮助确定块应被存储在哪种类型的混合存储设备上,和/或被存储在哪个特定设备上。给定块的效用值可以按照规则或周期性的时间表被重新计算,任何数量的块的值可以一致地被计算。

在一些实施例中,被应用于块的效用函数包括三个分量,其中之一对应于在一段时间(基于t)期间对块的总访问,并且其中一个对应于在一段时间(基于r)期间对块的随机访问。可以被指定为u的第三分量基于用户、操作员或应用偏好–诸如如果用户/操作员/应用请求或偏好该块(或包括该块的数据的文件)被存储在一种类型的设备(例如,ssd)上,则为1;或对于不同类型的设备(例如,hdd),则为0。u可以是当文件初始存储时表达一次的恒定值,或者可以是动态的,并且可以取决于使用该文件的应用、文件的类型(例如文档、数据文件、绘图、图像)、由用户或操作员直接表示的偏好,或者可以以其他方式确定。

在一些实现中,针对块的每一个时间t和r(和/或u被更新)被计算,块的效用值v被重新计算为在该等式中,总访问和随机访问度量可以通过衰减函数而被归一化,该衰减函数使它们与观察或测量的值成比例(并且如上所述可能已经被平滑)。

在其他实现中,块的效用值的三个分量可以以一些其他方式组合,诸如通过对加权分量。例如,如果确定在ssd上存储随机访问的数据是最重要的,则对应的(r)分量可以被相对较重地加权。相反,如果确定将最常访问的数据存储在ssd上是最重要的,则不管它们的访问在本质上是随机的还是连续的,相应的(7)分量可以被加权得更多。

基于块的效用值v,其可以从一个设备或一种类型的设备迁移或重新分配到另一个设备或另一种类型的设备(操作224)。在一些实施例中,存储在给定类型的设备(诸如ssd或其他相对高性能的设备)上的存储块的目标数目n可以被标识。例如,基于ssd的总存储容量和/或这些设备的总推荐使用(例如,以允许垃圾收集和/或其他设备维持),可以相应地导出n。因此,如果混合数据存储装置系统中ssd的总容量为10tb,并且如果ssd的目标使用水平为70%,则在固态设备上存储的目标数据量为7tb。如果混合数据存储装置方案中的存储块大小为1mb,则n=700万,并且具有最高效用值的多达700万个存储块-“最热”块-可以被作为目标用于高性能设备上的存储装置。

在其他实施例中,存储块的迁移或重新分配可以集中于不同类型的设备,诸如hdd或其他相对高容量(和/或低性能)设备。在这些实施例中,块的目标数量m可以被标识,并且具有最低效用值的m块(“最冷”块)可以被作为目标用于低性能设备上的存储装置。

因此,基于块的效用值以及被作为目标用于特定类型的设备上的存储装置的存储块的数量(或百分比),在操作224中,尚未存储在该类型的设备上的块可以被移动到该类型的设备,如果它们的效用值将它们放置在目标块的集合中。类似地,已经存储在该类型的设备上的不在(或不再是)目标块中(基于它们的效用值)的块可以被移动到不同类型的设备,特别是如果存储空间需要被释放以便接受热块。

当给定的块从一种类型的设备迁移到另一种类型的设备时,其可以被移动到目的地类型的负载最小的设备或移动到以一些其他方式(例如循环、随机)选择的设备,或者块的目的地可以通过下面讨论的负载平衡过程来确定。因此,在不同的实施例中,块的迁移/重新分配可以逐块地发生(例如,当它们被标识时移动多个块中的每一个)或者移动到特定类型的设备或从来自特定类型的设备的块可以首先被标识,并且然后在确定如何以智能方式分配(或负载平衡)所标识的块之后被移动。

迁移/重新分配过程可以可能结合一些或所有块的效用值的重新计算而被周期性地(例如,每小时、每半小时)执行。并非所有块的效用值需要同时被重新计算,并且同样地,迁移/重新分配过程不需要(但可以)同时被应用于所有块。

与迁移/重新分配过程分离地或作为迁移/重新分配过程的一部分,在特定类型的设备上的负载(例如,所存储的块的数目、所存储的数据的量、和/或针对所存储的块预期的访问的频率和/或类型)可以被平衡(操作226)。在图2所描绘的方法中,负载平衡被描述为其可以分离地执行,但是本领域的普通技术人员将理解在块的迁移或重新分配期间如何执行负载平衡。针对多种类型的混合设备中的每一种,该操作可以被重复。

负载平衡的目标是尝试平衡特定类型的每个设备上的负载。对于在一些数目的操作(例如,ssd)之后易于故障的类型的设备,负载平衡可以至少部分地基于其剩余寿命。对于这种类型的设备,剩余寿命可以在外部(例如通过透明混合数据存储装置控制器)和/或在内部(例如由设备本身)被跟踪。

如果所有特定类型的设备具有基本类似的剩余寿命,则被指定用于在该类型上的存储装置的n个块可以通过将块的数目n除以该类型的设备d的数目以产生每个设备的负载l(l=n/d)来均等地或大致均等地在它们之间被划分。

否则,基于给定设备的预期剩余寿命,与相同类型的其他设备相比,其可以被分配更多或更少的块。因此,如果一个设备具有比特定类型的所有设备的平均估计剩余寿命长大约10%的估计剩余寿命,则其可以被分配比其他设备多大约10%的块。例如,在上面计算设备的相等负载l(l=n/d)之后,指派给较长寿命设备的实际负载可以通过增加与其额外寿命相对应的l的附加百分比(例如对于具有10%更长寿命的设备为l+0.1l)而被确定。

然后被分配给较长寿命设备的总额外负载可以被用于减少分配给较短寿命设备的相等负载l。示意性地,总额外负载可以在寿命较短的设备之间被平均划分,或者被指派给较长寿命设备的总额外负载可以基于其剩余寿命在其他设备之间分配,其中指派给具有最短寿命设备的负载减少最多。

在用于特定类型的设备的另一个示意性的负载平衡过程中,该类型的设备被指派反映它们当前存储比该类型的n个块的均等分布(例如,对于d个设备,l=n/d)要求更多还是更少的块。例如,存储多于l个块的那种类型的设备可以被指派指示它们过载的第一状态。存储少于l个块的设备可能会被指派指示它们被欠载的第二状态。如果有必要区分它们,那么当前存储相同份额l的设备可以被指派第三或中性状态。然后,块从过载设备将被重新分配或迁移到欠载设备。

如本领域普通技术人员将认识到的,在不同的实施例中,可以以不同的精确度来实现平衡分配给该类型的所有设备中的一种类型的设备的总负载。例如,要指派给设备的块的数目和/或由不同块表示的总工作负载(例如,期望的数量和/或输入/输出操作的类型)中的任一个或两者可以被用于确保设备承受(“incur”)基本相似的负载(例如,通过存储大致相等数量的块和/或将经历大致相等的数量/类型的操作)。正如已经讨论过的,也可以考虑允许一些设备的预期寿命。

在操作226之后,图2的方法可以结束或者可以返回到之前的操作。

图3是根据一些实施例的透明混合数据存储装置方案内的存储设备之间的数据分配和迁移的图示。在这些实施例中,存储装置方案利用一个或多个基于闪存的存储设备(例如ssd)和一个或多个磁盘驱动器(例如hdd)。

在这些实施例中,用户偏好302包括关于在数据存储装置方案内的混合设备之间的一个或多个用户文件(或一个或多个文件的块)的存储装置的偏好。用户、操作员或与文件相关联的应用可以针对不同文件或不同类型的文件来表达个体偏好,或者默认偏好可以针对所有文件、特定类型的文件、特定大小的文件、或具有一些其他共同特征的文件来建立。用户偏好302被效用函数310消耗,并且可以是离散值的形式,例如对于基于闪存的存储装置为1,对于在磁驱动器上的存储装置为0。如果对特定文件或块没有特定的偏好,则可以采用预定值(例如0.5)作为用户偏好。

i/o(输入/输出)监视器304监视对存储在混合设备上的数据的访问。示意性地,对于设备上存储的多个(例如,全部)块中的每一个,i/o监视器跟踪访问的总数目、一种或多种类型或特性(例如,随机的、顺序的)的访问的数目、和/或其他度量。度量可以针对经常的、循环的时间段(例如30分钟、1小时)、或者更长的时间段(例如,多个小时、一天)而被累积,并且在需要时被提供给效用函数310和迁移引擎320。在将这些度量提供给这些实体之前和/或之后,可以调整度量(例如,使时间序列中的值平滑,以丢弃异常值或离群值)。

效用函数310使用由i/o监视器304提供的度量、用户偏好302和/或其他信息来计算存储在混合存储设备上的一些或所有数据块的效用值。在一些实现中,块的效用值的计算涉及将由i/o监视器304提供的度量与该块(或者包括该块的文件)的用户偏好值相加。如已经指出的那样,由i/o监视器提供的访问度量可以被使用(例如,作为表示最近时间段期间的访问的频率或数量的值)、可以是近期值的平均(例如,移动平均值)、可以被归一化或标准化(例如,通过应用衰减函数或概率密度函数)、或者可以以其它方式被调整。

闪存监视器312监视基于闪存的存储设备(例如,ssd)的估计的剩余寿命。该信息可以由设备本身(例如,通过询问它们)来提供和/或可以基于对基于闪存的存储设备的观察到的访问由监视器312来计算。估计的剩余寿命被提供给迁移引擎320,并且可以被用于辅助平衡这些设备上的负载、迁移设备之间的块、和/或用于其它目的。闪存监视器312还可以监视基于闪存的存储设备的可用存储容量(例如,可以在其上存储多少块)、当前存储在每个设备上的数据量和/或块的数目、由设备经历的(和/或预测要经历的)访问的数量/类型、和/或其他状态。

在所图示的实施例中,迁移引擎320包括块标识模块322、块分配模块324、和块迁移模块326,并且被周期性地调用以根据需要或期望来重新分配存储块。迁移引擎320或在图3中没有具体描绘的某个其他部件还分配接收到的用于在混合设备上存储装置的新文件,这涉及将为大于一个块的任何文件分区为块,并且在这些设备之间分发文件块。

在一些实施例中,块标识模块322标识已经存储在混合存储装置方案内的块之中的热块。热块是应该被存储在基于闪存的存储设备上的、以便于利用由这些设备提供的性能的那些块。热块的标识可以基于由效用函数310提供的块效用值以及如由闪速监控器312报告的对基于闪存的设备的使用(或访问)。在其它实施例中,块标识模块标识冷块-应该被存储在磁盘驱动器上的块(例如,因为它们的大小,因为它们的访问频率和/或类型)。

由模块322识别的块的最大数目可取决于基于闪存的设备的容量、设备的可接受或目标使用水平、混合数据存储装置方案中块的固定大小(例如,1mb)、和/或其他因素。然而,通常,选择块的阈值数量n,其可以表示可以在基于闪存的设备上存储的块的最大数目,或者在一些实施例中,小于基于闪存的设备可以容纳的块的最大数目的某个数目。

然后模块322将高达n个特定块标识为最热-例如具有最高效用值的块。出于讨论的目的,将假定块标识模块标识n个热块,尽管选择用于迁移或可能的迁移的实际数目可能小于n。

块分配模块324操作以向每个基于闪存的设备分配由块标识模块322标识的n个块的合适份额。设备的份额可以取决于其当前使用水平,这意味着更全面的设备可以接收少于n个块。分配模块还可以力求基于其估计的剩余寿命来平衡闪存设备的i/o负载(例如,对闪存设备的访问的预期数目和/或类型),并且还可以尝试最小化必须从一种类型的设备(例如,磁性硬盘驱动器)转移到另一种类型的设备(例如,基于闪存的设备),或者从一个基于闪存的设备转移到另一个基于闪存的设备的块的数目。

在示意性块分配过程中,n个块通过它们的效用值被排序,使得最热块位于列表(或队列或其他结构)的一端,并且最冷的热块位于另一端。类似地,基于闪存的设备可以基于其当前负载或者它们可以接收的附加块的数目或者附加负载来进行排序。给定设备在设备列表中的位置可取决于当前存储在设备上的块的总数、存储在设备上的块的总效用值、在一段时间内对设备的存储块的访问的频率(例如设备所经历的i/o负载)、对设备块的特定类型的访问(例如,随机)的频率、和/或其它因素。

从具有最低电流负载的基于闪存的设备开始,可以从热块列表的开头将块分配给设备,直到设备具有其成比例的负载份额(例如,n块中的)。如果在列表头部处分配块会增加设备的负载超过其成比例的份额,则一个或多个块相反可以从列表尾部被分配。

在一些实施例中,为了避免块的过度迁移,在n个最热块之中但是已经存储在基于闪存的设备上的一些或全部块可能不在设备之间移动,除非可能的话,一个或多个设备明显过载或欠载。在迁移过程中,不在n个最热块之中的块可以从基于闪存的设备移动到磁性硬盘驱动器以便于容纳热块。在一些实现中,为了避免颠簸(thrashing),在给定块从一种类型的设备移动到另一种类型之前,它可能必须(例如通过块标识322)对这种移动指定阈值次数(例如,多于一次)。

在通过块分配模块324将块分配给混合设备之后,块迁移模块326执行块的实际移动。这种移动可以在低或相对低输入/输出操作期间被执行,可以安排特定时间(预期的低活动性),或者可以当对混合存储装置方案的需求相对较低时被适时地执行。

图4描绘了根据一些实施例的用于操作透明混合数据存储装置方案的装置。

图4的装置400包括处理器402、存储器404和存储装置406,其可以包括任何数量的固态、磁、光学、和/或其他类型的存储部件或设备。存储装置406可以在本地或远离装置。装置400可以(永久地或暂时地)耦合到键盘412、指向设备414和显示器416。

存储装置406使用在装置400上执行但在图4中未示出的任何数量的应用来存储由装置400的一个或多个用户/操作者创建和/或操纵的数据422。数据422主要包括用户/应用级文件的块。因为数据是以文件或块级别存储的,所以不需要改变由存储装置406或由个体存储部件实现的一个或多个文件系统。这与一些专有存储解决方案形成了对比,在这些专有解决方案中,存储设备使用专有方法将数据打包到存储卷中,并取代或替换计算平台的正常文件系统。

存储装置406还存储由装置400使用以实现透明混合数据存储装置方案,以高效地将数据422的元素(例如,块)存储在存储装置406的各种部件上的元数据。元数据424可包括关于对数据元素422访问的频率、特定类型访问(例如,随机访问)的频率、关于在何处存储文件或文件的元素的用户/操作员/应用偏好、易受磨损的存储部件的剩余寿命、存储部件的可用容量、存储部件上的当前负载、和/或其他信息。

存储装置406还存储可以被加载到存储器404中用于由处理器402执行的逻辑和/或逻辑模块,包括一个或多个监视逻辑模块426、效用函数逻辑428、和存储引擎逻辑430。在其他实施例中,这些逻辑模块中的任何一个或全部可以根据需要或适当地被聚合或划分以组合或分离功能。

监视逻辑426包括用于监视对数据元素422的访问的处理器可执行指令,并且可以产生或维持一些元数据424。监视逻辑426的不同实例或版本可以监视关于数据422的不同活动或不同类型的活动,和/或可以监视不同类型的设备或不同的特定设备。例如,i/o监视逻辑模块可以监视涉及数据422的一些或全部元素的输入/输出操作,而闪存监视模块可以监视固态存储设备的剩余寿命和/或其他状态(例如,剩余容量、推荐使用水平)。逻辑426可以包括图3的闪存监视器312和i/o监视器304的全部或一部分。

效用函数逻辑428包括用于执行效用函数的处理器可执行指令,效用函数计算用于数据422的一些或全部元素的效用值。逻辑428可以使用元数据424和/或在计算中的其它信息。逻辑428可以包括图3的全部或部分效用函数310。

存储引擎逻辑430包括用于管理透明混合数据存储装置方案的操作的处理器可执行指令。因此,逻辑430可将新文件的元素分配给混合存储部件,接收(并存储在元数据424中)关于在何处存储所选数据的用户偏好,接收由效用函数逻辑428输出的效用值,取回/更新/维持元数据424,在存储装置406的混合存储部件之间迁移数据422的元素,平衡一种或多种类型的混合存储部件上的负载,从存储装置406中取回所请求的数据422,和/或执行其他动作。

然而,在一些实现中,一个或多个其他逻辑模块处理新文件的分区和存储,以及用于存储文件的用户/操作员/应用偏好的接收/存储,而在文件被存储之后存储引擎430被引导到数据的迁移。存储引擎逻辑430可以包括图3的全部或部分迁移引擎320。

在一些实施例中,图1的系统110的混合存储装置控制器116包括监视逻辑426、效用函数428和存储引擎430中的全部或大部分。

在一些特定实施例中,存储装置406包括多个基于闪存的存储部件/设备和一个或多个磁存储部件/设备,并且单个文件的元素可以被存储在给定类型的不同设备上和/或不同类型的设备上。因此,根据对这些元素的访问的频率和/或类型,给定文件的一些(但不是全部)元素可能在设备之间迁移。用户/操作员/应用偏好也可能影响文件的某些或全部元素的存储位置。

其中执行上述一个或多个实施例的环境可以集成数据中心、通用计算机或诸如手持式计算机或通信设备的专用设备。为了清楚起见,可以省略这些设备(例如,处理器、存储器、数据存储装置、显示器)的一些细节。诸如一个或多个任务或功能归属于的处理器或存储器的部件可以是临时配置为执行指定的任务或功能的通用部件,或者可以是被制造为执行任务或功能的专用部件。本文使用的术语“处理器”是指被配置为处理数据和/或计算机程序代码的一个或多个电子电路、设备、芯片、处理核心和/或其它部件。

在该具体实施例中描述的数据结构和程序代码通常被存储在非暂态计算机可读存储介质上,该非暂态计算机可读存储介质可以是能够存储由计算机系统使用的代码和/或数据的任何设备或介质。非暂态计算机可读存储介质包括但不限于易失性存储器;非易失性存储器;电、磁和光存储设备,诸如磁盘驱动器、磁带、cd(光盘)和dvd(数字通用光盘或数字视频光盘)、固态驱动器和/或现在已知的或以后开发的其他非暂态计算机可读介质。

具体实施例中描述的方法和过程可以体现为可以存储在如上所述的非暂态计算机可读存储介质中的代码和/或数据。当处理器或计算机系统读取和执行代码并操纵存储在介质上的数据时,处理器或计算机系统执行体现为代码和数据结构并存储在介质内的方法和过程。

此外,这些方法和过程可以被编程到硬件模块中,诸如但不限于专用集成电路(asic)芯片、现场可编程门阵列(fpga)和现在已知的或以后开发的其他可编程逻辑设备。当这样的硬件模块被激活时,它执行包括在模块内的方法和处理。

前述实施例仅出于说明和描述的目的而呈现。它们不旨在是穷尽的或者将本公开限制为所公开的形式。因此,对于本领域技术人员而言,许多修改和变化将是显而易见的。范围由所附权利要求限定,而不是由前面的公开内容限定。

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