CN117707750A - 数据迁移方法、装置、设备、存储介质和计算机程序产品 - Google Patents

数据迁移方法、装置、设备、存储介质和计算机程序产品 Download PDF

Info

Publication number
CN117707750A
CN117707750A CN202211102024.9A CN202211102024A CN117707750A CN 117707750 A CN117707750 A CN 117707750A CN 202211102024 A CN202211102024 A CN 202211102024A CN 117707750 A CN117707750 A CN 117707750A
Authority
CN
China
Prior art keywords
target
read
write request
storage block
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211102024.9A
Other languages
English (en)
Inventor
葛凯凯
陈鹏
罗韩梅
张智
罗维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211102024.9A priority Critical patent/CN117707750A/zh
Publication of CN117707750A publication Critical patent/CN117707750A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据存储和读写操作,具体涉及一种数据迁移方法、装置、计算机设备、存储介质和计算机程序产品。该方法包括:存储设备向操作终端发送迁移指令;操作终端对针对源存储块的读写请求进行一致性冻结处理;在一致性冻结处理完成后,存储设备在目标存储池中创建空的目标存储块;向操作终端发送指向目标存储块的目标标识,操作终端基于目标标识切换数据流指向,并解除一致性冻结。针对操作终端基于新的数据流指向发起的目标读写请求,在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,响应目标读写请求。本申请可以实现存储库的跨池热迁移。

Description

数据迁移方法、装置、设备、存储介质和计算机程序产品
技术领域
本申请涉及计算机网络技术领域,特别是涉及一种数据迁移方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
分布式存储系统通常是由多台部署有分布式存储软件的存储设备组成存储资源池,操作终端通过网络访问存储设备。块存储是分布式存储服务的一种存储方式,而池是作为块存储的逻辑管理单元。分布式存储系统在长时间使用后,池的存储容量可能会达到上限。为了均衡不同池各自的存储容量,需要进行存储块的迁移。
在相关技术中,在实现存储块迁移时,需要先断开操作终端与源存储块之间的通信连接,待源存储块的数据均迁移到目标存储块之后,再建立操作终端与目标存储块间的通信连接。因数据迁移需要断开通信连接,从而会导致数据访问服务暂停,极大影响业务处理。
发明内容
基于此,有必要针对上述技术问题,提供一种数据迁移方法、装置、计算机设备、存储介质和计算机程序产品。
一方面,本申请提供了一种数据迁移方法,该方法包括:
确定源存储池和目标存储池,从源存储池中确定待迁移的源存储块;
向操作终端发送迁移指令,迁移指令用于指示操作终端对针对源存储块的读写请求进行一致性冻结处理;
在一致性冻结处理完成后,在目标存储池中创建空的目标存储块;
向操作终端发送指向目标存储块的目标标识,目标标识用于指示操作终端基于目标标识切换数据流指向,并解除一致性冻结;
针对操作终端基于新的数据流指向发起的目标读写请求,在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
另一方面,本申请还提供了一种数据迁移装置,该装置包括:
确定模块,用于确定源存储池和目标存储池,从源存储池中确定待迁移的源存储块;
发送模块,用于向操作终端发送迁移指令,迁移指令用于指示操作终端对针对源存储块的读写请求进行一致性冻结处理;
创建模块,用于在一致性冻结处理完成后,在目标存储池中创建空的目标存储块;
切换模块,用于向操作终端发送指向目标存储块的目标标识,目标标识用于指示操作终端基于目标标识切换数据流指向,并解除一致性冻结;
数据迁移模块,用于针对操作终端基于新的数据流指向发起的目标读写请求,在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
另一方面,本申请还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述数据迁移方法中的步骤。
另一方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述数据迁移方法中的步骤。
另一方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述数据迁移方法的步骤。
上述数据迁移方法、装置、计算机设备、存储介质和计算机程序产品,存储设备向操作终端发送迁移指令,以指示操作终端对针对源存储块的读写请求进行一致性冻结处理。在一致性冻结处理完成后,在目标存储池中创建空的目标存储块,存储设备向操作终端发送指向目标存储块的目标标识,操作终端基于目标标识切换数据流指向,并解除一致性冻结,再基于新的数据流指向发起目标读写请求。存储设备基于目标读写请求,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。因是先在目标存储池中创建空的目标存储块,而未直接将源存储块中的所有数据全部直接迁移到目标存储块中。这样,能完成秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。此外,通过上述秒级切换,以及将原指向源存储块的读写请求切换为指向目标存储块的读写请求,可使得整个数据迁移过程,不需要先断开操作终端与源存储块间的通信连接,再数据迁移完毕后再建立操作终端与目标存储块间的通信连接。这样,数据迁移过程不需要暂停业务处理,保证用户业务层面上的无感迁移。
此外,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
另一方面,本申请提供了一种数据迁移方法,该方法包括:
接收存储设备发送的迁移指令,并根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理;
在一致性冻结处理完成后,向存储设备发送处理完成消息,处理完成消息用于指示存储设备在目标存储池中创建空的目标存储块;
接收存储设备反馈的指向目标存储块的目标标识,基于目标标识切换数据流指向,并解除一致性冻结处理;
基于新的数据流指向向存储设备发起目标读写请求,目标读写请求用于指示存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
另一方面,本申请还提供了一种数据迁移装置,该装置包括:
冻结处理模块,用于接收存储设备发送的迁移指令,并根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理;
发送模块,用于在一致性冻结处理完成后,向存储设备发送处理完成消息,处理完成消息用于指示存储设备在目标存储池中创建空的目标存储块;
切换模块,用于接收存储设备反馈的指向目标存储块的目标标识,基于目标标识切换数据流指向,并解除一致性冻结处理;
数据迁移模块,用于基于新的数据流指向向存储设备发起目标读写请求,目标读写请求用于指示存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
另一方面,本申请还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述数据迁移方法中的步骤。
另一方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述数据迁移方法中的步骤。
另一方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述数据迁移方法的步骤。
上述数据迁移方法、装置、计算机设备、存储介质和计算机程序产品,操作终端接收存储设备发送的迁移指令,并根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理。在一致性冻结处理完成后,操作终端向存储设备发送处理完成消息,处理完成消息用于指示存储设备在目标存储池中创建空的目标存储块。操作终端接收存储设备反馈的指向目标存储块的目标标识,基于目标标识切换数据流指向,并解除一致性冻结处理。操作终端基于新的数据流指向向存储设备发起目标读写请求,目标读写请求用于指示存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。因是先在目标存储池中创建空的目标存储块,而未直接将源存储块中的所有数据全部直接迁移到目标存储块中。这样,能完成秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。此外,通过上述秒级切换,以及将原指向源存储块的读写请求切换为指向目标存储块的读写请求,可使得整个数据迁移过程,不需要先断开操作终端与源存储块间的通信连接,再数据迁移完毕后再建立操作终端与目标存储块间的通信连接。这样,数据迁移过程不需要暂停业务处理,保证用户业务层面上的无感迁移。
此外,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
附图说明
图1为一个实施例中数据迁移方法的应用环境图;
图2为一个实施例中数据迁移方法的流程示意图;
图3为一个实施例中数据迁移方法的流程示意图;
图4为一个实施例中一致性冻结的处理过程示意图;
图5为一个实施例中飞行读写请求的回调过程示意图;
图6为一个实施例中数据迁移方法的流程示意图;
图7为一个实施例中数据迁移方法的整体框架示意图;
图8为一个实施例中冻结命令流的传输示意图;
图9为一个实施例中冻结读写请求出队列的过程示意图;
图10为一个实施例中完成所有飞行读写请求处理的过程示意图;
图11为一个实施例中延迟迁移的过程示意图;
图12为一个实施例中切换数据流指向的示意图;
图13为一个实施例中解除一致性冻结的示意图;
图14为一个实施例中目标读请求的处理过程示意图;
图15为一个实施例中目标写请求的处理过程示意图;
图16为一个实施例中数据迁移装置的结构框图;
图17为一个实施例中数据迁移装置的结构框图;
图18为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
首先,在对本申请的数据迁移方法进行详细阐述之前,先对本申请实施例中涉及到的部分相关名词进行简要解释说明:
Ceph:指的是开源的分布式存储系统,能够同时提供块对象、文件和块存储服务,本申请的数据迁移方法可以适用于Ceph系统。
RBD(RADOS Block Device):指的是一种有序的字节序块,是Ceph常用存储服务,本申请中涉及到的存储块可以具体为RBD。Ceph的块存储是基于RADOS的,从而可以借助RADOS的快照,复制和一致性等特性,以提供快照、克隆和备份等操作。
Librbd:指的是提供存储的库,用于实现RBD接口,通过Librbd可以实现对存储块进行访问。
Pool(池):指的是Ceph存储数据时的逻辑分组,可对应于本申请中的存储池。
下面对本申请实施例所提供的数据迁移方法进行详细说明:
在一些实施例中,本申请实施例提供的数据迁移方法,可以应用于如图1所示的应用环境中。其中,操作终端102可通过有线或者无线网络,直接或者间接地与存储设备104进行通信,本申请实施例对此不作具体限定。另外,操作终端102与存储设备104可以协同用于执行本申请实施例中的数据迁移方法,如存储设备104可以向操作终端102发送迁移指令,终端102根据迁移指令对针对源存储块的读写请求进行一致性冻结。操作终端104在一致性冻结处理完成之后,存储设备104在目标存储池中创建空的目标存储块。存储设备104向操作终端102发送目标存储块的目标标识,操作终端102基于目标标识切换数据流指向,并解除一致性冻结。存储设备104在接收到操作终端102基于新的数据流指向发起的目标读写请求,在目标存储块中未查找到目标读写请求指定的目标数据的情况下,存储设备104从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
其中,存储设备104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。操作终端102可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。当然,考虑到服务器之间可能需要互相访问数据,操作终端102也可以服务器,本申请实施例对此不作具体限定。另外,操作终端102以及存储设备104可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一些实施例中,结合上述名词解释和实施环境说明,如图2所示,提供了一种数据迁移方法。以该方法应用于存储设备为例进行说明,包括以下步骤:
步骤202、确定源存储池和目标存储池,并从源存储池中确定待迁移的源存储块。
其中,存储块与存储池均可以是虚拟存储空间的概念。实际实施中分布式存储系统中可以存在多台提供物理存储空间的存储设备,分布式存储系统可以对这些物理存储空间进行虚拟化,从而创建出虚拟存储空间与物理存储空间进行映射,这样可以便于空间拓展,也同时提供非本地的存储服务。本步骤中确定源存储池和目标存储池,可以是在整个分布式存储系统范围内的所有存储池中确定,也可以某一具体存储设备涉及到的所有存储池中确定,本申请实施例对此不作具体限定。
存储池与存储块可以是虚拟存储空间的上下级概念。一个存储池可以包括多个存储块,在本步骤主要是从源存储池中确定待迁移的源存储块。其中,存储设备确定的源存储池与源存储池中的源存储块相应的数量可以是一个,也可以是多个,本申请实施例对此不作具体限定。为了便于解释说明,本申请实施例以确定一个源存储池,并确定源存储池中的一个待迁移的源存储块为例。
本申请实施例之所以要进行数据迁移,主要是为了均衡不同存储池的负载程度。由此,存储设备在确定源存储池和目标存储池时,可以按照存储池的负载程度,将负载程度较高的存储池作为待迁移的源存储池,将负载程度较低的存储池作为目标存储池。与此同时,存储设备可将源存储池中负载程度较高的存储块作为待迁移的源存储块。
步骤204、向操作终端发送迁移指令,迁移指令用于指示操作终端对针对源存储块的读写请求进行一致性冻结处理。
存储设备在确定待迁移的源存储块之后,存储设备可以告知操作终端进行迁移前的准备工作。其中,操作终端主要用于通过读写请求向存储设备发起读写访问。可以理解的是,在发起对源存储块的迁移时,操作终端可能正在进行对源存储块的访问,也即正在处理针对源存储块的读写请求。因直接中断读写请求,会导致处理的数据不能落地存储,从而操作终端需要先将已开始处理且还没有处理完的读写请求处理完,并同时不再受理已创建但还未开始处理的读写请求或者后续新创建的读写请求,也即操作终端需要针对源存储块的读写请求进行一致性冻结处理,也即对应于在前说明的迁移前准备工作。
步骤206、在一致性冻结处理完成后,在目标存储池中创建空的目标存储块。
操作终端在完成一致性冻结处理后,此时操作终端不会再受理读写请求。此时,操作终端可以发处理完成消息告知存储设备,从而存储设备可以获知操作终端一致性冻结处理完成。由此,存储设备可以开始准备对源存储块的迁移。既然需要实现跨池存储块的迁移,自然需要对目标存储池进行扩展,也即在目标存储池中新创建一个目标存储快。本步骤中空的目标存储块指的是还未分配物理存储空间的存储块,空的目标存储块可以是基于源存储块的元数据进行创建,如基于源存储块中数据块的大小、源存储块的大小和已启用的功能特性等。当然,也可以基于预设参数进行创建,本申请实施例对此不作具体限定。
需要说明的是,本步骤创建空的目标存储块实际上还没有作数据迁移,但空的目标存储块与源存储块之间可以存在映射关系,以便于后续需要实际进行数据迁移时,基于该映射关系,存储设备可以从源存储块相应的物理存储空间中读取数据,基于读取到的数据临时为空的目标存储块分配相应大小的物理存储空间,并将读取到的数据回填至分配的物理存储空间,以实现数据的迁移。
步骤208、向操作终端发送指向目标存储块的目标标识,目标标识用于指示操作终端基于目标标识切换数据流指向,并解除一致性冻结。
存储设备在目标存储池中创建空的目标存储块之后,存储设备可以向操作终端发送指向目标存储块的目标标识,以告知操作终端哪个存储块作为迁移结果。需要说明的是,由于存储块是被包括在存储池中的,从而实际实施中目标标识可以对应于两层指向,也即指向目标存储池中的目标存储块。操作终端在接收到目标标识后,可以将基于目标标识切换数据流指向。
其中,数据流指向主要指的是读写请求的数据流指向,也即操作终端的读写请求究竟是针对的哪个存储块。在本步骤中,操作终端可以解除一致性冻结,并将一致性冻结前已创建但还未开始处理、且针对源存储块的读写请求,切换为针对目标存储块;并将一致性冻结之后新创建的针对源存储块的读写请求,也切换为针对目标存储块。
步骤210、针对操作终端基于新的数据流指向发起的目标读写请求,在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
其中,基于新的数据流指向发起的目标读写请求,可以指的是操作终端在一致性冻结前已创建但还未开始处理、且针对源存储块的读写请求,也可以指的是一致性冻结之后新创建的针对源存储块的读写请求。存储设备在接收到目标读写请求之后,可以先在目标存储块相应的物理存储空间中查找目标读写请求所指定的数据。在目标存储块相应的物理存储空间中未查找到目标读写请求所指定的数据的情况下,存储设备可以先从源存储块中获取目标数据,为该目标数据相应分配从属于目标存储块的物理存储空间,并将该目标数据复制到该物理存储空间中,并对目标读写请求进行相应的响应。
上述数据迁移方法,存储设备向操作终端发送迁移指令,以指示操作终端对针对源存储块的读写请求进行一致性冻结处理。在一致性冻结处理完成后,在目标存储池中创建空的目标存储块,存储设备向操作终端发送指向目标存储块的目标标识,操作终端基于目标标识切换数据流指向,并解除一致性冻结,再基于新的数据流指向发起目标读写请求。存储设备基于目标读写请求,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。因是先在目标存储池中创建空的目标存储块,而未直接将源存储块中的所有数据全部直接迁移到目标存储块中。这样,能完成秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。此外,通过上述秒级切换,以及将原指向源存储块的读写请求切换为指向目标存储块的读写请求,可使得整个数据迁移过程,不需要先断开操作终端与源存储块间的通信连接,再数据迁移完毕后再建立操作终端与目标存储块间的通信连接。这样,数据迁移过程不需要暂停业务处理,保证用户业务层面上的无感迁移。
此外,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
在一些实施例中,确定源存储池和目标存储池,包括:
检测各存储池的容量使用程度、以及读写带宽使用程度;根据各存储池的容量使用程度或者读写带宽使用程度中的至少一项,确定各存储池的负载程度;根据各存储池的负载程度,从多个存储池中选取源存储池和目标存储池,其中,目标存储池的负载程度低于源存储池。
可以理解的是,存储池如果是虚拟存储空间并映射至物理存储空间,则存储池同样对应有容量大小,而容量使用程度可以通过容量使用占比进行表示。同理,存储块也可以有容量使用程度,并通过容量使用占比进行表示。而读写带宽使用程度,则表示的是在固定时长内可传输的数据总量。存储设备可以用读写带宽使用占比表示读写带宽使用程度,可以根据读写请求所请求的数据量调节读写带宽。
具体地,存储设备可检测当前时刻下各存储池的容量使用程度、以及读写带宽使用程度。其中,检测主要是为发现可以作为迁移对象的源存储块以及可以作为迁移目标的目标存储块。存储设备可以周期性地检测,检测频率可根据需求进行设置,本申请实施例对此不作具体限定。
针对某一存储池,存储设备可仅根据该存储池的容量使用程度,确定该存储池的负载程度,如可将容量使用占比直接作为该存储池的负载程度。存储设备还可仅根据该存储池的读写带宽使用程度,确定该存储池的负载程度,如可将读写带宽使用占比直接作为该存储池的负载程度。当然,存储设备还可以同时根据容量使用程度和读写带宽使用程度,确定该存储池的负载程度,如对容量使用程度和读写带宽使用程度进行加权求和,确定该存储池的负载程度。
在确定各存储池的负载程度之后,存储设备可根据各存储池的负载程度,选取源存储池和目标存储池。具体地,存储设备可确定出负载程度大于第一负载程度的存储池,作为源存储池。此外,还确定出负载程度小于第二负载程度的存储池,作为目标存储池。其中,第一负载程度高于第二负载程度。通过上述选取过程,可以从所有存储池中选出负载程度较高的源存储池和负载程度较低的目标存储池。
需要说明的是,在前提及的“从源存储池中确定待迁移的源存储块”的过程,也可以使用存储块的容量使用程度或者读写带宽使用程度中的至少一项,从源存储池的多个存储块中确定源存储块。该过程主要是选取负载程度较高的源存储块,具体过程可参考源存储池的选取过程。
另外,选取源存储池的数量可以不仅限于一个,只需保证每一源存储池均对应确定有目标存储池即可。同理,选取源存储块的数量可以不仅限于一个,只需保证每一源存储块均对应确定有目标存储块即可,后续过程可以异步对多个源存储块进行数据迁移。
在上述实施例中,存储设备根据容量使用程度或读写带宽使用程度中的至少一项,确定各存储池的负载程度,并根据负载程度,从多个存储池中选取负载程度较高的源存储池和负载程度较低的目标存储池。由于选取源存储池与源存储块是基于负载程度自动确定的,不需要用户去干预选择,且后续确定源存储块后,整个迁移过程不需要断开并重新建立操作终端与存储块间的通信连接,更不需要用户协助操作断开源存储块与操作终端间的通信连接,从而数据迁移过程可减少人干预工作量,迁移过程更加高效。
在一些实施例中,根据各存储池的负载程度,从多个存储池中选取源存储池和目标存储池,包括:对各存储池的负载程度按照从大至小进行排序;将排序序号小于第一预设序号的存储池作为源存储池,将排序序号小于第二预设序号的存储池作为目标存储池。
具体地,上述过程主要是按照负载程度对多个存储池进行排序,选取负载程度较大的作为源存储池,选取负载程度较小的作为目标存储池。其中,通过对第一预设序号进行设置,可以使得选取的源存储池的数量为1个,也可以为多个,而对第二预设序号的设置也同理,本申请实施例对此不作具体限定。
在上述实施例中,存储设备按照负载程度对多个存储池进行排序,并通过第一预设序号与第二预设序号进行筛选。由于选取源存储池与源存储块是基于负载程度自动确定的,不需要用户去干预选择,且后续确定源存储块后,也不需要用户协助操作断开源存储块与操作终端间的通信连接,从而数据迁移过程可减少人干预工作量,迁移过程更加高效。
在一些实施例中,迁移指令具体用于指示操作终端停止处理针对源存储块的未启动读写请求,并继续处理针对源存储块的飞行读写请求,并在所有飞行读写请求处理完成后确定一致性冻结处理完成,其中,飞行读写请求为已启动但未处理完成的读写请求。
具体地,存储设备向操作终端发送的迁移指令,可以包括指向源存储池中源存储块的源标识。操作终端在接收到迁移指令后,可停止处理针对源存储块的未启动读写请求。其中,未启动读写请求指的是已创建但还未开始处理的读写请求。与此同时,操作终端继续处理针对源存储块的飞行读写请求,在所有飞行读写请求都处理完成后,操作终端即可确定一致性冻结处理完成。此时,操作终端可以发送处理完成消息至存储设备。
在上述实施例中,存储设备发送迁移指令至操作终端,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证存储设备正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
在一些实施例中,在目标存储池中创建空的目标存储块,包括:获取源存储块的元数据;基于源存储块的元数据,在目标存储池中创建与源存储块间具有映射关系,但未分配物理存储空间的空的目标存储块。
具体地,元数据可以理解为存储块的描述信息,可以包括存储块中数据块的大小、存储块整体的大小以及已启用的功能特性等,本申请实施例对此不作具体限定。基于元数据,存储设备可以创建出一个未分配物理存储空间的空的目标存储块,可以理解为克隆出一个新的目标存储快。其中,源存储块的元数据可以记录着源存储块与其它存储块间的映射关系。而目标存储块不会继承这些映射关系,而是会建立与源存储块间的映射关系。
在上述实施例中,存储设备通过基于源存储块的元数据,创建与源存储块间具有映射关系,但未分配物理存储空间的空的目标存储块。因不需要等待源存储块的数据均迁移至目标存储块,而是在后续读写过程中边读写边迁移,从而创建空的目标存储块即可完成瞬时迁移,省去了迁移等待时间。
在一些实施例中,基于源存储块的元数据,在目标存储池中创建与源存储块间具有映射关系,但未分配物理存储空间的空的目标存储块,包括:基于源存储块的元数据创建源存储块的快照;在目标存储池中创建映射至快照但未分配物理存储空间的目标存储块。
其中,快照指的是源存储块在某一时间点的一致性数据副本。存储设备基于源存储块的元数据所创建的快照,主要是数据副本,这区别于后面目标存储块。目标存储块是可以作为读写请求的数据访问对象,而快照只是数据副本,不作为读写请求的数据访问对象。基于元数据创建快照,主要是基于源存储块的大小和数据块的大小等数据进行创建。
需要说明的是,实际实施过程中,存储设备在创建快照时,可以同时选择复制源存储块的数据,以形成快照的数据副本。当然,存储设备在创建快照时,也可以选择只创建一个空的快照。也即,创建快照的同时不通过数据复制形成快照的数据副本,而是在源存储块中数据发生更新之前,复制待更新数据更新之前的数据内容,以形成快照的数据副本。
在上述实施例中,存储设备通过基于源存储块的元数据,创建快照,再创建映射至快照但未分配物理存储空间的空的目标存储块。因不需要等待源存储块的数据均迁移至目标存储块,而是在后续读写过程中边读写边迁移,从而创建空的目标存储块即可完成瞬时迁移,省去了迁移等待时间。另外,基于快照创建目标存储快,可以使得目标存储块中的数据有明确的数据版本依据。另外,可以保证源存储块的数据安全性,避免因直接使用源存储块创建目标存储块,而导致源存储块数据被篡改,以保证源存储块的数据安全性。
在一些实施例中,在目标读写请求为目标读请求的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求,包括:遍历源存储块的物理存储空间,以获取由目标读请求中的偏移量所指定的目标数据,并将获取到的目标数据复制到目标存储块中;响应于目标读操作,向操作终端返回目标数据。
具体地,存储块可以映射至一段物理存储空间。或者,源存储块可以为虚拟存储空间,从而也可以映射至多段物理存储空间。存储块中可以包括多个最小划分单元,每一最小划分单元均对应着一段存储空间,各段存储空间均有起始地址和结束地址。由此,存储设备在获得目标存储块的起始地址后,基于目标读请求中的偏移量即可从目标存储块的起始地址向后遍历,查找出需要读取的数据的起始地址。由此,存储设备可以读取该起始地址后的所有数据,也可以仅读取该起始地址后的至少一个最小划分单元的数据。
结合在前实施例的内容可知,存储设备在接收到操作终端发起的目标读写请求后,先是在目标存储块中查找目标读写请求指定的目标数据。其中,该查找方式也可以参考上面基于偏移量的查找过程。在目标存储块中没有查找到目标数据后,再从源存储块中查找。
需要说明的是,在前实施例中有提及可以先基于源存储块的元数据创建快照,再基于快照创建目标存储块。若在创建快照时,不是创建空的快照,而是同时创建了快照的数据副本;或者,在源存储块的数据存在更新时,复制了更新前的数据以形成快照相应的数据副本。由此,则在目标存储块中没有查找到目标数据后,可以先从快照的数据副本中查找目标数据。在快照中没有查找到目标数据后,可以再从源存储块中查找目标数据。存储设备在获取到目标数据后,可以将目标数据复制到目标存储块中。与此同时,针对操作终端发起的目标读操作,存储设备可以将目标数据返回至操作终端,以响应操作终端的目标读请求。
在上述实施例中,因是先在目标存储池中创建空的目标存储块,未直接将源存储块中的所有数据全部直接迁移到目标存储块中,而是在接收到目标读请求时,在目标存储块中未查找到目标读请求指定的目标数据的情况下,再从源存储块遍历得到目标数据,并将目标数据迁移到目标存储块中。这样,可以实现秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。
在一些实施例中,在目标读写请求为目标写请求的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求,包括:遍历源存储块的物理存储空间,以获取由目标写请求中的偏移量所指定的目标数据;响应于目标写请求,基于目标写请求中的修改信息对获取到的目标数据进行修改,得到更新的目标数据,并将更新的目标数据复制到目标存储块中。
具体地,基于偏移量遍历目标数据的过程可参考在前实施例的内容。区别于读请求仅读取目标数据,写请求通常需要对之前存储的目标数据进行修改。由此,存储设备在目标存储块中查找到目标读写请求指定的目标数据的情况下,可以直接对目标存储块中的目标数据进行修改。反之,存储设备可以先从源存储块中获取目标数据,在基于目标数据进行修改之后,可以为目标存储块分配相应的物理存储空间,以将更新的目标数据复制到目标存储块。
同样需要说明的是,在前实施例中有提及可以先基于源存储块的元数据创建快照,再基于快照创建目标存储块。若在创建快照时,不是创建空的快照,而是同时创建了快照的数据副本;或者,在源存储块的数据存在更新时,复制了更新前的数据以形成快照相应的数据副本。由此,则在目标存储块中没有查找到目标数据后,可以先从快照的数据副本中查找目标数据。在快照中没有查找到目标数据后,可以再从源存储块中查找目标数据。
在上述实施例中,因是先在目标存储池中创建空的目标存储块,未直接将源存储块中的所有数据全部直接迁移到目标存储块中,而是在接收到目标写请求时,在目标存储块中未查找到目标写请求指定的目标数据的情况下,再从源存储块遍历得到目标数据,并基于目标写请求中的修改信息对目标数据进行修改,将更新后的目标数据迁移到目标存储块中。这样,可以实现秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。
在一些实施例中,该方法还包括:在任一目标读写请求均能从目标存储块中查找到相应目标读写请求所指定的目标数据的情况下,确定将源存储块中的数据向目标存储块中迁移完毕;在源存储块中的数据全部迁移完毕后,释放源存储块中的物理存储空间。
具体地,存储设备在完成对源存储块中所有数据的迁移过程的情况下,可以产生迁移完成消息,从而以确定迁移完毕。或者,可以设定一个预设迁移时长,在超过预设迁移时长的情况下,同样认为迁移完毕。在源存储块中的数据全部迁移完毕之后,因源存储块可能需要存储其它数据,或者该源存储块可能会被取消设置而不复存在,从而存储设备可以释放源存储块中的物理存储空间。其中,在源存储块为虚拟存储空间的情况下,释放源存储块中的物理存储空间可以指的是取消源存储块与物理存储空间之间的映射关系。
在上述实施例中,存储设备在完成对源存储块中的数据迁移后,可以对源存储块的物理存储空间进行释放,从而使得物理存储空间能够得到更好的配置,提高空间利用率。
上述过程主要是在存储设备侧对数据迁移方法进行解释说明,实际实施过程中,存储设备侧同样具有相应的执行过程。由此,在一些实施例中,结合上述名词解释、技术解释和实施环境说明,如图3所示,提供了一种数据迁移方法,以该方法应用于图1中的操作终端为例进行说明,包括以下步骤:
步骤302、接收存储设备发送的迁移指令,并根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理。
具体地,存储设备在确定待迁移的源存储块之后,存储设备可以告知操作终端进行迁移前的准备工作。由此,操作终端可以接收存储设备发送的迁移指令,该迁移指令可以包括用于指向源存储池中源存储块的源标识。
可以理解的是,在发起对源存储块的迁移时,操作终端可能正在进行对源存储块的访问,也即正在处理针对源存储块的读写请求。因直接中断读写请求,会导致处理的数据不能落地存储,从而操作终端需要先将已开始处理且还没有处理完的读写请求处理完,并同时不再受理已创建但还未开始处理的读写请求或者后续新创建的读写请求,也即操作终端需要针对源存储块的读写请求进行一致性冻结处理。
步骤304、在一致性冻结处理完成后,向存储设备发送处理完成消息,处理完成消息用于指示存储设备在目标存储池中创建空的目标存储块。
操作终端在完成一致性冻结处理后,此时操作终端不会再受理读写请求。此时,操作终端可以发处理完成消息告知存储设备,从而存储设备可以获知操作终端一致性冻结处理完成。由此,存储设备可以开始准备对源存储块的迁移。既然需要实现跨池存储块的迁移,自然需要对目标存储池进行扩展,也即在目标存储池中新创建一个目标存储快。本步骤中空的目标存储块指的是还未分配物理存储空间的存储块,空的目标存储块可以是基于源存储块的元数据进行创建,如基于源存储块中的数据块大小、源存储块的大小和已启用的功能特性等。
步骤306、接收存储设备反馈的指向目标存储块的目标标识,基于目标标识切换数据流指向,并解除一致性冻结处理。
存储设备在目标存储池中创建空的目标存储块之后,存储设备可以向操作终端发送指向目标存储块的目标标识,以告知操作终端哪个存储块作为迁移结果。需要说明的是,由于存储块是被包括在存储池中的,从而实际实施中目标标识可以对应于两层指向,也即指向目标存储池中的目标存储块。操作终端在接收到目标标识后,可以将基于目标标识切换数据流指向。
其中,数据流指向主要指的是读写请求的数据流指向,也即操作终端的读写请求究竟是针对的哪个存储块。在本步骤中,操作终端可以解除一致性冻结,并将一致性冻结前已创建但还未开始处理、且针对源存储块的读写请求,切换为针对目标存储块;并将一致性冻结之后新创建的针对源存储块的读写请求,也切换为针对目标存储块。
步骤308、基于新的数据流指向向存储设备发起目标读写请求,目标读写请求用于指示存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
其中,基于新的数据流指向发起的目标读写请求,可以指的是操作终端在一致性冻结前已创建但还未开始处理、且针对源存储块的读写请求,也可以指的是一致性冻结之后新创建的针对源存储块的读写请求。存储设备在接收到目标读写请求之后,可以先在目标存储块相应的物理存储空间中查找目标读写请求所指定的数据。在目标存储块相应的物理存储空间中未查找到目标读写请求所指定的数据的情况下,存储设备可以先从源存储块中获取目标数据,为该目标数据相应分配从属于目标存储块的物理存储空间,并将该目标数据复制到该物理存储空间中,并对目标读写请求进行相应的响应。
上述数据迁移方法,操作终端接收存储设备发送的迁移指令,并根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理。在一致性冻结处理完成后,操作终端向存储设备发送处理完成消息,处理完成消息用于指示存储设备在目标存储池中创建空的目标存储块。操作终端接收存储设备反馈的指向目标存储块的目标标识,基于目标标识切换数据流指向,并解除一致性冻结处理。操作终端基于新的数据流指向向存储设备发起目标读写请求,目标读写请求用于指示存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。因是先在目标存储池中创建空的目标存储块,而未直接将源存储块中的所有数据全部直接迁移到目标存储块中。这样,能完成秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。此外,通过上述秒级切换,以及将原指向源存储块的读写请求切换为指向目标存储块的读写请求,可使得整个数据迁移过程,不需要先断开操作终端与源存储块间的通信连接,再数据迁移完毕后再建立操作终端与目标存储块间的通信连接。这样,数据迁移过程不需要暂停业务处理,保证用户业务层面上的无感迁移。
此外,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
在一些实施例中,根据迁移指令对针对源存储池的读写请求进行一致性冻结处理,包括:根据迁移指令确定源存储池中待进行数据迁移的源存储块;停止处理针对源存储块的未启动读写请求,并继续处理针对源存储块的飞行读写请求,飞行读写请求为已启动但未处理完成的读写请求;在所有飞行读写请求处理完成后确定一致性冻结处理完成。
具体地,操作终端在接收到迁移指令后,可停止处理针对源存储块的未启动读写请求。其中,未启动读写请求指的是已创建但还未开始处理的读写请求。与此同时,操作终端继续处理针对源存储块的飞行读写请求,在所有飞行读写请求都处理完成后,操作终端即可确定一致性冻结处理完成。此时,操作终端可以发送处理完成消息至存储设备。
在上述实施例中,存储设备发送迁移指令至操作终端,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证存储设备正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
在一些实施例中,停止处理针对源存储块的未启动读写请求,并继续处理针对源存储块的飞行读写请求,包括:将冻结标识设置为冻结标记,以控制读写请求队列中的未启动读写请求不再被移动至飞行读写请求队列中;对飞行读写请求队列中的各飞行读写请求进行处理,直至飞行读写请求队列中所有飞行读写请求均处理完成。
具体地,一致性冻结处理的过程可参考图4。如图4所示,操作终端可以通过读写接受单元可以用于获取已创建的读写请求,而读写请求队列可以用于放置已创建的未启动读写请求。通过冻结模块将冻结标识设置为冻结标记,从而使得读写请求队列至不会再通过读写处理单元,移动至飞行读写请求队列中,进而控制不再启动后续已创建的读写请求。而操作终端可通过读写处理单元,对飞行读写请求队列中的各飞行读写请求进行处理,直至飞行读写请求队列中所有飞行读写请求均处理完成。
其中,上述提及的模块主要是按照操作终端中不同功能进行划分的,实际实施中可根据需求进行划分,本申请实施例对此不作具体限定。另外,冻结标识除了被设置为冻结标记之外,在解除冻结时可以被设置为解冻标记,从而使得读写请求队列中的未启动IO请求能够被移动至飞行读写请求队列中。解冻标记与冻结标记可以通过不同字符进行表示。
在上述实施例中,在确定开始迁移之前,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证存储设备正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。另外,因可以通过读写请求队列与飞行读写请求队列区分不同状态的读写请求,仅通过冻结标识控制读写请求队列中的读写请求向飞行读写请求队列中流动,从而可以提高一致性冻结处理以及后续解冻处理的效率。
在一些实施例中,飞行读写请求队列中的首个飞行读写请求设置有回调变量,对飞行读写请求队列中的各飞行读写请求进行处理,直至飞行读写请求队列中所有飞行读写请求均处理完成,包括:
对飞行读写请求队列中的各飞行读写请求进行异步处理;按照飞行读写请求队列中各飞行读写请求的排列顺序,从首个飞行读写请求开始,排序在前的飞行读写请求处理完成后,将回调变量传递至下一飞行读写请求,直至当飞行读写请求队列中最后一个飞行读写请求传递出回调变量时,确定飞行读写请求队列中所有飞行读写请求均处理完成。
具体地,上述提及的回调过程可参考图5。如图5所示,飞行读写请求队列中的首个飞行读写请求设置有回调变量。在首个飞行读写请求完成的,“完成回调”会向右传递。其中,“完成回调”即对应于回调变量。需要说明的是,飞行读写请求队列中的飞行读写请求是可以异步处理的,虽然回调过程是按照图5所示从左至右的队列顺序,但实际实施中,飞行读写请求的异步处理完成顺序不一定是队列顺序。如果某一飞行读写请求已处理完成,但回调变量还没有传递至该飞行读写请求,则该飞行读写请求可以等待上一飞行读写请求传递出回调变量。
在上述实施例中,通过为飞行读写请求队列中的首个飞行读写请求设置回调变量,并使得回调变量按照飞行读写请求队列中的排列顺序在飞行读写请求间传递,并在最后一个飞行读写请求传递出回调变量时,确定飞行读写请求队列中所有飞行读写请求均处理完成。由于基于回调移动的机制,通过只用设置一个回调变量,即可确认对飞行读写请求队列中所有飞行读写请求是否均已处理完毕,而不需要为每一飞行读写请求设置处理完成指示参数,从而可以减少代码设置变量数量,提高代码精简度。
在一些实施例中,指向目标存储块的目标标识包括目标存储池的标识信息和目标存储块的标识信息,基于目标标识切换数据流指向,包括:将用于访问源存储块的上下文代码中源存储池的标识信息调整为目标存储池的标识信息,将源存储块的标识信息调整为目标存储块的标识信息。
可以理解的是,读写请求均是通过代码实现的,而读写请求对应的与访问源存储块的相关代码可以被称呼为上下文代码。在原本用于访问源存储块的上下文代码中,作为访问对象的源存储块是通过标识信息进行指向的。进一步地,因源存储块存在于源存储池中,该上下文代码中还需要通过源存储池的标识信息指向源存储池。
而目标标识可以包括目标存储池的标识信息和目标存储块的标识信息,基于目标标识切换那数据流指向,可以将原来访问源存储块的读写请求改为访问目标存储块。由此,操作终端可以在该上下文代码中源存储池的标识信息调整为目标存储池的标识信息,也即调整为指向目标存储池。而将源存储块的标识信息调整为目标存储块的标识信息,也即调整为指向目标存储块。后续产生的原本需要访问源存储块中数据的读写请求,均会调整为去访问目标存储块中的数据。
在上述实施例中,由于仅需对上下文代码中的标识信息进行修改,即可将上下文代码中访问指向对象由源存储池调整为目标存储池,由源存储块调整为目标存储块,从而能够较为便捷地实现对数据流指向的切换。
上述实施例主要是分别从存储设备侧和操作终端侧对数据迁移方法的过程进行说明。为了便于理解,如图6所示,现同时结合存储设备侧和操作终端侧,对本申请提及的数据迁移方法进行说明,包括以下步骤:
步骤602、存储设备确定源存储池和目标存储池,并从源存储池中确定待迁移的源存储块。
步骤604、存储设备向操作终端发送迁移指令。
步骤606、操作终端根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理。
步骤608、在一致性冻结处理完成后,操作终端向存储设备发送处理完成消息。
步骤610、存储设备根据处理完成消息,确定一致性冻结处理完成,在目标存储池中创建空的目标存储块。
步骤612、存储设备向操作终端发送指向目标存储块的目标标识。
步骤614、操作终端基于目标标识切换数据流指向,并解除一致性冻结处理。
步骤616、操作终端基于新的数据流指向向存储设备发起目标读写请求。
步骤618、存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
上述数据迁移方法,存储设备向操作终端发送迁移指令,以指示操作终端对针对源存储块的读写请求进行一致性冻结处理。在一致性冻结处理完成后,在目标存储池中创建空的目标存储块,存储设备向操作终端发送指向目标存储块的目标标识,操作终端基于目标标识切换数据流指向,并解除一致性冻结,再基于新的数据流指向发起目标读写请求。存储设备基于目标读写请求,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。因是先在目标存储池中创建空的目标存储块,而未直接将源存储块中的所有数据全部直接迁移到目标存储块中。这样,能完成秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。此外,通过上述秒级切换,以及将原指向源存储块的读写请求切换为指向目标存储块的读写请求,可使得整个数据迁移过程,不需要先断开操作终端与源存储块间的通信连接,再数据迁移完毕后再建立操作终端与目标存储块间的通信连接。这样,数据迁移过程不需要暂停业务处理,保证用户业务层面上的无感迁移。
此外,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
本申请实施例提供一种应用场景,以该应用场景为操作终端向存储设备发起目标读请求为例。在进行解释说明之前,先对操作终端以及存储设备中功能模块的划分方式进行说明。具体地,功能模块的划分方式可以参考图7中的数据迁移框架示意图。在图7中,代理模块代表操作终端中基于与存储设备间的交互以实现数据迁移的功能模块。访问模块代表操作终端中负责访问存储块的功能模块,可以提供访问动态库。多池负载均衡控制模块代表存储设备中基于与操作终端间的交互以实现数据迁移的功能模块,多池负载均衡控制模块、源存储池与目标存储池整体可以对应于存储设备。需要说明的是,这里提及的存储设备可对应于整个分布式存储系统,如整个ceph系统,而不仅限于一台存储服务器,这里主要是为了便于说明,通过存储设备进行代称。
需要说明的是,图7中提及的概念,源存储池、目标存储池、源存储块和目标存储块,主要是从功能角度而赋予的命名。在不同类型的分布式存储系统中,这些概念可能有不同的命名。例如,在ceph系统中,源存储池可称为源pool,目标存储池可称为目的pool,源存储块可称为源RBD块设备,目标存储块可称为目的RBD块设备。同样是为了便于说明,以上述提及的概念进行统一代称。现以图7为整体框架,该数据迁移方法在该应用场景的应用如下:
多池负载均衡控制模块实时检测各存储池的负载程度,基于各存储池的负载程度,确定源存储池和目标存储池。再根据源存储池中各存储块的负载程度,确定源存储块。其中,负载程度可以基于容量使用程度和读写带宽使用程度进行确定。
多池负载均衡控制模块根据源存储池和源存储块的源标识,生成迁移指令,将迁移指令发送至代理模块。由此,代理模块可以基于迁移指令对,指示访问模块对针对源存储池中的源存储块的读写请求进行一致性冻结处理。之所以进行一致性冻结处理,主要是因为当发起迁移的时候,用户业务可能还在进读写请求,这些在访问模块中正在执行的读写请求是写到源存储块中的。因读写正在进行中,且数据没有落盘,可被称之为飞行读写请求。迁移开始前需要确保这些读写操作的数据落入到源存储块中,并且后续还未启动的读写请求暂停运行,也即冻结。由此,需要完成两件事情来保证迁移前的数据一致性,一是确保针对源存储块的未启动读写请求停止进入运行,二是确保针对源存储块的已启动但未处理完成的飞行读写请求运行完。
下面结合图8、图9及图10,对一致性冻结的过程进行说明。先结合图8进行说明,在图8中,访问模块中又可以进一步划分为命令单元和冻结单元。代理模块在接收到迁移指令后,代理模块中驻留服务进程可以通过套接字向命令单元发送冻结命令流。其中,套接字可以具体为Unix套接字,本申请实施例对此不作具体限定。
命令单元通过接收套接字以获取到冻结命令流。由于冻结命令流还是套接字的文件形式,从而命令单元可以对套接字进行解析,以获取冻结命令流。命令单元将冻结命令流交给冻结单元,由冻结单元实现一致性冻结处理。
由上述内容可知,一致性冻结处理主要是做两件事情,而该两件事情可均由冻结单元负责。现结合图9,对如何确保针对源存储块的未启动读写请求停止进入运行的过程进行说明:
访问模块可以通过读写接受单元,将针对源存储块的读写请求添加至读写请求队列,并同时在需要时将读写请求移出读写请求队列,以供读写处理单元进行处理。需要说明的是,图示中的读写请求队列长度只是为了便于说明,实际实施中队列长度不限于图示长度。这里要确保针对源存储块的未启动读写请求停止进入运行,也即禁止读写请求队列中的读写请求出队列。由冻结单元基于冻结命令流设置冻结标识,从而控制冻结过程。
例如,冻结单元在获取到冻结命令流后,可以将冻结标识设置为冻结标记,如true字段。读写接受单元在检测到冻结标识被设置为冻结标记后,可以控制不让读写请求出读写请求队列。这样,能确保一致性冻结处理之后没有新的读写请求出队列运行变成飞行读写请求。
一致性冻结处理还要做另外一件事情,现结合图10,对如何确保针对源存储块的已启动但未处理完成的飞行读写请求运行完的过程进行说明:
读写处理单元负责将从读写请求队列中移出的读写请求,添加至飞行读写请求队列,并负责对飞行读写请求队列中的飞行读写请求进行处理。具体地,在没有新的读写请求出读写请求队列变成飞行读写请求之后,读写处理单元需要保证之前的飞行读写请求都运行完成。因处理飞行读写请求都是异步操作,而且所有的异步操作都在一个异步等待完成队列(也即飞行读写请求队列)中,冻结单元可以等待回调完成结果,基于回调完成结果设置等待条件变量,以确保所有飞行读写请求均处理完成。
回调机制的过程如下:飞行读写请求在飞行读写请求队列中排对,在飞行读写请求队列中的首个飞行读写请求设置有回调变量,当首个飞行读写请求处理完毕后,该回调变量会随着飞行读写请求完成并出队列,而向队尾方向移动,直至飞行读写请求队列中最后一个飞行读写请求传递出回调变量。此时,访问模块可以基于传递出的回调变量设置等待条件变量的值,从而确定飞行请求队列中的所有飞行读写请求执行完毕,并完成等待过程。冻结单元后续可基于该等待条件变量,将冻结标识设置为解冻标记,以唤醒读写请求移出读写请求队列的过程。
在完成一致性冻结之后,此时操作终端中没有正在运行的飞行读写请求。此时,可以开始进行源存储块的迁移。这里使用延迟迁移,也就是不是真正的迁移数据,而是利用存储块的快照和克隆技术来实现秒级的迁移。由于没有真正的迁移数据,从而完成迁移的耗费时长跟存储块的存储数据量无关。
其中,快照是对某一时刻源存储块中数据的一个状态镜像,类似给源存储块拍了一张照片,快照就是保留了那个时刻的数据。而克隆是指从快照快速地创建出一个新的存储块,克隆得到的目标存储块刚开始没有数据,数据按需从源存储块中读取,也即是延迟迁移的过程。
延迟迁移的过程可参考图11,在图11中,多池负载均衡控制模块首先在源存储池中对源存储块创建一个快照,然后利用创建出来的快照创建一个克隆的存储块,这两个操作都是秒级完成。由此,延迟迁移过程刚开始只是创建快照和克隆,这些都是基于源存储块的元数据所实现的,而实质的数据迁移会在迁移完成之后,用户对目标存储块进行读写时按需进行,这就是称之为延迟迁移的原因。
在通过快照和克隆的延迟迁移之后,需要对操作终端用于访问存储设备的数据流指向进行切换,以使其从访问源存储块切换为访问目标存储块。Ceph系统通常使用伪随机分布算法,决定访问哪个存储块。对于被随机到需要访问源存储块的读写请求,这里跟数据流指向有关的因素主要是作为访问对象的存储池标识信息和存储块标识信息。因此,需要对数据流指向进行修改,将原来指向源存储池和源存储块,修改为指向目标存储池和目标存储块。
其中,修改过程可具体参考图12。在图12中,多池负载均衡控制模块可以获取目标存储块的标识信息(因目标存储块在目标存储池中,还可以获取目标存储池的标识信息),将获取到的标识信息作为目标标识,发送至操作终端中的代理模块。由此,操作终端可以获知存储设备已经创建了空的目标存储块。代理模块可以通过套接字,将目标标识发送至访问模块。而访问模块可以将用于访问源存储块的上下文代码中源存储池的标识信息调整为目标存储池的标识信息,将源存储块的标识信息调整为目标存储块的标识信息。通过上述流程即完成了数据流指向的切换,而且这个切换流程可以在秒级完成。
在数据流指向切换完之后就可以解除之前的冻结,解除冻结的过程可参考图13。在图13中,在确定数据流指向切换完之后,可由冻结单元基于等待条件变量,将冻结标识设置为解冻标记,从而控制解冻过程。例如,冻结单元可将冻结标识设置为解冻标记,如false字段。读写接受单元在检测到冻结标识被设置为解冻标记后,可以恢复让读写请求继续出读写请求队列。
针对目标存储设备的目标读请求,可按需从源存储块中获取数据,现结合图14对目标读请求的处理过程进行说明:在图14中,操作终端通过发起单元发起针对目标存储快的目标读请求,在目标存储块中查找到目标读请求指定的目标数据的情况下,则直接从目标存储块中读取目标数据,并将目标数据返回至操作终端。在目标存储块中未查找到目标读请求指定的目标数据的情况下,则从源存储块中获取目标数据并复制到目标存储块中,并将目标数据返回至操作终端。
需要说明的是,读取过程可以基于偏移量实现,具体过程可参考在前实施例的内容。另外,在目标存储块中未查找到目标读请求指定的目标数据的情况下,图14中延迟的数据迁移指向的是快照,该过程仅为示例,也即在快照中存在目标数据的情况下,则从快照中获取目标数据。关于使用快照创建目标存储块的原因可参考在前实施例的内容。
本申请实施例提供一种应用场景,以该应用场景为操作终端向存储设备发起目标写请求为例。现以图7为整体框架,该数据迁移方法在该应用场景的应用如下:
具体地,处理目标写请求之前的数据迁移准备过程可参考在前应用场景实施例中的相关说明。针对目标存储设备的目标写请求,现结合图15对目标读请求的处理过程进行说明:在图15中,操作终端通过发起单元发起针对目标存储快的目标写请求,在目标存储块中查找到目标读写请求指定的目标数据的情况下,则根据目标写请求中的修改信息直接对目标存储块中的目标数据进行修改。在目标存储块中未查找到目标写请求指定的目标数据的情况下,则从源存储块中获取目标数据,基于目标写请求中的修改信息对获取到的目标数据进行修改,得到更新的目标数据,并将更新的目标数据复制到目标存储块中。同样需要说明的是,在目标存储块中未查找到目标读请求指定的目标数据的情况下,图15中延迟的数据迁移指向的是快照,该过程仅为示例,也即在快照中存在目标数据的情况下,则从快照中获取目标数据。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据迁移方法的数据迁移装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据迁移装置实施例中的具体限定可以参见上文中对于数据迁移方法的限定,在此不再赘述。
在一些实施例中,如图16所示,提供了一种数据迁移装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:确定模块1602、发送模块1604、创建模块1606、切换模块1608和数据迁移模块1610,其中:
确定模块1602,用于确定源存储池和目标存储池,从源存储池中确定待迁移的源存储块。
发送模块1604,用于向操作终端发送迁移指令,迁移指令用于指示操作终端对针对源存储块的读写请求进行一致性冻结处理。
创建模块1606,用于在一致性冻结处理完成后,在目标存储池中创建空的目标存储块。
切换模块1608,用于向操作终端发送指向目标存储块的目标标识,目标标识用于指示操作终端基于目标标识切换数据流指向,并解除一致性冻结。
数据迁移模块1610,用于针对操作终端基于新的数据流指向发起的目标读写请求,在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
在一些实施例中,确定模块1602,具体用于检测各存储池的容量使用程度、以及读写带宽使用程度;根据各存储池的容量使用程度或者读写带宽使用程度中的至少一项,确定各存储池的负载程度;根据各存储池的负载程度,从多个存储池中选取源存储池和目标存储池,其中,目标存储池的负载程度低于源存储池。
在一些实施例中,确定模块1602,还用于对各存储池的负载程度按照从大至小进行排序;将排序序号小于第一预设序号的存储池作为源存储池,将排序序号小于第二预设序号的存储池作为目标存储池。
在一些实施例中,迁移指令具体用于指示操作终端停止处理针对源存储块的未启动读写请求,并继续处理针对源存储块的飞行读写请求,并在所有飞行读写请求处理完成后确定一致性冻结处理完成,其中,飞行读写请求为已启动但未处理完成的读写请求。
在一些实施例中,创建模块1606,用于获取源存储块的元数据;基于源存储块的元数据,在目标存储池中创建与源存储块间具有映射关系,但未分配物理存储空间的空的目标存储块。
在一些实施例中,创建模块1606,还用于基于源存储块的元数据创建源存储块的快照;在目标存储池中创建映射至快照但未分配物理存储空间的目标存储块。
在一些实施例中,在目标读写请求为目标读请求的情况下,数据迁移模块1610,具体用于遍历源存储块的物理存储空间,以获取由目标读请求中的偏移量所指定的目标数据,并将获取到的目标数据复制到目标存储块中;响应于目标读操作,向操作终端返回目标数据。
在一些实施例中,在目标读写请求为目标写请求的情况下,数据迁移模块1610,具体用于遍历源存储块的物理存储空间,以获取由目标写请求中的偏移量所指定的目标数据;响应于目标写请求,基于目标写请求中的修改信息对获取到的目标数据进行修改,得到更新的目标数据,并将更新的目标数据复制到目标存储块中。
在一些实施例中,该装置还包括:
释放模块,用于在任一目标读写请求均能从目标存储块中查找到相应目标读写请求所指定的目标数据的情况下,确定将源存储块中的数据向目标存储块中迁移完毕;在源存储块中的数据全部迁移完毕后,释放源存储块中的物理存储空间。
上述数据迁移装置,存储设备向操作终端发送迁移指令,以指示操作终端对针对源存储块的读写请求进行一致性冻结处理。在一致性冻结处理完成后,在目标存储池中创建空的目标存储块,存储设备向操作终端发送指向目标存储块的目标标识,操作终端基于目标标识切换数据流指向,并解除一致性冻结,再基于新的数据流指向发起目标读写请求。存储设备基于目标读写请求,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。因是先在目标存储池中创建空的目标存储块,而未直接将源存储块中的所有数据全部直接迁移到目标存储块中。这样,能完成秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。此外,通过上述秒级切换,以及将原指向源存储块的读写请求切换为指向目标存储块的读写请求,可使得整个数据迁移过程,不需要先断开操作终端与源存储块间的通信连接,再数据迁移完毕后再建立操作终端与目标存储块间的通信连接。这样,数据迁移过程不需要暂停业务处理,保证用户业务层面上的无感迁移。
此外,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据迁移方法的数据迁移装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据迁移装置实施例中的具体限定可以参见上文中对于数据迁移方法的限定,在此不再赘述。
在一些实施例中,如图17所示,提供了一种数据迁移装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:冻结处理模块1702、发送模块1704、切换模块1706和数据迁移模块1708,其中:
冻结处理模块1702,用于接收存储设备发送的迁移指令,并根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理。
发送模块1704,用于在一致性冻结处理完成后,向存储设备发送处理完成消息,处理完成消息用于指示存储设备在目标存储池中创建空的目标存储块。
切换模块1706,用于接收存储设备反馈的指向目标存储块的目标标识,基于目标标识切换数据流指向,并解除一致性冻结处理。
数据迁移模块1708,用于基于新的数据流指向向存储设备发起目标读写请求,目标读写请求用于指示存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。
在一些实施例中,冻结处理模块1702,具体用于根据迁移指令确定源存储池中待进行数据迁移的源存储块;停止处理针对源存储块的未启动读写请求,并继续处理针对源存储块的飞行读写请求,飞行读写请求为已启动但未处理完成的读写请求;在所有飞行读写请求处理完成后确定一致性冻结处理完成。
在一些实施例中,冻结处理模块1702,还用于将冻结标识设置为冻结标记,以控制读写请求队列中的未启动读写请求不再被移动至飞行读写请求队列中;对飞行读写请求队列中的各飞行读写请求进行处理,直至飞行读写请求队列中所有飞行读写请求均处理完成。
在一些实施例中,飞行读写请求队列中的首个飞行读写请求设置有回调变量;冻结处理模块1702,还用于对飞行读写请求队列中的各飞行读写请求进行异步处理;按照飞行读写请求队列中各飞行读写请求的排列顺序,从首个飞行读写请求开始,排序在前的飞行读写请求处理完成后,将回调变量传递至下一飞行读写请求,直至当飞行读写请求队列中最后一个飞行读写请求传递出回调变量时,确定飞行读写请求队列中所有飞行读写请求均处理完成。
在一些实施例中,指向目标存储块的目标标识包括目标存储池的标识信息和目标存储块的标识信息;切换模块1706,具体用于将用于访问源存储块的上下文代码中源存储池的标识信息调整为目标存储池的标识信息,将源存储块的标识信息调整为目标存储块的标识信息。
上述数据迁移装置,操作终端接收存储设备发送的迁移指令,并根据迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理。在一致性冻结处理完成后,操作终端向存储设备发送处理完成消息,处理完成消息用于指示存储设备在目标存储池中创建空的目标存储块。操作终端接收存储设备反馈的指向目标存储块的目标标识,基于目标标识切换数据流指向,并解除一致性冻结处理。操作终端基于新的数据流指向向存储设备发起目标读写请求,目标读写请求用于指示存储设备在目标存储块中未查找到目标读写请求指定的目标数据的情况下,从源存储块中获取目标数据并复制到目标存储块中,以响应目标读写请求。因是先在目标存储池中创建空的目标存储块,而未直接将源存储块中的所有数据全部直接迁移到目标存储块中。这样,能完成秒级切换,避免因数据复制占用太长时间而导致业务处理被延误。此外,通过上述秒级切换,以及将原指向源存储块的读写请求切换为指向目标存储块的读写请求,可使得整个数据迁移过程,不需要先断开操作终端与源存储块间的通信连接,再数据迁移完毕后再建立操作终端与目标存储块间的通信连接。这样,数据迁移过程不需要暂停业务处理,保证用户业务层面上的无感迁移。
此外,操作终端可以先对针对源存储块的读写请求进行一致性冻结。这样,在目标存储池中创建作为迁移目标的目标存储块之前,可以保证正在与源存储块进行数据交互的读写请求先完成读写过程,确保数据落地。
关于对数据迁移装置的具体限定可以参见上文中对于数据迁移方法的限定,在此不再赘述。上述数据迁移装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是存储设备或者操作终端,其内部结构图可以如图18所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据迁移方法。
本领域技术人员可以理解,图18中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (19)

1.一种数据迁移方法,其特征在于,所述方法包括:
确定源存储池和目标存储池,从所述源存储池中确定待迁移的源存储块;
向操作终端发送迁移指令,所述迁移指令用于指示所述操作终端对针对所述源存储块的读写请求进行一致性冻结处理;
在一致性冻结处理完成后,在所述目标存储池中创建空的目标存储块;
向所述操作终端发送指向所述目标存储块的目标标识,所述目标标识用于指示所述操作终端基于所述目标标识切换数据流指向,并解除一致性冻结;
针对操作终端基于新的数据流指向发起的目标读写请求,在所述目标存储块中未查找到所述目标读写请求指定的目标数据的情况下,从所述源存储块中获取目标数据并复制到所述目标存储块中,以响应所述目标读写请求。
2.根据权利要求1所述的方法,其特征在于,所述确定源存储池和目标存储池,包括:
检测各存储池的容量使用程度、以及读写带宽使用程度;
根据各存储池的容量使用程度或者读写带宽使用程度中的至少一项,确定各存储池的负载程度;
根据各存储池的负载程度,从多个所述存储池中选取源存储池和目标存储池,其中,所述目标存储池的负载程度低于所述源存储池。
3.根据权利要求2所述的方法,其特征在于,所述根据各存储池的负载程度,从多个所述存储池中选取源存储池和目标存储池,包括:
对各存储池的负载程度按照从大至小进行排序;
将排序序号小于第一预设序号的存储池作为源存储池,将排序序号小于第二预设序号的存储池作为目标存储池。
4.根据权利要求1所述的方法,其特征在于,所述迁移指令具体用于指示所述操作终端停止处理针对所述源存储块的未启动读写请求,并继续处理针对所述源存储块的飞行读写请求,并在所有飞行读写请求处理完成后确定一致性冻结处理完成,其中,所述飞行读写请求为已启动但未处理完成的读写请求。
5.根据权利要求1所述的方法,其特征在于,所述在所述目标存储池中创建空的目标存储块,包括:
获取所述源存储块的元数据;
基于所述源存储块的元数据,在所述目标存储池中创建与所述源存储块间具有映射关系,但未分配物理存储空间的空的目标存储块。
6.根据权利要求5所述的方法,其特征在于,所述基于所述源存储块的元数据,在所述目标存储池中创建与所述源存储块间具有映射关系,但未分配物理存储空间的空的目标存储块,包括:
基于所述源存储块的元数据创建所述源存储块的快照;
在所述目标存储池中创建映射至所述快照但未分配物理存储空间的目标存储块。
7.根据权利要求1所述的方法,其特征在于,在所述目标读写请求为目标读请求的情况下,所述从所述源存储块中获取目标数据并复制到所述目标存储块中,以响应所述目标读写请求,包括:
遍历所述源存储块的物理存储空间,以获取由所述目标读请求中的偏移量所指定的目标数据,并将获取到的所述目标数据复制到所述目标存储块中;
响应于所述目标读操作,向所述操作终端返回所述目标数据。
8.根据权利要求1所述的方法,其特征在于,在所述目标读写请求为目标写请求的情况下,所述从所述源存储块中获取目标数据并复制到所述目标存储块中,以响应所述目标读写请求,包括:
遍历所述源存储块的物理存储空间,以获取由所述目标写请求中的偏移量所指定的目标数据;
响应于所述目标写请求,基于所述目标写请求中的修改信息对获取到的所述目标数据进行修改,得到更新的目标数据,并将所述更新的目标数据复制到所述目标存储块中。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:
在任一目标读写请求均能从所述目标存储块中查找到相应目标读写请求所指定的目标数据的情况下,确定将所述源存储块中的数据向所述目标存储块中迁移完毕;
在所述源存储块中的数据全部迁移完毕后,释放所述源存储块中的物理存储空间。
10.一种数据迁移方法,其特征在于,所述方法包括:
接收存储设备发送的迁移指令,并根据所述迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理;
在一致性冻结处理完成后,向所述存储设备发送处理完成消息,所述处理完成消息用于指示所述存储设备在目标存储池中创建空的目标存储块;
接收所述存储设备反馈的指向所述目标存储块的目标标识,基于所述目标标识切换数据流指向,并解除一致性冻结处理;
基于新的数据流指向向所述存储设备发起目标读写请求,所述目标读写请求用于指示所述存储设备在所述目标存储块中未查找到所述目标读写请求指定的目标数据的情况下,从所述源存储块中获取目标数据并复制到所述目标存储块中,以响应所述目标读写请求。
11.根据权利要求10所述的方法,其特征在于,所述根据所述迁移指令对针对源存储池的读写请求进行一致性冻结处理,包括:
根据所述迁移指令确定源存储池中待进行数据迁移的源存储块;
停止处理针对所述源存储块的未启动读写请求,并继续处理针对所述源存储块的飞行读写请求,所述飞行读写请求为已启动但未处理完成的读写请求;
在所有飞行读写请求处理完成后确定一致性冻结处理完成。
12.根据权利要求11所述的方法,其特征在于,所述停止处理针对所述源存储块的未启动读写请求,并继续处理针对所述源存储块的飞行读写请求,包括:
将冻结标识设置为冻结标记,以控制读写请求队列中的未启动读写请求不再被移动至飞行读写请求队列中;
对所述飞行读写请求队列中的各飞行读写请求进行处理,直至所述飞行读写请求队列中所有飞行读写请求均处理完成。
13.根据权利要求12所述的方法,其特征在于,所述飞行读写请求队列中的首个飞行读写请求设置有回调变量,所述对所述飞行读写请求队列中的各飞行读写请求进行处理,直至所述飞行读写请求队列中所有飞行读写请求均处理完成,包括:
对所述飞行读写请求队列中的各飞行读写请求进行异步处理;
按照所述飞行读写请求队列中各飞行读写请求的排列顺序,从首个飞行读写请求开始,排序在前的飞行读写请求处理完成后,将回调变量传递至下一飞行读写请求,直至当所述飞行读写请求队列中最后一个飞行读写请求传递出所述回调变量时,确定所述飞行读写请求队列中所有飞行读写请求均处理完成。
14.根据权利要求10所述的方法,其特征在于,指向所述目标存储块的目标标识包括目标存储池的标识信息和所述目标存储块的标识信息,所述基于所述目标标识切换数据流指向,包括:
将用于访问所述源存储块的上下文代码中源存储池的标识信息调整为所述目标存储池的标识信息,将源存储块的标识信息调整为所述目标存储块的标识信息。
15.一种数据迁移装置,其特征在于,所述装置包括:
确定模块,用于确定源存储池和目标存储池,从所述源存储池中确定待迁移的源存储块;
发送模块,用于向操作终端发送迁移指令,所述迁移指令用于指示所述操作终端对针对所述源存储块的读写请求进行一致性冻结处理;
创建模块,用于在一致性冻结处理完成后,在所述目标存储池中创建空的目标存储块;
切换模块,用于向所述操作终端发送指向所述目标存储块的目标标识,所述目标标识用于指示所述操作终端基于所述目标标识切换数据流指向,并解除一致性冻结;
数据迁移模块,用于针对操作终端基于新的数据流指向发起的目标读写请求,在所述目标存储块中未查找到所述目标读写请求指定的目标数据的情况下,从所述源存储块中获取目标数据并复制到所述目标存储块中,以响应所述目标读写请求。
16.一种数据迁移装置,其特征在于,所述装置包括:
冻结处理模块,用于接收存储设备发送的迁移指令,并根据所述迁移指令对针对源存储池中的源存储块的读写请求进行一致性冻结处理;
发送模块,用于在一致性冻结处理完成后,向所述存储设备发送处理完成消息,所述处理完成消息用于指示所述存储设备在目标存储池中创建空的目标存储块;
切换模块,用于接收所述存储设备反馈的指向所述目标存储块的目标标识,基于所述目标标识切换数据流指向,并解除一致性冻结处理;
数据迁移模块,用于基于新的数据流指向向所述存储设备发起目标读写请求,所述目标读写请求用于指示所述存储设备在所述目标存储块中未查找到所述目标读写请求指定的目标数据的情况下,从所述源存储块中获取目标数据并复制到所述目标存储块中,以响应所述目标读写请求。
17.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至14中任一项所述的方法的步骤。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
19.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
CN202211102024.9A 2022-09-09 2022-09-09 数据迁移方法、装置、设备、存储介质和计算机程序产品 Pending CN117707750A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211102024.9A CN117707750A (zh) 2022-09-09 2022-09-09 数据迁移方法、装置、设备、存储介质和计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211102024.9A CN117707750A (zh) 2022-09-09 2022-09-09 数据迁移方法、装置、设备、存储介质和计算机程序产品

Publications (1)

Publication Number Publication Date
CN117707750A true CN117707750A (zh) 2024-03-15

Family

ID=90144874

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211102024.9A Pending CN117707750A (zh) 2022-09-09 2022-09-09 数据迁移方法、装置、设备、存储介质和计算机程序产品

Country Status (1)

Country Link
CN (1) CN117707750A (zh)

Similar Documents

Publication Publication Date Title
US11016699B2 (en) Host device with controlled cloning of input-output operations
US11093159B2 (en) Storage system with storage volume pre-copy functionality for increased efficiency in asynchronous replication
EP2437167B1 (en) Method and system for virtual storage migration and virtual machine monitor
US11288286B2 (en) Storage system with data consistency checking in synchronous replication using active snapshot set
US11228647B2 (en) System and method for sharing SAN storage
US11411885B2 (en) Network-accessible data volume modification
US11249834B2 (en) Storage system with coordinated recovery across multiple input-output journals of different types
CN112969993A (zh) 将多路径逻辑装置的控制权从当前mpio驱动程序迁移至目标mpio驱动程序
US11693789B2 (en) System and method for mapping objects to regions
US10037298B2 (en) Network-accessible data volume modification
US10601901B2 (en) Methods, systems, and media for stored content distribution and access
EP3739440A1 (en) Distributed storage system, data processing method and storage node
CN114424172A (zh) 虚拟存储器元数据管理
US10387043B2 (en) Writing target file including determination of whether to apply duplication elimination
US10931750B1 (en) Selection from dedicated source volume pool for accelerated creation of block data volumes
US11093161B1 (en) Storage system with module affinity link selection for synchronous replication of logical storage volumes
US20230376357A1 (en) Scaling virtualization resource units of applications
US11386124B2 (en) Snapshot rollback for synchronous replication
US10956442B1 (en) Dedicated source volume pool for accelerated creation of block data volumes from object data snapshots
CN117707750A (zh) 数据迁移方法、装置、设备、存储介质和计算机程序产品
US11269855B2 (en) On-demand remote snapshot creation for a synchronous replication session in automatic recovery
US11726885B2 (en) Efficient method and system of intelligent deploying file level restore agent in multicloud
EP3479236B1 (en) Network-accessible data volume modification
US20180191839A1 (en) Direct volume migration in a storage area network
US11561856B2 (en) Erasure coding of replicated data blocks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination