一种基于分布式存储的卷数据在线迁移方法转让专利

申请号 : CN202211081206.2

文献号 : CN115145497B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王家传文刘飞陈坚

申请人 : 深圳市杉岩数据技术有限公司

摘要 :

本发明提供一种基于分布式存储的卷数据在线迁移方法,包括如下步骤:迁移准备阶段:接收迁移指令,根据迁移指令获取和创建迁移任务及目标卷,并在线建立源卷与目标卷间的在线迁移关系,并悬挂IO,将已接收业务请求全部调度执行后,在线修改IO调度策略,再解除悬挂IO,使得业务能够被正确路由至源卷或目标卷上执行,保证业务的持续在线;迁移数据阶段:将源卷所有数据对象按序迁移至目标卷,按序更新迁移进度,以支持断点续传;迁移完成阶段:删除源卷和迁移任务;本发明在迁移数据期间将业务写请求仅路由至目标卷写入,有效避免业务数据同步写源卷和目标卷而导致的写放大和存储系统资源的浪费。

权利要求 :

1.一种基于分布式存储的卷数据在线迁移方法,其特征在于,包括如下步骤:S1、迁移准备阶段:接收迁移指令,根据迁移指令获取和创建迁移任务及目标卷,并在线建立源卷与目标卷间的在线迁移关系,并悬挂IO,将已接收业务请求全部调度执行后,在线修改IO调度策略,再解除悬挂IO,悬挂IO前所接收业务路由至源卷执行,解除悬挂IO后所接收业务路由至目标卷执行,保证业务的持续在线;

S2、迁移数据阶段:将源卷所有数据对象按序迁移至目标卷,并按序更新迁移进度,以便支持断点续传;

S3、迁移完成阶段:删除源卷和迁移任务;

其中,在迁移期间业务数据仅写入一个卷,即目标卷;

步骤S1还包括:悬挂后续到来的业务请求,待IO等待队列中已接收到的请求,即悬挂IO前接收到的请求,全部被调度执行后修改IO调度策略;

后台迁移源卷数据对象写入目标卷时,把目标卷数据对象不存在的检查和写源卷数据对象的数据至目标卷数据对象作为一个事务进行原子操作,如果事务执行结果为成功或者目标卷数据对象已存在,均视本次迁移源卷数据对象到目标卷成功。

2.如权利要求1所述的基于分布式存储的卷数据在线迁移方法,其特征在于,步骤S1中,创建迁移任务和目标卷之后,还复制拷贝源卷的元数据。

3.如权利要求1所述的基于分布式存储的卷数据在线迁移方法,其特征在于,步骤S1中,迁移关系是利用订阅发布机制通知源卷客户端在线建立的。

4.如权利要求1所述基于分布式存储的卷数据在线迁移方法,其特征在于,迁移数据期间,前台业务写会被路由至目标卷执行,在写目标卷时,把目标卷数据对象存在的检查和前台业务写目标卷数据对象封装到一个事务中进行原子操作,如果事务执行结果为目标卷数据对象不存在,则采用类Copy‑Up方法进行写时复制处理。

5.如权利要求4所述基于分布式存储的卷数据在线迁移方法,其特征在于,所述类Copy‑Up方法包括如下步骤:a.读取源卷数据对象的全部数据;

b.将本次写请求和读取源卷数据对象全部数据期间接收到的新的写请求按序压入等待队列;

c.把目标卷数据对象不存在的检查和写源卷数据对象数据至目标卷数据对象作为一个事务进行原子处理;

d.若事务执行结果为成功或目标卷数据对象已存在,则按序将等待队列中所有写请求待写入数据组装成一个完整的数据buff,并写入目标卷数据对象。

6.如权利要求1所述的基于分布式存储的卷数据在线迁移方法,其特征在于,步骤S2中,按序读取源卷数据对象的数据,依序写入到目标卷,并按序更新迁移进度,即记录已按序完成源卷第N个数据对象的迁移,以便断点续传。

7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时能实现权利要求1‑6任一项所述的基于分布式存储的卷数据在线迁移方法。

说明书 :

一种基于分布式存储的卷数据在线迁移方法

技术领域

[0001] 本发明涉及数据在线迁移领域,尤其是涉及一种基于分布式存储的卷数据在线迁移方法。

背景技术

[0002] 企业的业务数据并不是都具有相同的使用价值。企业的部分业务数据会被频繁热点访问,而部分其他业务数据则很少被访问,甚至一些业务数据跨年度级别的时间跨度里都未被访问过。而站在企业的角度来看,这些大量具有低使用价值的业务数据占用着高性能的宝贵存储系统资源是在无形中增加着企业成本负担。
[0003] 另外,考虑成本因素,企业一般会在前期采用非高性能的存储系统资源来存储小众业务的数据。但是随着企业不断深耕发展,小众业务也可能发展壮大成市场上的热门业务,则其涉及的业务数据的访问频率也会随之变得非常频繁,那么此时企业则会面临非高性能存储系统资源可能无法承载当前高频业务访问压力的问题。
[0004] 解决企业的这些业务痛点问题的方法之一就是数据在线迁移。数据在线迁移可以在保证主机端业务不中断的情况下实现不同性能水平存储设备之间的数据迁移。
[0005] Ceph社区虽然也支持卷迁移功能,但是在进行数据迁移前,必须先断开源卷上的用户业务。在完成卷迁移准备操作后,重新将用户业务对接到目标卷才能恢复用户业务。继而才可确保数据迁移过程中用户业务的连续性。因此,Ceph社区的卷迁移不是真正意义上的在线热迁移。
[0006] Copy‑Up技术:如图1所示,即Ceph克隆卷数据对象的首次读写IO流程,这里将之称为Copy‑Up技术。因为克隆卷是与其父卷共享数据的,其自身是没有任何数据对象的。因此,首次写克隆卷某个数据对象时,必须先从其父卷对应的数据对象中读取到共享数据,再将向克隆卷数据对象写共享数据和写业务数据作为一个事务,原子性地把数据按序写入克隆卷数据对象。
[0007] 现有卷在线迁移方案中,虽然可保证在主机端业务不中断的情况下实现不同性能水平存储设备之间的数据迁移,但是在迁移源卷数据到目标卷期间,前台写业务必须将数据同步写入源卷和目标卷,存在着明显的写放大缺点。并且用户的业务数据同步写入源卷和目标卷,使得用户业务数据在存储系统内过于冗余而造成对宝贵存储系统资源的浪费,这也无形中增加了用户的生产成本。同时,用户业务数据在同步写入源卷和目标卷整个IO流程生命周期内,也会额外占用部分网络带宽、内存带宽、CPU(中央处理器)资源和磁盘带宽等资源,在一定程度上可能出现挤占用户前台业务所需资源,造成用户前台业务性能抖动。

发明内容

[0008] 本发明的目的在于解决卷数据在线迁移中存储系统资源浪费及资源占用的问题,提供一种基于分布式存储的卷数据在线迁移方法。
[0009] 为实现上述目的,本发明采用以下技术方案:
[0010] 一种基于分布式存储的卷数据在线迁移方法,包括如下步骤:
[0011] S1、迁移准备阶段:接收迁移指令,根据迁移指令获取和创建迁移任务及目标卷,并在线建立源卷与目标卷间的在线迁移关系,并悬挂IO,将已接收业务请求全部调度执行后,在线修改IO调度策略,再解除悬挂IO,使得业务能够被路由至源卷或目标卷上执行,保证业务的持续在线;
[0012] S2、迁移数据阶段:将源卷所有数据对象按序迁移至目标卷,并按序更新迁移进度,以便支持断点续传;
[0013] S3、迁移完成阶段:删除源卷和迁移任务;
[0014] 其中,在迁移期间业务数据仅写入一个卷,即源卷或目标卷。
[0015] 在一些实施例中,步骤S1中,悬挂IO前所接收业务路由至源卷执行,解除悬挂IO后所接收业务路由至目标卷执行。
[0016] 在一些实施例中,步骤S1中,创建迁移任务和目标卷之后,还复制拷贝源卷的元数据。
[0017] 在一些实施例中,步骤S1中,迁移关系是利用订阅发布机制通知源卷客户端在线建立的。
[0018] 在一些实施例中,步骤S1还包括:悬挂后续到来的业务请求,待IO等待队列中已接收到的请求,即悬挂IO前接收到的请求,全部被调度执行后修改IO调度策略。
[0019] 在一些实施例中,后台迁移源卷数据对象写入目标卷时,把目标卷数据对象不存在的检查和写源卷数据对象的数据至目标卷数据对象作为一个事务进行原子操作,如果事务执行结果为成功或者目标卷数据对象已存在,均视本次迁移源卷数据对象到目标卷成功。
[0020] 在一些实施例中,迁移数据期间,前台业务写会被路由至目标卷执行,在写目标卷时,把目标卷数据对象存在的检查和前台业务写目标卷数据对象封装到一个事务中进行原子操作,如果事务执行结果为目标卷数据对象不存在,则采用类Copy‑Up方法进行写时复制处理。
[0021] 在一些实施例中,所述类Copy‑Up方法包括如下步骤:
[0022] a.读取源卷数据对象的全部数据;
[0023] b.将本次写请求和读取源卷数据对象全部数据期间接收到的新的写请求按序压入等待队列;
[0024] c.把目标卷数据对象不存在的检查和写源卷数据对象数据至目标卷数据对象作为一个事务进行原子处理;
[0025] d.若事务执行结果为成功或目标卷数据对象已存在,则按序将等待队列中所有写请求待写入数据组装成一个完整的数据buff,并写入目标卷数据对象。
[0026] 在一些实施例中,步骤S2中,按序读取源卷数据对象的数据,依序写入到目标卷,并按序更新迁移进度,即记录已按序完成源卷第N个数据对象的迁移,以便断点续传。
[0027] 本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时能实现上述的基于分布式存储的卷数据在线迁移方法。
[0028] 本发明具有如下有益效果:
[0029] 本发明通过在线建立源卷与目标卷间的迁移关系和IO调度策略以及将前台写业务在线智能路由至源卷或目标卷执行,本发明在迁移数据期间将业务写请求仅路由至目标卷写入,有效避免了业务数据同步写源卷和目标卷的写放大和存储系统资源的浪费,同时也减少了后台任务给予存储集群的压力,使之可更好的为用户前台业务提供高效服务,也为用户节约了存储和生产成本。

附图说明

[0030] 图1是背景技术中的现有技术Ceph克隆卷数据对象的首次读写IO流程图;
[0031] 图2是本发明实施例中的基于分布式存储的卷数据在线迁移方法流程图;
[0032] 图3是本发明实施例中的迁移准备阶段的流程时序图;
[0033] 图4是本发明实施例中的前台业务写的流程时序图;
[0034] 图5是本发明实施例中的前台业务读的流程时序图。

具体实施方式

[0035] 以下对本发明的实施方式做详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
[0036] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多该特征。在本发明实施例的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0037] 参考图2,本发明实施例的卷数据在线迁移主要包含如下三个阶段:
[0038] 首先,接收迁移指令,迁移准备阶段:根据迁移指令获取和创建迁移任务,并在线建立源卷与目标卷间的在线迁移关系和修改IO调度策略,使得用户前台业务IO可智能地被正确路由至源卷或目标卷上执行,始终保证用户业务的持续在线;
[0039] 然后,迁移数据阶段:将源卷所有数据对象按序迁移至目标卷,并按序更新迁移进度,以便支持断点续传。
[0040] 最后,迁移完成阶段:删除源卷和迁移任务。
[0041] 在本实施例中,在线建立源卷与目标卷间的在线迁移关系,并悬挂IO,将已接收业务请求全部调度执行后,在线修改IO调度策略,再解除悬挂IO,可保证用户业务持续在线、不中断;迁移数据时,依据最新的IO调度策略,业务请求会被智能地路由到目标卷进行处理,保证业务数据仅写入目标卷,可有效避免数据同步写入源卷和目标卷的写放大和存储系统资源浪费等缺点;迁移数据期间,前台业务写和后台迁移写目标卷时,把目标卷数据对象存在与否的检查和写目标卷数据对象作为一个事务进行原子操作,并结合类Copy‑Up方法来对前台业务写目标卷进行写时复制处理,保证前台业务写和后台数据迁移写的互斥,确保用户业务数据的正确性。
[0042] 一、迁移准备
[0043] 参考图3,根据从迁移指令获取到的任务信息,创建迁移任务和目标卷,并复制拷贝源卷的元数据。然后利用订阅发布机制,通知源卷客户端在线建立与目标卷间的在线迁移关系,接着悬挂住后续到来的业务IO请求,待IO等待队列中已接收到的请求(悬挂IO前接收到的请求)全部被调度执行后修改IO调度策略,最后解除对业务IO的悬挂,从而在保证用户业务不中断的情况下完成迁移任务的准备工作;悬挂IO前所接收业务路由至源卷执行,解除悬挂IO后所接收业务路由至目标卷执行。
[0044] 在进行迁移准备期间,悬挂业务IO前后,用户业务IO会依据IO调度策略被正确路由至源卷或目标卷上执行(即IO调度策略修改前,业务IO均被路由至源卷执行,反之,业务IO则被路由至目标卷执行)。而悬挂业务IO期间,由于悬挂时间极其短暂,用户是几乎无感的。因此,用户业务是持续在线且保持着良好连续性的。
[0045] 迁移准备的处理逻辑如下:
[0046] (1)根据迁移指令获取迁移任务元数据,据此创建迁移任务和目标卷,并复制拷贝源卷的元数据到目标卷;
[0047] (2)通知源卷客户端在线建立与目标卷间的在线迁移关系,并悬挂IO且等待已接收的业务请求全部被调度执行后修改IO调度策略,最后解除IO悬挂;
[0048] 二、迁移数据
[0049] 按序读取源卷数据对象的数据,依序写入到目标卷,并按序更新迁移进度——即记录已按序完成源卷第N个数据对象的迁移——以便断点续传。
[0050] 后台迁移源卷数据对象写入目标卷时,把目标卷数据对象不存在的检查和写源卷数据对象数据至目标卷数据对象作为一个事务进行原子操作(不可被中断的一个或一系列操作)。如果事务执行结果为成功或者目标卷数据对象已存在,均视本次迁移源卷数据对象到目标卷成功。
[0051] 迁移数据期间,前台业务写会被路由至目标卷执行,在写目标卷时,把目标卷数据对象存在的检查和前台业务写目标卷数据对象封装到一个事务中进行原子操作。如果事务执行结果为目标卷数据对象不存在,则采用类Copy‑Up方法进行写时复制处理:
[0052] a.读取源卷数据对象的全部数据;
[0053] b.将本次写请求和读取源卷数据对象全部数据期间接收到的新的写请求按序压入等待队列;
[0054] c.把目标卷数据对象不存在的检查和写源卷数据对象数据至目标卷数据对象作为一个事务进行原子处理;
[0055] d.若事务执行结果为成功或目标卷数据对象已存在,则按序将等待队列中所有写请求待写入数据组装成一个完整的数据buff,并写入目标卷数据对象;
[0056] 因此,通过把目标卷数据对象存在与否的检查和向目标卷数据对象写入数据作为一个事务进行原子操作,并结合类Copy‑Up方法的写时复制处理,保证了目标卷的后台迁移写与前台业务写的互斥,保障业务数据的正确性。
[0057] 另外,在迁移数据期间,如果前台业务读IO到来,则直接读取目标卷对应数据对象;如果目标卷数据对象不存在,则再路由至源卷读取源卷对应数据对象。
[0058] 三、迁移完成
[0059] 将源卷所有数据对象均按序成功迁移写入目标卷后,则可删除源卷和迁移任务。至此迁移任务完成。
[0060] 由上,在前台业务写与后台数据迁移写并发情况下,前台业务写与前台业务读的处理方法如下:
[0061] 参考图4,在前台业务写与后台数据迁移写并发情况下,前台业务写处理逻辑如下:
[0062] (1) 若在迁移准备悬挂IO前,接收到的前台业务写请求,则被路由至源卷执行,直接将数据写入源卷;
[0063] (2) 若在迁移准备悬挂IO后,接收到的前台业务写请求,则被路由至目标卷执行,在向目标卷写数据时,把目标卷数据对象存在的检查和写目标卷数据对象作为一个事务进行原子操作:
[0064] 如果事务执行结果为目标卷数据对象不存在,则采用类Copy‑Up方法来进行写时复制处理:
[0065] a.读取源卷数据对象的全部数据;
[0066] b.将本次写请求和读取源卷数据对象全部数据期间接收到的新的写请求按序压入等待队列;
[0067] c.把目标卷数据对象不存在的检查和写源卷数据对象数据至目标卷数据对象作为一个事务进行原子操作;
[0068] d.若事务执行结果为成功或目标卷数据对象已存在,则按序将等待队列中所有写请求待写入数据组装成一个数据buff,并写入目标卷数据对象。
[0069] 参考图5,前台业务读与后台数据迁移并发情况下,前台业务读的处理逻辑如下:
[0070] (1) 若在迁移准备悬挂IO前,接收到的业务读请求,则被路由至源卷执行,直接从源卷读取数据;
[0071] (2) 若在迁移准备悬挂IO后,接收到的业务读请求,则被路由至目标卷执行:
[0072] 如果待读取的目标卷数据对象不存在,则从源卷读取对应数据对象的数据;
[0073] 如果待读取的目标卷数据对象已存在,则直接读取目标卷对应数据对象的数据。
[0074] 上述业务、前台业务、用户业务、用户前台业务,均表达的是用户业务的含义。
[0075] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0076] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0077] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0078] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0079] 以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。在本说明书的描述中,参考术语“一种实施例”、“一些实施例”、“优选实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管已经详细描述了本发明的实施例及其优点,但应当理解,在不脱离专利申请的保护范围的情况下,可以在本文中进行各种改变、替换和变更。