掌桥专利:专业的专利平台
掌桥专利
首页

将数据从大区间池迁移到小区间池

文献发布时间:2023-06-19 12:19:35


将数据从大区间池迁移到小区间池

技术领域

本发明涉及数据迁移,并且更具体地,本发明涉及将数据从第一区间(extent)池迁移到具有比第一区间池更小粒度的第二区间池。

背景技术

存储产品中的区间池可以具有不同的区间大小。例如,可为大区间池实现1GB区间大小,且可为小区间池实现16MB区间大小。当与大区间池相比时,一些工作负荷可在小区间池中执行得更好。然而,传输数据的当前方法是昂贵的,并且涉及使用主机来复制数据或实现闪存副本。因此,需要有效地将卷从大区间池迁移到小区间池。

发明内容

根据一个实施例,一种计算机实现的方法包括:标识将与卷相关联的数据从具有第一秩(rank)区间大小的源存储池迁移到具有小于第一秩区间大小的第二秩区间大小的目的地存储池的请求,创建所述卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系,以及利用卷的逻辑卷区间与源存储池的秩区间内的物理偏移位置之间的对应关系,将数据从所述源存储池的一个或多个秩(ranks)迁移到所述目的地存储池的一个或多个秩。

以此方式,数据从源存储池迁移至具有小于源存储池的秩区间大小的秩区间大小的目的地存储池,而不必使用主机来复制数据或实现闪存副本。这减少了一个或多个系统执行数据迁移的时间和资源量,改善了一个或多个系统的性能。

在一个可选的实施例中,创建对应关系包括:标识卷内的卷段表(VST)条目,所述卷段表(VST)条目对应于源存储池内的包含待迁移数据的秩区间;以及为每个所标识的VST条目创建小VST。

根据另一实施例,一种用于将数据从大区间池迁移到小区间池的计算机程序产品包括具有其中体现的程序指令的计算机可读存储介质,所述计算机可读存储介质本身不是瞬态信号,并且其中,所述程序指令可由处理器执行以使所述处理器执行方法,该方法包括:利用所述处理器,标识将与卷相关联的数据从具有第一秩区间大小的源存储池迁移到具有小于所述第一秩区间大小的第二秩区间大小的目的地存储池的请求,利用所述处理器创建所述卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系,以及利用所述处理器,利用卷的逻辑卷区间与源存储池的秩区间内的物理偏移位置之间的对应关系,将数据从所述源存储池的一个或多个秩迁移到所述目的地存储池的一个或多个秩。

根据另一实施例的系统包括处理器,和与处理器集成的逻辑,可由所述处理器执行,或与所述处理器集成并可由所述处理器执行,其中所述逻辑被配置成:标识将与卷相关联的数据从具有第一秩区间大小的源存储池迁移到具有小于所述第一秩区间大小的第二秩区间大小的目的地存储池的请求,创建所述卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系,以及利用卷的逻辑卷区间与源存储池的秩区间内的物理偏移位置之间的对应关系,将数据从所述源存储池的一个或多个秩迁移到所述目的地存储池的一个或多个秩。

根据另一个实施例的计算机实现的方法包括:标识将与卷相关联的数据从源存储池迁移到目的地存储池的请求,标识与所述源存储池内包含所述数据的秩区间相对应的卷段表(VST)条目,为所述卷内的所标识的VST条目分配和同步小VST,在所述目的地存储池内分配一个或多个秩区间,将与所述卷相关联的所述数据从包含所述数据的所述源存储池内的所述秩区间转移到所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间,更新所述小VST以对应于所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间中的所述传输的数据,以及从所述源存储池内的所述一个或多个秩区间释放所述数据。

以此方式,数据从源存储池迁移至具有小于源存储池的秩区间大小的秩区间大小的目的地存储池。这可改善访问目的地存储池中的数据的应用程序的性能,因为当利用较小秩区间时应用程序可表现更好。

根据另一实施例,一种用于将数据从大区间池迁移到小区间池的计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令,其中,所述计算机可读存储介质本身不是瞬态信号,并且其中,所述程序指令可由处理器执行以使所述处理器执行方法,该包括:利用所述处理器,标识将与卷相关联的数据从源存储池迁移到目的地存储池的请求,利用所述处理器来标识与所述源存储池内包含所述数据的秩区间相对应的VST条目,利用所述处理器为所述卷内的所标识的VST条目中的每个VST条目分配和同步小VST,利用所述处理器在所述目的地存储池内分配一个或多个秩区间,利用所述处理器,将与所述卷相关联的所述数据从包含所述数据的所述源存储池内的所述秩区间传送到所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间,利用所述处理器更新所述小VST以对应于所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间中的所述传输的数据,以及利用所述处理器从所述源存储池内的所述一个或多个秩区间中释放所述数据。

本发明的其他方面和实施例将从以下详细描述中变得清楚,这些详细描述在结合附图时通过举例展示了本发明的原理。

附图说明

图1示出根据一个实施例的网络架构。

图2示出了根据一个实施例的可以与图1的服务器和/或客户端相关联的代表性硬件环境。

图3示出了根据一个实施例的分层数据存储系统。

图4示出了根据一个实施例的用于将数据从大区间池迁移到小区间池的方法。

图5示出了根据一个实施例的用于将数据从源存储池迁移至具有比源池小的区间粒度的目的地存储池的方法。

图6A示出了根据一个实施例的在数据迁移之前的示范性存储环境。

图6B示出了根据一个实施例的响应于迁移请求的示范性存储环境。

图6C示出了根据一个实施例的在从源池向目的地池的数据迁移期间的示范性存储环境。

图6D示出了根据一个实施例的在从源池到目的地池的数据迁移之后的示范性存储环境。

具体实施方式

以下描述公开了用于将数据从大区间池迁移到小区间池的系统、方法和计算机程序产品的若干优选实施例。各个实施例提供了一种用于创建卷的逻辑卷区间与源存储池的秩区间内的物理偏移位置之间的对应关系,并且利用该对应关系将数据从源存储池的一个或多个秩迁移到目的存储池的一个或多个秩的方法。

以下说明是为了展示本发明的一般原理的目的而做出的,并且不旨在限制在此要求保护的发明概念。进一步,本文中所描述的特定特征可与不同可能的组合和秩列中的每一者中的其他所描述的特征组合使用。

除非在本文中另外明确定义,否则所有术语将被给予其最广泛的可能解释,包括从说明书中暗示的含义以及本领域技术人员所理解的和/或如在词典、论文等中定义的含义。

还必须注意的是,如在本说明书和所附权利要求书中所使用的,单数形式“一个”、“一种”和“该”包括复数指代物,除非另外指明。将进一步理解的是,当在本说明书中使用术语“包括”和/或“包含”时,其指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。

以下描述公开了用于将数据从大区间池迁移到小区间池的系统、方法和计算机程序产品的若干优选实施例。

在一个通用实施例中,一种计算机实现的方法包括:标识将与卷相关联的数据从具有第一秩区间大小的源存储池迁移到具有小于所述第一秩区间大小的第二秩区间大小的目的地存储池的请求,创建所述卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系,以及利用所述卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系,将数据从所述源存储池的一个或多个秩迁移到所述目的地存储池的一个或多个秩。

以此方式,数据从源存储池迁移至具有小于源存储池的秩区间大小的秩区间大小的目的地存储池,而不必使用主机来复制数据或实现闪存副本。这减少了执行数据迁移的一个或多个系统的时间和资源量,这改善了一个或多个系统的性能。

在另一个一般实施例中,创建对应关系包括标识卷内的与包含待迁移数据的源存储池内的秩区间相对应的VST条目,以及为每个所标识的VST条目创建小VST。

在另一通用实施例中,一种用于将数据从大区间池迁移到小区间池的计算机程序产品,该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令,其中,所述计算机可读存储介质不是瞬态信号本身,并且其中,所述程序指令可由处理器执行以使所述处理器执行的方法包括:利用所述处理器,标识将与卷相关联的数据从具有第一秩区间大小的源存储池迁移到具有小于所述第一秩区间大小的第二秩区间大小的目的地存储池的请求,利用所述处理器创建所述卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系,以及利用所述处理器,利用卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系来将数据从所述源存储池的一个或多个秩迁移到所述目的地存储池的一个或多个秩。

在另一个一般实施例中,一种系统包括处理器和与所述处理器集成、可由所述处理器执行、或与所述处理器集成并可由所述处理器执行的逻辑,其中所述逻辑被配置成标识将与卷相关联的数据从具有第一秩区间大小的源存储池迁移到具有小于所述第一秩区间大小的第二秩区间大小的目的地存储池的请求,创建所述卷的逻辑卷区间与所述源存储池的秩区间内的物理偏移位置之间的对应关系,以及利用卷的逻辑卷区间与源存储池的秩区间内的物理偏移位置之间的对应关系,将数据从所述源存储池的一个或多个秩迁移到所述目的地存储池的一个或多个秩。

在另一通用实施例中,一种计算机实现的方法包括:标识将与卷相关联的数据从源存储池迁移至目的地存储池的请求,标识对应于所述源存储池内包含所述数据的秩区间的卷段表(VST)条目,为所述卷内的所标识的VST条目分配和同步小的VST,在所述目的地存储池内分配一个或多个秩区间,将与所述卷相关联的所述数据从包含所述数据的所述源存储池内的所述秩区间转移到所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间,更新所述小VST以对应于所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间中的所述传输的数据,以及从所述源存储池内的所述一个或多个秩区间释放所述数据。

以此方式,数据从源存储池迁移至具有小于源存储池的秩区间大小的秩区间大小的目的地存储池。这可改善访问目的地存储池中的数据的应用程序的性能,因为当利用较小秩区间时应用程序可表现更好。

在另一通用实施例中,一种用于将数据从大区间池迁移到小区间池的计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有随其体现的程序指令,其中,所述计算机可读存储介质本身不是瞬态信号,并且其中,所述程序指令可由处理器执行以使所述处理器执行方法,该方法包括:利用所述处理器,标识将与卷相关联的数据从源存储池迁移到目的地存储池的请求,利用所述处理器来标识与包含所述数据的所述源存储池内的秩区间相对应的VST条目,利用所述处理器为所述卷内的所标识的VST条目中的每个VST条目分配和同步小VST,利用所述处理器在所述目的地存储池内分配一个或多个秩区间,利用所述处理器,将与所述卷相关联的所述数据从包含所述数据的所述源存储池内的所述秩区间传输到所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间,利用所述处理器更新所述小VST以对应于所述目的地存储池的所述一个或多个秩中的所述一个或多个秩区间中的所述传输的数据,以及利用所述处理器从所述源存储池内的所述一个或多个秩区间中释放所述数据。

图1示出根据一个实施例的架构100。如图1所示,提供了包括第一远程网络104和第二远程网络106的多个远程网络102。网关101可以耦合在远程网络102和邻近网络108之间。在本架构100的上下文中,网络104、106可各自采取任何形式,包括但不限于LAN、WAN,诸如互联网、公共交换电话网络(PSTN)、内部电话网络等。

在使用中,网关101充当从远程网络102到邻近网络108的入口点。照此,网关101可以起路由器和交换机的作用,路由器能够指引到达网关101的给定数据分组,交换机为给定分组提供进出网关101的实际路径。

还包括至少一个数据服务器114,其耦合到邻近网络108,并且可经由网关101从远程网络102访问。应当注意,(一个或多个)数据服务器114可以包括任何类型的计算设备/群件。耦合到每个数据服务器114的是多个用户设备116。用户设备116还可以通过网络104、106、108之一直接连接。这样的用户设备116可以包括台式计算机、膝上型计算机、手持式计算机、打印机或任何其他类型的逻辑。应当注意,在一个实施例中,用户设备111还可以直接耦合到任何网络。

外围设备120或一系列外围设备120(例如,传真机、打印机、联网和/或本地存储单元或系统等)可以耦合到网络104、106、108中的一个或多个。应注意,数据库和/或额外组件可与耦合到网络104、106、108的任何类型的网络元件一起使用或集成到耦合到网络104、106、108的任何类型的网络元件中。在本说明书的上下文中,网络元件可以指网络的任何组件。

根据一些方法,在此描述的方法和系统可以用虚拟系统和/或模拟一个或多个其他系统的系统(诸如模拟IBM z/OS环境的UNIX系统、虚拟地托管微软WINDOWS环境的UNIX系统,模拟IBM z/OS环境的微软WINDOWS系统等)来实现和/或在其上实现。在一些实施例中,可以通过使用VMWARE软件来增强这种虚拟化和/或仿真。

在更多方法中,一个或多个网络104、106、108可以表示通常被称为“云”的系统集群。”在云计算中,诸如处理能力、外围设备、软件、数据、服务器等的共享资源以按需关系被提供给云中的任何系统,从而允许服务跨许多计算系统的访问和分发。云计算通常涉及在云中操作的系统之间的互联网连接,但是也可以使用连接系统的其他技术。

图2示出了根据一个实施例的与图1的用户设备116和/或服务器114相关联的代表性硬件环境。该图示出了工作站的典型硬件配置,该工作站具有诸如微处理器的中央处理单元210和经由系统总线212互连的多个其他单元。

图2中所示的工作站包括随机存取存储器(RAM)214、只读存储器(ROM)216,I/O适配器218,用于将诸如盘存储单元220的外围设备连接到总线212,用于连接键盘224、鼠标226、扬声器228、麦克风232,和/或到总线212的其他用户接口设备,诸如触摸屏和数字相机(未示出)的用户接口适配器222,用于将工作站连接到通信网络235(例如,数据处理网络)的通信适配器234和用于将总线212连接到显示设备238的显示适配器236。

工作站可具有驻留在其上的操作系统,诸如微软

现在参见图3,示出了根据一个实施例的存储系统300。应注意,根据不同实施例,图3中所示的一些元件可实施为硬件和/或软件。存储系统300可以包括用于与至少一个较高存储层302和至少一个较低存储层306上的多个介质通信的存储系统管理器312。较高存储层302优选地可包括一个或多个随机访问和/或直接访问介质304,诸如硬盘驱动器(HDD)中的硬盘、非易失性存储器(NVM)、固态驱动器(SSD)中的固态存储器、闪存、SSD阵列、闪存阵列等,和/或本文指出的或本领域已知的其他介质。较低存储层306可优选地包括一个或多个较低性能存储介质308,包括顺序访问介质,诸如磁带驱动器中的磁带和/或光学介质、较慢访问HDD、较慢访问SSD等,和/或本文指出的或本领域已知的其他介质。一个或多个附加存储层316可包括系统300的设计者所期望的存储存储介质的任意组合。而且,较高存储层302和/或较低存储层306中的任一者可包含存储装置和/或存储介质的某一组合。

存储系统管理器312可通过网络310与较高存储层302和较低存储层306上的存储介质304、308通信,所述网络310例如为存储区域网络(SAN),如图3中所示,或一些其他合适的网络类型。存储系统管理器312还可以通过主机接口314与一个或多个主机系统(未示出)通信,主机接口314可以是或可以不是存储系统管理器312的一部分。存储系统管理器312和/或存储系统300的任何其他组件可以用硬件和/或软件来实现,并且可利用处理器(未示出)来执行本领域已知的类型的命令,例如中央处理单元(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC),等等。当然,如本领域技术人员在阅读本说明书后将显而易见的,可以使用存储系统的任何布置。

在更多实施例中,存储系统300可以包括任何数量的数据存储层,并且可以在每个存储层内包括相同或不同的存储器存储介质。例如,每一数据存储层可包含相同类型的存储器存储介质,例如HDD、SSD、顺序存取介质(磁带驱动器中的磁带、光盘驱动器中的光盘等)、直接存取介质(CD-ROM、DVD-ROM等)或介质存储类型的任何组合。在一个这样的配置中,较高存储层302可以包括用于在较高性能存储环境中存储数据的SSD存储介质的大部分,并且包括较低存储层306和附加存储层316的剩余存储层,其可以包括用于在较低性能存储环境中存储数据的SSD、HDD、磁带驱动器等的任何组合。以此方式,较频繁访问的数据、具有较高优先级的数据、需要更快访问的数据等可存储到较高存储层302,而不具有这些属性之一的数据可存储到额外存储层316,包含较低存储层306。当然,本领域技术人员在阅读本说明书后,可根据本文所呈现的实施例设计存储介质类型的许多其他组合以实现到不同的存储方案中。

根据一些实施例,存储系统(例如300)可包含被配置为接收打开数据集的请求的逻辑,被配置为确定所请求的数据集是否存储到多个关联部分中分层数据存储系统300的较低存储层306中的逻辑,配置为将所请求数据集合的每个关联部分移动到分层数据存储系统300的较高存储层302的逻辑,以及被配置为从相关联的部分组装分层数据存储系统300的较高存储层302上的所请求的数据集的逻辑。

当然,根据不同实施例,该逻辑可以被实现为任何设备和/或系统上的方法或计算机程序产品。

现在参见图4,示出了根据一个实施例的方法400的流程图。在不同实施例中,方法400可根据本发明在图1-3和6A-D中描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将理解的,方法400中可包括比图4中具体描述的那些操作更多或更少的操作。

方法400的每个步骤可以由操作环境的任何合适的部件执行。例如,在不同实施例中,方法400可以部分地或完全地由一个或多个服务器、计算机或其中具有一个或多个处理器的一些其他设备来执行。处理器(例如,以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可在任何设备中用于执行方法400的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。

如图4所示,方法400可以开始于操作402,其中,接收将与卷相关联的数据从具有第一秩区间大小的源存储池迁移至具有小于第一秩区间大小的第二秩区间大小的目的地存储池的请求。

另外,方法400可以继续进行操作404,其中在卷的逻辑卷区间与源存储池的秩区间内的物理偏移位置之间创建对应关系。在一个实施例中,创建对应关系包括标识卷内对应于源存储池内包含待迁移数据的秩区间的VST条目。例如,VST可以存储卷内存储的数据的逻辑表示,其中VST包括多个条目。这些条目的子集可在VST内被标识,这些VST对应于源存储池内包含待迁移数据的秩区间。

进一步地,在一个实施例中,创建对应关系可以包括针对每个标识的VST条目创建小VST。例如,对于所标识的VST条目的子集中的每一个,可以创建小VST。在另一示例中,小VST中的每一个可以用于以更高的粒度表示其对应VST条目内的所有逻辑卷区间。

进一步,在一个实施例中,创建对应关系可包括将小VST内的逻辑卷区间设置为指向源存储池内的秩区间内的包含待迁移数据的对应偏移位置。以此方式,可在卷的小VST的逻辑卷区间与源存储池内的秩区间内的包含待迁移数据的偏移位置之间建立直接对应关系。

更进一步,方法400可继续进行操作406,其中利用卷的逻辑卷区间与源存储池的秩区间内的物理偏移位置之间的对应关系来将数据从源存储池的一个或多个秩迁移到目的存储池的一个或多个秩。在一个实施例中,迁移数据可以包括选择目的地存储池内的多个秩区间以接收迁移的数据。例如,可以随机地或根据一个或多个标准(例如,秩编号、对应秩的数据检索速度、当前存储在对应秩中的数据量等)来选择多个秩区间。

此外,在一个实施例中,迁移数据可以包括将与卷相关联的数据从源存储池的秩区间内的一个或多个偏移位置转移到目的地存储池内的所选择的多个秩区间。

此外,在一个实施例中,迁移数据可以包括从源存储池内的一个或多个秩区间中释放数据。在另一实施例中,迁移数据可包括调整小VST内的卷区间以指向存储所转移的数据的目的地存储池的所选多个秩区间内的迁移数据的对应位置。

以此方式,将数据从源存储池迁移至具有小于源存储池的秩区间大小的秩区间大小的目的地存储池,而不必使用主机来复制数据或实现闪存副本。这减少了执行数据迁移的一个或多个系统的时间和资源量,改善了一个或多个系统的性能。

现在参见图5,示出了根据一个实施例的用于将数据从源存储池迁移到具有比源池更小的区间粒度的目的地存储池的方法500的流程图。在不同实施例中,根据本发明方法500可在图1-3和6A-D,等等中描绘的任何环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法500中可包括比图5中具体描述的那些操作更多或更少的操作。

方法500的每个步骤可以由操作环境的任何合适的部件执行。例如,在不同实施例中,方法500可以部分地或完全地由一个或多个服务器、计算机或其中具有一个或多个处理器的一些其他设备来执行。处理器(例如,以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可在任何设备中用于执行方法500的一个或多个步骤。说明性处理器包括但不限于中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等、其组合、或本领域已知的任何其他合适的计算设备。

如图5所示,方法500可以开始于操作502,其中,标识将与卷相关联的数据从源存储池迁移到目的存储池的请求。在一个实施例中,卷包括存储卷,该存储卷以连续的方式向一个或多个主机组织和呈现数据的逻辑表示。在另一实施例中,卷包括多个卷区间。例如,每个卷区间可包括逻辑区间。

此外,在一个实施例中,存储池包括一个或多个秩。在另一实施例中,每个秩包括冗余量的存储(例如,RAID存储阵列等)。在又一实施例中,在卷中逻辑表示的数据被物理地存储在存储池的一个或多个秩中。例如,在一个实施例中,每个秩包括多个秩区间。

进一步,在一个实施例中,秩内的区间被表示为秩的秩段表(RST)内的条目,其中每个秩区间是满的或空的。例如,每个秩区间表示物理区间。在另一示例中,每个秩区间表示用于将数据存储在存储池内的预定存储量。在又一示例中,满秩区间包括卷内的数据的逻辑位置(例如,卷和该卷内的卷区间的标识,其中数据被对一个或多个主机逻辑地存储并呈现)。

更进一步,在一个实施例中,源存储池包括最初存储在卷中逻辑表示的所有数据的一个或多个秩。在另一实施例中,将卷中逻辑表示的数据物理地存储在源存储池内的多个秩中。

此外,在一个实施例中,源存储池具有第一秩区间大小,并且目的地存储池具有小于第一秩区间大小的第二秩区间大小。例如,源存储池可具有1GB大小的秩区间,并且第二区间池可具有16MB大小的秩区间。

另外,方法500可继续进行操作504,其中标识对应于源存储池内包含数据的秩区间的VST条目。在一个实施例中,卷区间在卷段表(VST)的条目内被分组,其中每个卷区间是满的或空的。例如,在一个实施例中,全卷区间包括源存储池内的数据的物理位置(例如,存储与卷区间相关联的数据的秩的标识和该秩内的秩区间)。在另一示例中,VST的每个条目包括预定数量的连续卷区间。在又一示例中,VST将卷的逻辑区间(例如,卷区间)映射到存储池内的一个或多个秩的物理区间(例如,秩区间)。

此外,方法500可以继续进行操作506,其中为卷内的标识的VST条目分配和同步小VST。在一个实施例中,小VST以更高的粒度表示和管理VST的条目。例如,VST的每个条目包括仅由VST条目号标识的分组的多个卷区间。在另一示例中,单个VST条目可由小VST表示,该小VST具有与在单个VST条目内分组的多个卷区间中的每一个对应的条目。

更进一步,在一个实施例中,同步小VST可包括将每个小VST的每一个内的逻辑卷区间设置为指向源存储池内的秩区间内的包含待迁移数据的对应偏移位置。例如,秩区间的偏移位置表示秩区间的逻辑表示内的逻辑秩区间号(例如,其指示秩区间的预定部分)。在另一示例中,大小为1GB的秩区间可具有各自表示秩区间的16MB部分的多个偏移位置(使得单个1GB秩区间将具有六十四个16MB偏移位置等)。这允许以较高粒度表示秩区间。

在另一实施例中,同步小VST可包括填充小VST,使得它们包括卷区间,该卷区间包含源存储池内的对应秩区间内的偏移位置。以这种方式,填充小VST内的条目,使得小VST内的条目的组织(例如,顺序、编号等)与对应于小VST的分配的秩区间内的偏移位置的组织匹配。

此外,方法500可继续进行操作508,其中在目的地存储池内分配一个或多个秩区间。在一个实施例中,在目的地存储池内分配的秩区间的数量对应于卷的大小。例如,在目的地存储池内分配由卷逻辑表示的数据的总大小。在另一示例中,由卷逻辑表示的数据的总大小除以目的地存储池的秩区间大小以确定在目的地存储池内分配的秩区间的数量。在另一实施例中,随机地、串行地、非串行地等分配一个或多个秩区间。

另外,在一个实施例中,可根据一个或多个准则分配一个或多个秩区间。例如,可基于目的地存储池内的秩的数据检索速度来分配一个或多个秩区间。例如,每个秩可按数据检索速度降低的顺序列出,并且区间可根据列出在秩中分配(例如,以具有最快数据检索速度的秩开始,等等)。

在另一实例中,可基于当前存储在目的地存储池内的每个秩中的数据的数据量来分配一个或多个秩区间。例如,秩可按当前可用存储空间的减小量的顺序列出,并且区间可根据该列出在秩中分配(例如,以具有最当前可用区间的秩开始等)。

此外,方法500可继续进行操作510,其中与卷相关联的数据从源存储池内包含数据的秩区间传送到目的地存储池的一个或多个秩中的一个或多个秩区间。在一个实施例中,传输数据包括确定源存储池的一个或多个RST的秩区间内对应于卷内的所有先前分配的卷区间的所有偏移位置的位置。在另一实施例中,传送数据包括确定目的地存储池内的所有分配的秩区间。

更进一步,在一个实施例中,传送数据包括将存储在源存储池内的秩区间的偏移位置中的数据传送到目的地存储池内的对应的所分配的秩区间。例如,存储在源存储池的秩的秩区间的偏移位置中的数据被传送到目的地存储池的所分配的秩区间。

此外,方法500可继续进行操作512,其中更新小VST以对应于目的地存储池的一个或多个秩中的一个或多个秩区间中的所传输的数据。例如,在卷的小VST内调整卷区间,以指向存储所传送数据的目的地存储池的所分配的一个或多个秩区间内的对应位置。

另外,方法500可继续进行操作514,其中从源存储池内的一个或多个秩区间释放数据。在一个实施例中,释放数据可包括从源存储池内的一个或多个秩区间中删除数据。

例如,小VST内的卷区间最初标识源存储池中的秩区间的逻辑表示内的偏移位置,其中由该卷区间逻辑表示的数据被物理地存储。在另一示例中,在小VST内更新卷区间,以标识与卷区间相关联的数据被迁移的目的地存储池的所分配的秩区间。在又一示例中,所存储的数据从源存储池中的秩区间的逻辑表示内的偏移位置迁移到目的地存储池的所分配的秩区间。

以此方式,卷的小VST内的卷区间匹配目的地存储池中的分配的秩区间,在目的地存储池中存储与那些卷区间相关联的数据。例如,在卷的小VST内的卷区间的位置与存储条目的数据的所分配的秩区间相匹配。这简化和加快了目的地存储池内的数据再调用。

在一个实施例中,提供对目的地存储池处的数据的访问的一个或多个应用。例如,在一个或一个以上主机上运行的一个或一个以上应用程序可将一个或一个以上数据请求发送到所述卷,且所述卷可将所述数据请求引导到目的地存储池以实现数据存取。在另一实施例中,当使用与源存储池内的较大秩区间粒度相比目的地存储池内的较小秩区间粒度访问数据时,一个或多个应用程序可更有效地运行。

以此方式,将数据从源存储池迁移至具有小于源存储池的秩区间大小的秩区间大小的目的地存储池。这可改善访问目的地存储池中应用程序访问数据的性能,因为应用程序在利用较小秩区间时可表现更好。

图6A示出了根据一个实施例的在数据迁移之前的示范性存储环境600。如图所示,VST602存储卷0 604内存储的数据的逻辑表示。另外,RST存储如存储在源池0 626的秩3624内的数据的物理表示。此外,源池0 626的秩粒度为1GB。例如,源池0 626内的每个秩区间具有1GB的大小。

进一步,全卷区间VST条目632和634引用RST内的位置630A-B,其中数据物理地存储在源池0 626内。例如,源池0 626的秩3 624的秩区间0 630A包括到卷0 604内的VST条目0 632的链接。相反,卷0 604内的VST条目0 632包括到源池0 626的秩3 624的秩区间0630A的链接。

同样,源池0 626的秩3624的秩区间64 630B包括到卷0 604内的VST条目2 634的链接。相反,卷0 604内的VST条目2 634包括到源池0 626的秩3 624的秩区间64 630B的链接。

以此方式,卷0 604中的数据的逻辑表示之间的连接被映射到源池0 626中的数据的物理表示。

图6B示出根据一个实施例的响应于迁移请求的示范性存储环境600。目的地池1622的秩粒度是16MB。例如,目的地池1 622内的每个秩区间具有16MB的大小。由于源池0626的秩粒度是1GB,因此目的地池1 622具有比源池0 626更小的秩粒度。

在一个实施例中,接收将数据从源池0 626迁移到目的地池1 622的请求。在另一实施例中,响应于迁移请求,在卷0 604内创建小VST614和616。例如,小VST614和616分别用于表示VST条目0632和VST条目2634内的卷区间。

另外,在一个实施例中,更新小VST614和616内的区间618A-E和619A-E以包括到所分配的秩区间630A和630B的对应偏移位置640A-E和641A-E的链接。示出了所分配的秩区间630A和630B的偏移位置640A-E和641A-E的逻辑表示636和638。例如,小VST614的卷区间0618A可被更新为指向所分配的秩区间0630A的逻辑表示636的偏移位置0640A,小VST614的卷区间1 618B可被更新为指向所分配的秩区间0 630A的逻辑表示636的偏移位置1640B,等等等。

以此方式,可在小VST614和616内的区间618A到618E与619A到619E与所分配的秩区间630A和630B的偏移位置640A-E与641A-E之间进行相关。

图6C示出了根据一个实施例的在将数据从源池0626到目的地池1 622的迁移期间的示范性存储环境600。如图所示,在目的地池1622的目的地秩0 610和目和目秩1 612内分配秩区间620A-E和621A-E。应注意,虽然分配的秩区间620A-E和621A-E是串行的,但可不串行执行分配。

另外,尽管示出了目的地秩0 610和目的地秩1 612,但可分配来自目的地池622内的其他秩的秩区间。例如,可以根据秩的数据检索速度、根据当前存储在秩中的数据量等,在目的地池622内的秩之间随机地分配秩区间。

进一步地,如所示出的,物理存储在秩3 624的秩0 630A的偏移位置0 640A中的数据已经被传输至目的地秩1 612的秩区间1 621B,并且小VST614的秩区间0 618A被更新以指向秩区间1 621B。相反,源池1 622的目的地秩1 612的秩区间1 621B被更新以包括到卷0604内的卷区间0 618A的链接。这导致偏移位置0 640A处的陈旧数据。

类似地,如所示,物理存储在偏移位置2 640C中的数据已经被传送到目的地秩0610的秩区间1 620B,并且小VST614的卷区间2 618C被更新以指向秩区间1 620B。相反,源池1 622的目的地秩0 610的秩区间1 620B被更新以包括到卷0 604内的卷区间2618C的链接。这导致偏移位置2 640C处的过时数据。

进一步地,如所示出的,已经将物理地存储在偏移位置65641B中的数据传输至目的地秩1 612的秩区间0 621A,并且更新小VST 616的卷区间129 619B以指向秩区间0621A。相反,更新源池1 622的目的地秩1 612的秩区间0 621A以包括到卷0 604内的卷区间129619B的链接。这导致偏移位置65 641B处的过时数据。

同样,如所示出的,已经将物理地存储在偏移位置127 641E中的数据传输至目的地秩0 610的秩区间2 620C,并且更新小VST 616的卷区间191 619E以指向秩区间2 620C。相反,更新源池1 622的目的地秩0 610的秩区间2 620C以包括到卷0 604内的卷区间191619E的链接。这导致偏移位置127 641E处的过时数据。

图6D示出了根据一个实施例的数据在从源池0 626到目的地池1 622的迁移之后的示例性存储环境600。如所示,将物理地存储在源池0 626的秩区间0 630A和64 630B中的所有数据传送到目的地池1 622的秩0 610和秩1 612内的所分配的秩区间。另外,更新小VST614和616中的对应卷区间以指向现在存储迁移数据的对应秩区间。

这导致秩区间0 630A和64 630B的所有偏移位置中的过时数据,并且因此释放这样的秩区间0 630A和64 630B中的数据。

以此方式,数据可从源池0 626迁移到目的地池1 622,并且可更新卷0 604以反映该迁移。

存储产品中的区间池可以具有不同的区间大小。例如,DS8000可将1GB区间大小用于大池并将16MB用于小池。一些工作负荷使用小池执行得更好,而其他工作负荷在大区间池中执行得更好。因此,需要当工作负荷改变时跨不同大小的区间池迁移卷。

区间迁移是卷迁移的构建块。在区间迁移开始时,在目标区间池中分配秩区间作为源区间的迁移目标。如果区间大小是源和目标区间池相同的,则迁移过程包括在目标池中分配一个区间,将数据从源迁移到目标,在迁移正在进行时(或执行镜像写入)保持后端I/O,并且一旦迁移完成就将I/O切换到目标。

公开了一种以有效的方式将数据从大区间池迁移到小区间池的方法,其中,当迁移被中断(计划或未计划)时,迁移能够被恢复。

在一个实施例中,秩段表(RST)是描述秩区间的状态和物理秩区间所属的逻辑卷区间的秩(阵列)的映射表。例如,假设秩rO是1T,并且区间大小是1G,则该RST表将具有1024个条目,每个条目表示一个物理区间。如果秩区间0被分配给卷0x1010的逻辑区间1,则RST中的条目将具有指示物理区间状态被分配的信息,并且其被分配给卷0x1010的逻辑区间1。

此外,在一个实施例中,卷段表(VST)是将卷的逻辑区间映射到秩的物理区间的卷的映射表,使得我们可以在主机I/O到达卷LBA边界上时容易地标识所在的物理位置。

进一步地,在一个实施例中,小卷段表(smVST)也是用于包含64个条目的卷的映射表,其中每个条目将小逻辑区间(16MB)映射到秩的物理区间,使得我们可以在主机I/O到达卷LBA边界上时容易地标识所在的物理位置。

更进一步,在一个实施例中,仅RST在磁盘中是持久的,并且基于RST按需构建VST并将其加载到存储器中。

同样,在一个实施例中,以下步骤提供从大区间池到小区间池的区间迁移:

1.预先检查以确保迁移请求可被满足。

2.如果是瘦供应卷,则停止瘦供应写入。

3.将卷区间池ID更新为目标区间池,打开卷标记以指示进行中的空间分配并硬化(harden)卷结构。

4.为客户数据分配目标RST对象。

5.对于瘦供应卷,如果已经分配源大区间,则在目标区间池中分配64个小区间并且将其标记为DSR_TGT。如果未分配源区间,则不需要在目标池中分配小区间。

6.分配元数据的目的地RST对象。

7.如果是瘦供应卷,则恢复瘦供应写入。

8.通过使用RST改变后的位图,硬化改变后的RST对象。

9.如果是瘦供应卷,则停止瘦供应写入。

10.如果所有表项都处于未分配状态,则分配smVST。

11.向对等LPAR发送邮件以同步smVST(该步骤仅对ESE卷有效)。

12.如果是瘦供应卷,则恢复瘦供应写入。

13.关闭卷分配标志、打开卷迁移标志并硬化卷结构。

14.进行迁移卷区间。

15.在目标池中找到DSR_TGT状态中的小区间,并将其与源小区间块配对以开始小区间迁移;以16MB为单位保持I/O。

16.一旦来自源区间的16MB客户数据全部处于目标中,切换到元数据更新阶段。

17.将目标RST的状态改变和硬化为TGT_CMPLT状态。

18.若smVST不存在,则分配smVST。

19.初始化smVST条目,以指向源大区间中的相关小块。

20.更新smVST以指向所有可用集群上的新目标小区间。

21.释放所有保持阶段和降级(destage)I/O。

22.高速缓存扫描(CACHE SCAN)使高速缓存降级区间中的所有已修改轨道。

23.如果源区间是最后一个要迁移到目标的小块,则释放源区间,否则,返回步骤15以处理下一个小块。

24.将目标RST的状态改变和硬化到已分配状态。

在一个实施例中,在迁移开始之前在目标区间池中预分配空间。1GB大区间等于6416MB小区间,所以如果源大区间被分配,则在目标池中将存在64个预分配的小区间。如果源很大程度上尚未分配,则也不需要在目标池中提供空间。

如果源尚未被分配,则应当针对64个小区间块分配smVST条目;这样,一旦I/O开始写入64个小区间块中的任一个,我们就可以从目标小区间池分配小区间并且更新smVST条目以指向目标小区间。smVST更新需要在存储节点之间同步。

如果源大区间处于已分配状态,则我们可以仍然预先分配smVST,并且更新其条目以指向大区间中的相关小块,或者将smVST的分配延迟到大区间的第一个16MB小块已经迁移到目标小区间时。

在一个实施例中,后端I/O被保持在16MB小区间单元中。16MB小组块从大区间迁移到在目标池中相关小区间期间,在从源到目标执行迁移时,后端I/O被写入到源和目标两者。一旦从源小块的客户数据大部分在目标中,就执行切换到元数据更新阶段。将目标RST状态改变为TGT_CMPLT状态指示复制完成,并且执行更新相关的smVST条目以指向目标区间,使得之后I/O能够被定向到目标。

当迁移被计划/非计划重新引导中断时,1GB数据的一部分在源池中并且其他部分在目标池中。如何选择使用哪个副本?我们如何构建VST以映射到正确的秩分段吗?在一个实施例中,小的始终是假设:该过程可以包括扫描秩并且为处于TGT_CMPLT或者已分配状态的每个RST建立VST。来自小秩的RST总是重写来自大秩的RST。这是因为如果小区间已经处于TGT_CMPLT或已分配状态,则I/O已经被切换到小区间的目标。因此,我们需要重写相关的smVST以指向目标小区间。

本发明可以是系统、方法、和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或介质),所述计算机可读程序指令用于致使处理器执行本发明的各方面。

计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。

在此所描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言(包括面向对象的Smalltalk、C++等编程语言,以及常规的过程式编程语言,例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接(例如,通过使用互联网服务提供商的互联网)到外部计算机。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各方面。

在此参照根据本发明的实施例的方法、设备(系统)、和计算机程序产品的流程图说明和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。

这些计算机可读程序指令可以被提供给通用计算机的处理器、专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质、可编程数据处理装置、和/或以特定方式起作用的其他设备中,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。

计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置、或其他装置上以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机,其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图展示了根据本发明的各实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个方框可以表示模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实现方式中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由执行指定的功能或动作的基于专用硬件的系统来实现,或专用硬件与计算机指令的组合执行。

此外,根据不同实施例的系统可以包括处理器和与该处理器集成和/或可由该处理器执行的逻辑,该逻辑被配置成用于执行在本文所叙述的过程步骤中的一个或多个。通过集成,意味着处理器具有嵌入其中的逻辑作为硬件逻辑,诸如专用集成电路(ASIC)、FPGA等。通过处理器可执行,意味着逻辑是硬件逻辑;软件逻辑(诸如固件、操作系统的一部分、应用程序的一部分等),或者处理器能够访问并且被配置为在由处理器执行时使处理器执行某种功能的硬件和软件逻辑的某种组合。如本领域已知的,软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上。可使用此项技术中已知的任何处理器,例如软件处理器模块和/或硬件处理器,例如ASIC、FPGA、中央处理单元(CPU)、集成电路(IC)、图形处理单元(GPU)等。

将清楚的是,前述系统和/或方法的不同特征可以任何方式组合,从而从以上呈现的描述中创建多个组合。

将进一步认识到,本发明的实施例可以以代表顾客部署的服务的形式提供以按需提供服务。

虽然以上已经描述了不同实施例,但应理解的是,这些实施例仅通过举例而非限制的方式呈现。由此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。

相关技术
  • 将数据从大区间池迁移到小区间池
  • 一种左小右大双池式洗刷池盆
技术分类

06120113250398