用于无缝数据迁移的数据布局方案的制作方法

文档序号:14394517阅读:198来源:国知局

本公开涉及将对象存储在存储系统中。特别地,本公开涉及将数据从一个存储位置迁移到另一个存储位置。



背景技术:

存储系统根据各种对应的存储体系架构来存储对象。存储体系架构的示例包括对象存储、文件系统、块存储和/或数据库。

存储系统内的每个对象与数据和元数据相关联。数据(本文也称为“对象数据”)包括例如由最终用户和/或客户端应用使用的信息。作为示例,销售应用的数据可能包括关于客户、产品和销售的信息。作为另一个示例,人力资源应用的数据可能包括关于员工、部门和工资的信息。元数据描述数据如何被建立和/或存储。附加地或替代地,元数据描述关于数据本身的特性。元数据可以用于操纵和/或管理存储系统中的对象。

在云计算环境中,数据迁移可能由于各种原因而发生。例如,基于策略的分层可能触发迁移以匹配云服务订户的成本期望和服务质量(qos)期望。如果云用户使服务升级或降级,那么数据可能会从一个存储层移动到另一个存储层,以满足存储需求和容量需求。其它策略可能将数据从主存储层迁移到归档层,以降低旧的和较不频繁访问的数据的存储开销。

地理复制策略和地理位置策略是自动数据迁移规则的另一个示例。地理复制策略和地理位置策略基于云服务订户的位置触发数据迁移。如果云用户移动或扩展到不同的地理位置,那么数据可以从一个地理位置移动到另一个地理位置。将数据迁移到地理上更靠近用户可以降低访问时间、提高网络性能并降低存储成本。

在其它示例中,数据可能由于更新的存储基础设施而迁移。新的存储产品可能会降低成本、提高性能、并且使旧的存储技术过时。云管理员可以将客户数据从较旧的存储技术迁移到较新的存储技术,以提高提供给订户的云服务产品的性能。

数据迁移在云环境内带来了几个挑战。一个挑战是,客户通常期望在单个全局命名空间下对数据不间断的访问。提供全局命名空间的一种方法是在存储系统的元数据层内维护对象名称和物理存储位置之间的映射。如果数据层内的数据从一个物理存储位置迁移到另一个物理存储位置,那么存储系统在元数据层中更新每个迁移的数据对象的物理存储位置。因此,同一对象名称被映射到新的存储位置,从而在数据迁移之前和迁移之后维护相同的命名空间。但是,每当数据迁移发生时就更新元数据层中的位置指针会在迁移涉及大量数据时对元数据层产生大量负荷。因此,需要访问元数据层的请求可能在大数据迁移正在进行时遭受严重的性能下降。

数据迁移的另一个挑战是数据的物理布局可能跨不同的存储层不一致。例如,频繁访问的数据可能存储在硬盘上,而较旧的数据可能被迁移到带子。不同的存储格式增加了在迁移数据时访问数据的服务请求的复杂性。此外,不同的存储格式可能在迁移期间增加元数据层上的负荷,因为存储在元数据层内的位置指针被更新为新的存储格式。

本节中描述的方法是可以追求的方法,但不一定是先前已经构想或追求的方法。因此,除非另有说明,否则不应当假定本节中描述的任何方法仅仅因为它们被纳入本节中就符合作为现有技术。

附图说明

在附图的各个图中,实施例是作为示例而不是作为限制进行图示的。应当注意的是,本公开中对“一个”实施例的引用不一定是指相同的实施例,并且它们意味着至少一个。在附图中:

图1图示了根据一个或多个实施例的示例存储系统;

图2a图示了根据一个或多个实施例的示例卷方案;

图2b图示了根据一个或多个实施例的卷内的布局表示的示例集合;

图3a图示了根据一个或多个实施例的用于迁移数据的操作的示例集合;

图3b图示了在不同存储部件之间的数据迁移期间对卷数据的更新的示例集合;

图4图示了根据一个或多个实施例的用于处理客户端请求的操作的示例集合;

图5示出可以在其上实现一个或多个实施例的示例性计算机系统。

具体实施方式

在以下描述中,为了说明的目的,阐述了许多具体细节以便提供透彻的理解。可以在没有这些具体细节的情况下实践一个或多个实施例。在一个实施例中描述的特征可以与在不同的实施例中描述的特征组合。在一些示例中,众所周知的结构和设备参考框图形式描述,以避免不必要地模糊本发明。

1.一般概述

2.存储系统体系架构

3.用于存储和迁移的数据布局方案

4.硬件概述

5.杂项;扩展

1.一般概述

数据迁移可能通过存储系统导致显著降低性能的纹理效应。例如,如果数据对象集合从一个存储位置迁移到另一个存储位置,那么当数据从源存储部件中提取并加载到目的地存储部件中时,这些存储部件中的每一个可能遭受显著的负荷增加。性能下降也可能扩展到存储用于被迁移的对象数据的位置信息的元数据服务器。如果元数据服务器(mds)存储直接映射到存储部件的位置指针,那么每个对象的位置指针也被更新。在大规模迁移的情况下,这可能导致在mds内更新数百万个或更多的位置指针。

根据本文描述的技术,可以在对mds的影响最小的情况下执行大规模迁移。在一个或多个实施例中,逻辑对象指针被维护在存储系统的元数据层内。在这个上下文中的逻辑对象指针指向对象的逻辑存储位置,而不是物理存储位置。在数据对象从源存储部件迁移到目的地存储部件的情况下,逻辑对象指针可以保持不变。在迁移之前,逻辑存储位置被映射到源存储部件中的物理存储位置。在迁移期间,逻辑对象指针可以被映射到源存储部件中的物理存储位置和目的地存储部件中的物理存储位置。在迁移完成后,逻辑对象指针被映射到目的地存储部件中的物理存储位置。因此,可以在对元数据层内存储的逻辑指针进行最少更新或不更新的情况下实现迁移。

本文描述的技术还提供对从源数据存储部件迁移到目的地存储部件的数据的不间断访问。例如,当迁移正在进行时,存储系统可以接收访问数据对象的请求。如果该请求是执行写入操作,那么存储系统在目的地存储部件上执行写入请求,而不在源存储部件上执行写入请求。因此,可以避免与更新过时存储位置相关联的开销。如果该请求是执行读取操作,那么存储系统可以选择源存储部件和/或目的地存储部件来执行读取请求。

为了选择存储部件来执行读请求,存储系统可以考虑各种因素。例如,存储系统可以基于与源存储部件和/或目的地存储部件相关联的一个或多个属性来选择存储部件。示例属性可以包括但不限于存储介质类型、输入/输出(i/o)速度、位置、事务负荷和/或其它性能特性。可以使用存储系统属性来优化读请求的执行时间,同时使数据层内的负荷最小化。

2.存储系统体系架构

图1图示了根据一个或多个实施例的示例性存储系统100。如图1所示,系统100包括前端层110、数据层120和元数据层130。在一个或多个实施例中,存储系统100可以包括比图1所示的部件更多或更少的部件。图1所示的部件可以是本地的或彼此远离的。图1所示的部件可以用软件和/或硬件实现。每个部件可以分布在多个应用和/或机器上。多个部件可以被组合成一个应用和/或机器。相对于一个部件描述的操作可以改为由另一个部件执行。

在一个或多个实施例中,使用一个或多个数据储存库来实现数据层120和/或元数据层130。数据存储库是用于存储数据的任何类型的存储单元和/或设备(例如,文件系统、数据库、表的集合、盘、带盒或任何其它存储机制)。此外,数据存储库可以包括多个不同的存储单元和/或设备。多个不同的存储单元和/或设备可以是相同类型的或位于相同的物理站点或不是相同类型的或位于相同的物理站点。此外,数据存储库可以在与前端层110相同的计算系统上实现或执行。替代地或附加地,数据存储库可以在与前端层110分离的计算系统上实现或执行。数据存储库可以经由直接连接或经由网络通信地耦合到前端层110。不同层可以使用一种或多种网络通信协议(诸如与互联网协议(ip)套件相关联的通信协议)将消息和数据传送到其它层。附加地或替代地,不同层可以使用一种或多种通信协议传送数据,用于在相同主机机器上执行的部件之间传递消息,诸如发出功能调用、发出中断以及在队列中发布工作请求。

在一个或多个实施例中,数据层120包括被配置为存储与存储系统的对象相关联的对象数据的硬件和/或软件。如图所示,数据层120包括一个或多个存储池(诸如存储池122a-j)。在这种上下文中的存储池表示被分组在一起的存储部件的集合。分组可以基于公共属性来执行,诸如存储介质类型、地理位置或任何其它属性或属性组合。例如,存储池可以对应于硬盘驱动器(hdd)存储服务器、计算服务器、擦除编码存储装置、带库等的聚合。

在一个或多个实施例中,数据层120被细分为不同的存储层或类。示例存储层/类可以包括但不限于:

(a)复制层,包括在两个或更多个存储设备上复制数据的一个或多个存储池;

(b)盘层,包括由hdd存储服务器和/或其它物理盘存储部件组成的一个或多个存储池;

(c)擦除编码层,包括存储擦除编码的数据对象的一个或多个存储池;和/或

(d)存档层,包括用于归档旧的和/或不频繁访问的数据的一个或多个存储池。

如图所示,存储池122a-j每个存储对象记录的集合(诸如对象记录124、对象记录126和对象记录128)。对象记录存储对象数据,诸如二进制大对象(blob)、二进制文件对象(bfile)、可执行二进制文件和/或以任何其它格式存储的用户数据。此外,每个对象记录可以存储对象元数据,诸如对象名称、版本号等。对象记录内的对象元数据与在元数据层130中维护的对象元数据分开存储。

存储在一个存储池中的对象也可以跨不同的存储池进行复制和/或迁移。例如,如图所示,对象记录126驻留在存储池122a和存储池122j两者中。取决于特定的实现方式,对象记录126的物理存储格式可以在存储池122a和存储池122j内是不同的或相同的。例如,如果存储池122a是hdd服务器,那么对象记录126可以被存储在hdd块中。如果存储池122j是擦除编码的服务器,那么对象记录126可以以擦除编码的格式存储。作为另一个示例,如果存储池122j是带库,那么对象记录126可以被格式化以存储在带盒上。

在一个或多个实施例中,元数据层130是指被配置为存储与存储系统的对象相关联的元数据的硬件和/或软件。如图所示,元数据层130包括一个或多个元数据记录(诸如元数据记录132a-k)。元数据记录132a-k存储用于存储在数据层120内的对应数据对象的对象元数据。对象元数据包括对象名称(诸如对象名称134a-k)、版本信息(诸如版本信息136a-k)、逻辑对象指针(诸如逻辑对象指针138a-k)和状态信息(诸如状态信息140a-k)。

对象名称134a-k可以是任何值,诸如作为标签或标识符分配给对象的字母数字字符序列。取决于特定实现方式,对象名称134a-k可以由用户、存储客户端或存储系统100选择。具有特定对象名称的对象可以与一个或多个版本相关联。对象的一个或多个版本可以存储在单个存储池内和/或跨数据层120内的不同存储池进行复制。

版本信息136a跟踪存储在存储系统100内的对象的不同版本。在一个或多个实施例中,元数据记录132a-k包括与对象的特定版本的对象数据对应的元数据。每次创建新对象时,都会生成用于存储对象的元数据的新的元数据记录。每次改变对象的对象数据时,可以更新元数据记录和/或可以生成用于存储与对象的新对象数据相关联的元数据的新的特定于版本的元数据记录。

每次改变与对象的特定版本的对象数据对应的元数据时,用新的元数据覆盖(overwritten)用于该特定版本的对象数据的现有元数据记录。元数据可能由于用户请求和/或系统请求而改变。可以经由用户界面和/或应用编程接口(api)从用户接收用户请求。可以从应用和/或进程接收系统请求。作为示例,与对象相关联的元数据可以包括指示对象的事务事件记录是否已经被发布的标志。在发布特定事务事件记录之后,发布者可以请求与该特定事务事件记录相关联的标志被标记。来自发布者的请求是修改对象的元数据的系统请求的示例。

在一个或多个实施例中,元数据记录132a-k每个包括相应的逻辑对象指针(逻辑对象指针138a-k)。逻辑对象指针在这种上下文中识别数据层120内的其中存储对应的对象记录的逻辑存储位置。例如,逻辑对象指针138a识别对象记录124的逻辑存储位置,并且逻辑对象指针138k指向对象记录126。

在一个或多个实施例中,逻辑对象指针指向单个逻辑存储位置。逻辑存储位置可以被映射到一个或多个物理存储位置。例如,逻辑对象指针138k可以指向数据层120内的其中存储对象记录126的单个逻辑存储位置。由于正在进行的迁移或复制,对象记录126可以存储在从存储池122a和122j分配的多个物理存储位置中。对象记录126的逻辑存储位置可以被映射到在数据层120内的其中存储对象记录126的每个物理存储位置。

在迁移事件或复制事件的情况下,根据一个或多个实施例,对象记录的逻辑存储位置不改变。通过维护相同的逻辑存储位置,逻辑对象指针138a-k在迁移之前和迁移之后仍然是有效的,而没有任何更新。因此,可以极大降低元数据层130上的处理负荷。

在一个或多个实施例中,元数据记录132a-k中的每一个维护关于对应的对象和/或对象的版本的状态信息。例如,状态信息140a可以跟踪对象记录124是否是对象的活动/提交版本、是否等待更新、是否被标记为删除等。类似地,状态信息140k可以跟踪对象记录126的状态。响应于修改对象数据的写入操作和/或其它操作,事务服务112可以更新状态信息140a。如前所述,数据迁移和复制可以在对元数据记录132a-k最少或没有更新的情况下执行。因此,大规模迁移对从元数据层130读取数据和向元数据层130写入数据的事务操作(诸如创建新的元数据记录和覆盖现有元数据记录)几乎没有影响。

在一个或多个实施例中,前端层110可通信地耦合或以其它方式配置为接收来自客户端102a-i的请求。客户端102a-i表示存储系统100为其存储数据的进程、应用或其它用户。例如,客户端102a-i可以包括但不限于数据库服务器、应用服务器、中间件应用或一些其它资源的一个或多个实例。在云环境的上下文中,客户端102a-i可以与数据库即服务(dbaas)、软件即服务(saas)、平台即服务(paas)、云租户/用户或任何其它云资源对应。客户端102a-i可以驻留在本地或远离存储系统100。

在一个或多个实施例中,前端层110包括被配置为暴露用于接收请求的用户接口和/或应用编程接口(api)的硬件和/或软件。api可以符合表征状态转移(representationalstatetransfer,rest)体系架构风格。通过api暴露给客户端102a-i的命令可以包括但不限于:

(a)存储对象的对象数据和/或元数据;

(b)读取对象的对象数据和/或元数据;

(c)删除对象的对象数据和/或元数据;以及

(d)在不同存储位置之间迁移对象的对象数据和/或元数据。

在一个或多个实施例中,前端层110包括事务服务112和迁移服务114。事务服务112包括用于代表客户端102a-i处理事务的逻辑。例如,响应于将对象写入存储系统100的请求,事务服务112可以与数据层120和/或元数据层130交互以协调写事务。事务服务112可以监视写事务以确定是否提交或中止数据层120和/或元数据层130内的改变。

迁移服务114包括用于处理不同存储部件之间的数据迁移的逻辑。在一个或多个实施例中,迁移服务114维护控制客户端数据的迁移的策略的集合。示例政策可以包括但不限于:

(a)由客户端配置的基于数据的年龄驱动移动的容器策略;

(b)由存储提供商配置的基于底层存储技术的年龄驱动数据的移动的系统策略;以及

(c)由系统管理员(诸如云服务提供商)配置的确保与云服务消费者的服务级别协议(sla)被满足的持久性和可用性策略。

在一个或多个实施例中,迁移服务114包括用于从源存储部件提取数据并将数据加载到目的地存储部件的进程集合。提取进程和加载进程可以将来自目的地存储部件的数据映射到源存储部件。如果源存储部件和目的地存储部件具有不同的物理布局,那么迁移服务114可以将源格式与目的地存储部件中的新格式关联。例如,在从盘到带的迁移过程中,迁移服务114可以将硬盘数据块映射到其中块被迁移到的带盒。

在一个或多个实施例中,迁移服务114包括用于在数据层120内迁移数据而不改变元数据层130中的迁移数据对象的位置信息的逻辑。如前所述,逻辑存储位置可以在数据块的迁移之前和之后保持相同。逻辑存储位置被映射到的底层物理存储部件可能被改变。但是,这些改变可以在数据层120内进行,而无需修改元数据层130内的逻辑对象指针和元数据记录。

在一个或多个实施例中,前端层110在一个或多个数字设备上实现。术语“数字设备”通常是指包括处理器的任何硬件设备。数字设备可以指执行应用或虚拟机的物理设备。数字设备的示例包括计算机、平板电脑、膝上型计算机、台式计算机、上网本、服务器、web服务器、网络策略服务器、代理服务器、通用机器、特定于功能的硬件设备、主机、电视、内容接收器、机顶盒、打印机、移动手持设备、智能电话、个人数字助理(“pda”)。

3.用于存储和迁移的数据布局方案

a.卷

在一个或多个实施例中,从存储池分配被称为卷的逻辑存储单元。在这个上下文中,卷表示存储池内的底层容量片段。取决于存储池的总存储容量和每个卷的大小,可以从单个存储池分配多个卷,这可以因实现而异。

在一个或多个实施例中,对象数据被封装在卷中。例如,blob可以作为位流被封装在卷中,其中位流被物理地存储为位或者在经过训练的可执行程序中被捕获。可以通过直接读取物理存储位置或通过执行在存储位置处存储的经过训练的可执行程序来检索封装在卷中的位流或其它对象数据。

在一个或多个实施例中,卷的结构包括数据和元数据两者。图2a图示了根据一个或多个实施例的用于卷200的示例方案。卷200的方案包括卷头202、对象元数据(诸如对象元数据204a-b)和对象数据(诸如对象数据206a-b)。卷200将多个对象的数据装箱(bin-pack)到单个逻辑迁移单元中。取决于分配给卷的存储容量,装箱到单个卷中的对象数量可以因实现而异。

在一个或多个实施例中,存储在卷200内的每个相应对象与唯一标识符相关联。例如,唯一标识符可以是卷标识符和偏移量的组合,其中卷标识符是唯一识别存储系统100内的卷的值(诸如字母数字序列),并且偏移量是识别对象数据在卷位流中的起始的值。

在一个或多个实施例中,偏移量是表示对象数据在空间或时间中的位置的逻辑实体。当偏移量是逻辑构造时,可以在卷中嵌入映射表。例如,映射表可以被存储在卷头202内或卷内的某个其它预定义的位置。对于空间偏移量,嵌入的映射表将逻辑偏移量映射到物理偏移量。为“500”的空间偏移量可以映射到一个物理存储部件中的500兆字节(mb)和另一个存储部件中的一千兆字节(gb)。对于时间偏移量,嵌入的映射表将逻辑偏移量映射到时间码或时间索引。

在一个或多个实施例中,偏移量指示对象记录相对于卷的起始的位置。例如,如果对象记录124以500的偏移量存储在表示为“v5”的卷内,那么偏移量可以指示该对象记录是该卷中的第500个记录,或者对象位于从该卷的起始的500个逻辑存储单元处。可以使用值“v5:500”来唯一地识别存储系统100内的该对象。该唯一标识符可以被分配给元数据记录132a内的逻辑对象指针138a。

分配给对象的版本的唯一标识符可以由存储系统100内的任何层使用以与存储池122a-j接口并且访问对应的对象数据。例如,前端层110可以使用逻辑对象指针138a来读取、写入或以其它方式访问对象记录124。元数据层130也可以使用逻辑对象指针138a与存储池122a接口并且访问对象记录124。

在一个或多个实施例中,如果卷被迁移或复制,那么分配给对象的卷标识符和偏移量不改变。例如,逻辑对象指针138k可以具有值“v1:600”,意味着对象记录126以600的偏移量被存储在具有卷标识符“v1”的卷中。初始地,卷“v1”可以仅存储在存储池122a中。然后,该卷可以被迁移或复制到存储池122j。在迁移期间和迁移之后,逻辑对象指针保持相同的值“v1:600”并且没有改变。逻辑对象指针可以保持不变,因为卷的逻辑结构和格式没有改变。即使卷的逻辑结构保持不变,存储的对象数据的底层物理结构和格式也可以改变。

b.物理布局映射

在数据层120内,可以在不同的存储层、位置和存储技术之间迁移和/或复制卷。当卷从一个存储部件迁移到另一个存储部件时,数据的物理布局可能会改变。例如,将数据从hdd服务器迁移到擦除编码的服务器可能涉及将盘块中的数据变换为擦除编码的格式。作为另一个示例,将数据从hdd服务器迁移到带子可能涉及格式化数据以在带盒上存储。

在一个或多个实施例中,卷与一个或多个布局表示相关联。布局表示在这个上下文中是表示底层物理存储设备的拓扑的数据集合。例如,布局可以包括到盘块、扩展区、带盒、物理存储地址或任何其它特定于介质的存储位置信息的映射。附加地或替代地,布局可以表示用于在请求时重新生成对象数据的逻辑。例如,布局可以是存储的可执行程序,当该可执行程序执行时,生成对象记录。逻辑偏移量因此可以是如前所述生成对象数据的可执行程序或到逻辑至物理映射表中的索引。

图2b图示了根据一个或多个实施例的卷内的布局表示的示例集合。如前所述,卷232与两个单独的布局相关联。布局230a被映射到存储池122a内的扩展区集合,包括其上存储卷232的扩展区212a、扩展区214c和扩展区216b。布局230b被映射到存储池122c内的不同扩展区集合,包括其上也存储该卷的扩展区222a、扩展区224c和扩展区226d。在这个上下文中,“扩展区”是指相邻的物理存储块。如前所述,在其它实施例中,取决于存储介质的底层格式,布局可以被映射到其它形式的物理存储设备,诸如带盒盘块等。

存储池122a和存储池122c包括跨多个区域分布的多个扩展区。在存储池122a内,区域218a包括扩展区212a-d,区域218b包括扩展区214a-d,并且区域218i包括扩展区216a-d。在存储池122c内,区域228a包括扩展区222a-d,区域228b包括扩展区224a-d,并且区域228j包括扩展区226a-d。区域在这个上下文中可以表示存储池内的不同计算区域、存储区域、地理位置或存储设备。如图所示,跨多个区域分布的扩展区的子集可以用于在卷内存储对象数据和元数据。

卷232包括跟踪对卷的更新的版本/代号。例如,每次新的布局被附加到卷时,代号可以被更新。代号可以用于确定卷232的最新版本和防止使用过时的布局。新的布局可能在复制操作和/或迁移操作期间生成并附加到卷。附加地或替代地,新的布局表示也可以在卷更新的情况下生成并附加。例如,在卷修复期间,扩展区可以用同一存储池内的另一个扩展区来替换。响应于更新,卷的代计数被更新。

在一个或多个实施例中,在给定时间点,多个布局可以处于活动状态。例如,布局230a和布局230b两者都可以用于在卷232内存储对象数据。取决于特定的实现方式,诸如读和写的访问请求可以针对任一活动布局或两者。下面更详细地讨论用于处理读请求和写请求的技术。

如前所述,单个逻辑对象指针可以被映射到特定的卷标识符和偏移量。布局表示可以用于确定该偏移量的底层物理存储位置。例如,指向卷232内存储在偏移量800处的对象记录的逻辑对象指针“v232:800”可以映射到布局230a内的第一扩展区和布局230b内的第二扩展区。在其它示例中,布局可以将逻辑对象指针映射到其中存储对应数据对象的带盒、数据块或某个其它物理存储位置。

c.在对元数据层影响最小的情况下的数据迁移

在一个或多个实施例中,卷是迁移的逻辑单元。当卷被迁移时,卷内的所有数据对象都从一个物理存储部件移动到另一个物理存储部件。例如,如果卷200从hdd服务器迁移到归档存储层,那么迁移服务114可以从hdd服务器提取对象元数据204a-b和对象数据206a-206b。迁移服务114然后将对象元数据和数据加载到存储层内的一个或多个存储部件上。

在一个或多个实施例中,卷的逻辑格式和结构在迁移期间不改变。通过维持相同的格式和结构,元数据层130内的逻辑对象指针可以在不更新的情况下得以维持。例如,唯一标识符“v1:500”可以被分配为用于特定数据对象的逻辑对象指针。如果卷“v1”被迁移,那么可以使用相同的逻辑对象指针来访问新存储位置处的数据对象。

图3a图示了根据一个或多个实施例的用于迁移数据的操作的示例集合。迁移处理从存储系统100接收到迁移卷中的数据的请求开始(操作302)。该请求可能源自其中一个客户端102a-i。可替代地,该请求可以由存储系统100内的部件基于如前所述的诸如容器策略、系统策略或持久性策略的迁移策略来触发。例如,包含比某个年龄更老的数据的卷可以在数据的年龄达到阈值之后自动迁移到归档层。

响应于接收到迁移数据的请求,迁移服务114将卷状态更新为正在迁移(migrating)(操作304)。卷的状态可以维持在卷头(诸如卷头202)内,或卷内的某个其它位置。状态更新向事务服务112提供迁移正在进行的信号。事务服务112可以对正在被迁移的卷不同地处理读取和写入操作,如下面部分中更详细描述的。

作为迁移处理的一部分,迁移服务114确定目的地布局表示(操作306)。在这个上下文中,目的地布局表示是数据正在被迁移到的存储部件的物理拓扑的表示。可以基于目的地存储部件的存储介质的类型、正在被迁移的数据量和/或一旦被迁移后的数据的物理格式来生成目的地布局表示。例如,在将数据迁移到归档层的上下文中,目的地布局可以识别已经被选择归档数据的存储介质(诸如带库、光驱、通用串行总线(usb)条和其它可移动介质)。在其它示例中,目的地布局可以识别扩展区、盘块、物理地址、或其中存储卷的其它物理存储位置。

在确定目的地布局表示之后,迁移服务114将目的地布局表示添加到卷(操作308)。例如,如果卷232正在从存储池122a迁移到存储池122j,那么布局230b可以被映射到卷232或以其它方式与卷232相关联。

一旦添加了目的地布局表示,迁移服务114就更新卷中的代计数(操作310)。如前所述,代计数跟踪卷的版本。在迁移之前存在的卷的版本在存储系统100中变得过时。因此,读取操作和写入操作被定向到该卷的新版本。

然后,迁移服务114将卷内的数据从源存储部件迁移到目的地存储部件(操作312)。迁移可以包括从源存储部件提取对象数据、格式化数据用于在目的地存储部件上存储、将数据加载到目的地存储部件中和/或验证数据被成功地存储在目的地存储部件上。

在迁移完成之后,迁移服务114从卷中去除源布局表示(操作314)。例如,在将卷232从布局230a迁移到布局230b完成之后,迁移服务114可以从卷232中去除230a。

在去除源目的地布局表示后,迁移服务114还把卷从正在迁移(migrating)状态更新为活动(active)状态(操作316)。

然后,迁移服务114再次更新代计数(操作318)。一旦被更新,包含源存储布局的版本就无效,并且不再用于处理请求。

图3b图示了在不同存储部件之间的数据迁移期间对卷数据的更新的示例集合。对象表320包括用于指向单个卷(v1)的数百万个对象的对象元数据。每个对象与包括卷标识符(v1)和偏移量(100,600,4500)的组合的逻辑位置指针(blobid)相关联。

在数据迁移期间,卷表被更新多次。卷表是数据结构,其包括(a)定义数据的物理位置的布局列表,(b)每次布局列表被更新时递增的代号,以及(c)卷的状态。

卷表322图示了在数据迁移开始之前的卷表。在这个时间点处,卷表322具有被映射到布局“l1”的代计数“1”,并且是活动的(active)。响应于将卷v1从hdd服务器迁移到带子的请求,可以生成布局“l2”并将其添加到卷表。

卷表324描绘了在迁移开始之后的卷表322的更新版本。代计数被更新为“2”,并且布局“l2”被添加到该表中。表的状态也被更新为正在迁移(migrating)。

卷表326描绘了在迁移完成之后的卷表324的更新版本。如图所示,代计数被更新为“3”,并且布局“l1”已被去除。表的状态被更新为活动的(active)。

布局表328基于底层存储硬件来定义卷的物理表示。布局表328定义介质的类型以及数据如何进行布局。布局表328还定义数据的布置,包括数据所位于的底层硬件的地址。布局表328中的布局“l1”表示具有hdd介质的三路复制存储服务器集合。ss1:e1是对第一存储服务器的引用,表示“ss1”和第一扩展区“e1”。类似地,ss2:e4是对第二存储服务器上的第四扩展区的引用,并且ss5:e9是对第五存储服务器上的第九扩展区的引用。布局“l2”表示带介质。tl1:c1映射到表示为“tl1”的带库和表示为“c1”的第一带盒。tl2:c10引用第二带库中的第十个带盒。

如图3b所示,卷表在迁移期间被改变以更新布局表示。但是,迁移处理不更新对象表。对象表内的指针保持不变。同一逻辑对象指针在迁移之前指向“l1”,在迁移期间指向“l1”和“l2”两者,并且在迁移之后指向“l2”。

在一个或多个实施例中,布局在卷内基于新近度排序。例如,布局在卷表内可能是排序的,其中最近的布局在最上面。例如,参考卷表324,l2被布置在l1前面。如下面进一步详细描述的,卷表内布局的顺序可以用于确定如何执行读取操作和写入操作。

d.数据迁移期间的事务处理

在一个或多个实施例中,存储系统100在迁移期间提供对数据的不间断访问。例如,如果卷正在从源存储部件迁移到目的地存储部件,那么客户端102a-i可以继续向卷写入对象/从卷读取对象。

在一个或多个实施例中,在迁移期间对目的地部件执行写入操作。例如,如果在图3b所绘出的迁移处理期间接收到写入操作,那么将对象写入到由布局“l2”表示的目的地带库。该对象不写入到由布局“l1”表示的源hdd服务器。

在迁移期间,读取操作可以被定向到源存储部件、目的地存储部件或两者。在一个或多个实施例中,在卷内的布局表示上顺序地尝试读取。例如,相对于卷表324,可以首先在由布局“l2”表示的物理存储部件上尝试读取操作。如果数据还没有被迁移到目的地物理存储部件,或者读取以其它方式不成功,那么读取操作可以在由布局“l1”表示的源存储部件上执行。

在一个或多个实施例中,事务服务112包括用于基于选择标准的集合在源存储部件和目的地存储部件之间进行选择的逻辑。选择标准可以考虑源存储部件和/或目的地存储部件的存储属性。可以被作为因素考虑到选择逻辑中的示例存储部件属性可以包括但不限于:

(a)源存储部件和/或目的地存储部件的存储介质的类型:例如,如果源存储介质类型具有比目的地存储部件更快的访问时间,那么事务服务可以选择源存储部件用于读取读操作。另一方面,如果读取操作可以在目的地存储类型上更快地执行,那么事务服务可以首先在在目的地存储部件上尝试读取操作。

(b)源存储部件和/或目的地存储部件的输入/输出(i/o)速度:可以监视在源存储部件和目的地存储部件两者上的i/o速度。事务服务可以在具有最快i/o速度的存储部件上执行读取操作。

(c)源存储部件/目的地存储部件的所在地:事务服务112可以选择最接近请求读取操作的客户端的存储部件。

(d)事务负荷:事务服务112可以选择具有最低事务负荷的存储部件。例如,如果与源存储部件相比,目的地存储部件正在服务更少的总请求,那么可以选择目的地存储部件。

(e)布局状态:可以监视源布局和目的地布局的健康或状态。布局可以被标记为只读、只写或不可达。布局可能由于各种原因不可达,诸如网络分区或布局中的存储服务器故障等。如果目的地布局或源布局不可达,那么读取可以被定向到另一个布局。

包括以上属性中的一个或多个的属性的组合也可以用于选择在其上执行读取操作的存储部件。例如,属性中的每一个可以与权重相关联,并且可以选择具有最高总权重的存储部件。如果在任何以上情景中,读取尝试在选定的存储部件上不成功,那么可以在另一个存储部件上执行读取。

在一个或多个实施例中,不是在存储部件或目的地部件之间进行选择,而是可以在两个部件上同时尝试读取操作。然后可以将首先检索到的对象数据返回给请求客户端。

图4图示了根据一个或多个实施例的用于在迁移期间处理客户端请求的操作的示例集合。事务处理从存储系统100接收到访问卷内的对象的请求开始。(操作402)。在一个或多个实施例中,请求可以包括识别对象的逻辑存储位置的逻辑对象指针。例如,客户端可以包括引用“v1:500”以读取或写入存储在卷“v1”内的偏移量500处的对象。

响应于接收到请求,事务服务112确定请求所针对的卷的状态(操作404)。例如,事务服务112可以为卷的最近代而访问卷表或卷头。事务服务112可以解析状态条目以确定卷当前是否正在被迁移。

如果对象正在被迁移,那么事务服务112确定客户端请求的访问类型(操作406)。

如果请求是要执行新对象或现有对象的新版本的写入,那么事务服务112确定目的地存储部件的布局表示(操作408)。例如,如果请求针对卷v1,那么事务服务可以从卷表324读取布局表示。在这种情况下,目的地布局是“l2”,即在卷表324内列出的第一布局。

基于目的地布局表示,事务服务112将对象(或对象的新版本)写入到目的地存储部件(操作410)。根据一个或多个实施例,该对象不被写入到源布局。再次参考图3b,例如,对卷“v1”的写入操作是对由布局“l2”表示的物理存储介质执行。但是,这种写入操作不对由布局“l1”表示的物理存储介质执行。

如果请求是要执行读取操作,那么事务服务112选择存储部件和/或目的地存储部件(操作412)。用于执行该选择的标准可能因实现而异。以上提供了示例选择逻辑。

在读取操作期间,事务服务112确定选定的存储部件或存储部件集合的布局表示(操作414)。例如,如果目的地布局被选择,那么事务服务112可以读取布局表328以确定布局“l2”被映射到带库“tl1”内的带盒“c1”和“c10”。如果源布局被选择,那么事务服务112可以从布局表328确定布局“l1”被映射到hdd存储服务器“ss1”上的扩展区“e1”、存储服务器“ss2”上的扩展区“e4”和存储服务器“ss5”上的扩展区“e9”。

基于布局表示,事务服务112执行从选定的存储部件读取数据对象(操作416)。例如,事务服务112可以向诸如hdd服务器或带库的物理存储设备传送请求,以从由布局表示识别的物理存储位置检索卷数据。响应于从物理存储部件接收到数据,事务服务112然后可以将对象数据返回给请求客户端。

以上操作描述了在数据迁移期间的示例事务处理。如果卷没有在被迁移,那么事务服务112对卷的活动(active)版本执行该操作(操作418)。

如前所述,一旦迁移完成,源表示就可以从卷中去除。例如,为了在迁移之后生成卷表(卷表326)的新代,从卷表324中去除布局“l1”。在迁移期间,读取请求可以分别针对由布局“l1”和“l2”表示的源存储部件或目的地存储部件。在迁移完成之后接收到的读取请求仅被定向到目的地存储部件“l2”,因为源布局表示“l1”已从卷表中去除。这种处理允许在数据被迁移之后从源存储部件中清除卷。

4.硬件概述

根据一个实施例,本文所描述的技术由一个或多个专用计算设备来实现。专用计算设备可以是硬连线的以执行上述技术,或者可以包括诸如被永久性地编程以执行技术的一个或多个专用集成电路(asic)或现场可编程门阵列(fpga)的数字电子设备,或者可以包括编程为根据固件、存储器、其它存储装置或组合中的程序指令执行上述技术的一个或多个通用硬件处理器。这些专用计算设备还可以将定制的硬接线逻辑、asic或fpga与定制的编程组合来实现上述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或结合硬连线和/或程序逻辑来实现上述技术的任何其它设备。

例如,图5是图示可以在其上实现一个或多个实施例的计算机系统500的框图。计算机系统500包括总线502或用于传送信息的其它通信机制,以及与总线502耦合用于处理信息的硬件处理器504。硬件处理器504可以是例如通用微处理器。

计算机系统500还包括耦合到总线502用于存储信息和要由处理器504执行的指令的主存储器506,诸如随机存取存储器(ram)或其它动态存储设备。主存储器506也可以用于在要由处理器504执行的指令执行期间存储临时变量或其它中间信息。当这些指令被存储在处理器504可访问的非暂态存储介质中时,它们使计算机系统500成为被定制以执行指令中指定的操作的专用机器。

计算机系统500还包括耦合到总线502用于存储静态信息和用于处理器504的指令的只读存储器(rom)508或其它静态存储设备。提供了诸如磁盘或光盘的存储设备510,并且存储设备510被耦合到总线502以用于存储信息和指令。

计算机系统500可以经由总线502耦合到显示器512,诸如阴极射线管(crt)、液晶显示器(lcd)或发光二极管(led),用于向计算机用户显示信息。输入设备514(其可以包括基于物理和/或触摸屏的字母数字键)被耦合到总线502,用于将信息和命令选择传送到处理器504。另一种类型的用户输入设备是光标控件516,诸如鼠标、轨迹球、或光标方向键,用于向处理器504传送方向信息和命令选择并且用于控制光标在显示器512上的移动。这种输入设备通常具有在两个轴(第一轴(例如,x)和第二轴(例如,y))中的两个自由度,以允许设备在平面中指定位置。

计算机系统500可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文描述的技术,这些定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑与计算机系统结合使计算机系统500成为或将计算机系统500编程为专用机器。根据一个实施例,本文的技术由计算机系统500响应于处理器504执行主存储器506中包含的一条或多条指令的一个或多个序列而执行。这些指令可以从另一个存储介质(诸如存储设备510)读取到主存储器506中。包含在主存储器506中的指令序列的执行使处理器504执行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路系统代替软件指令或与软件指令组合使用。

如本文所使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非瞬态介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如主存储器506。存储介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其它磁性数据存储介质、cd-rom、任何其它光学数据存储介质、具有孔模式的任何物理介质、ram、prom和eprom、flash-eprom、nvram、任何其它存储器芯片或盒带。

存储介质与传输介质不同但可以与传输介质结合使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线502的电线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的那些波。

将一条或多条指令的一个或多个序列携带到处理器504以供执行中可以涉及各种形式的介质。例如,指令最初可以在远程计算机的磁盘或固态驱动器上携带。远程计算机可以将指令加载到其动态存储器中,并且使用调制解调器经电话线发送指令。计算机系统500本地的调制解调器可以接收电话线上的数据,并且使用红外线发射器将数据转换为红外线信号。红外线探测器可以接收在红外线信号中携带的数据,并且适当的电路系统可以将数据放在总线502上。总线502将数据携带到主存储器506,处理器504从该主存储器506检索并执行指令。由主存储器506接收到的指令可以可选地在被处理器504执行之前或执行之后存储在存储设备510上。

计算机系统500还包括耦合到总线502的通信接口518。通信接口518提供耦合到网络链路520的双向数据通信,其中网络链路520连接到本地网络522。例如,通信接口518可以是综合业务数字网(isdn)卡、电缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一个示例,通信接口518可以是提供到兼容的局域网(lan)的数据通信连接的lan卡。也可以实现无线链路。在任何这种实现方式中,通信接口518都发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。

网络链路520通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路520可以通过本地网络522提供到主计算机524或到由互联网服务提供商(isp)526操作的数据设备的连接。isp526又通过现在通常称为“互联网”528的世界范围的分组数据通信网络提供数据通信服务。本地网络522和互联网528都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路520上并且通过通信接口518的信号是传输介质的示例形式,其中信息将数字数据携带到计算机系统500或者携带来自计算机系统500的数字数据。

计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518发送消息和接收数据,包括程序代码。在互联网示例中,服务器530可以通过互联网528、isp526、本地网络522和通信接口518传送对应用程序的请求代码。

接收到的代码可以在其被接收到时由处理器504执行,和/或存储在存储设备510或其它非易失性存储器中以供以后执行。

5.杂项;扩展

实施例针对具有一个或多个设备的系统,设备包括硬件处理器并且被配置为执行本文描述的和/或下面权利要求中任何一项所述的任何操作。

在实施例中,非瞬态计算机可读存储介质包括指令,当指令由一个或多个硬件处理器执行时,使得执行本文描述的和/或权利要求中任何一项所述的任何操作。

根据一个或多个实施例,已经可以使用本文描述的特征和功能的任何组合。在前面的说明书中,已经参考因实现而异的许多具体细节描述了实施例。因此,说明书和附图应当被认为是说明性的而不是限制性的。本发明的范围的唯一且排他的指标以及申请人预期作为本发明的范围的内容是从本申请中发出的权利要求集合的字面和等同范围,以这种权利要求发出的具体形式,包括任何后续的更正。

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