CN103164167B - 一种数据迁移方法及装置 - Google Patents
一种数据迁移方法及装置 Download PDFInfo
- Publication number
- CN103164167B CN103164167B CN201110419888.9A CN201110419888A CN103164167B CN 103164167 B CN103164167 B CN 103164167B CN 201110419888 A CN201110419888 A CN 201110419888A CN 103164167 B CN103164167 B CN 103164167B
- Authority
- CN
- China
- Prior art keywords
- data
- migration
- route
- destination media
- routing
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种数据迁移方法,该方法包括:建立迁移数据到目标介质的迁移路由,同时保留迁移数据到源介质的原始路由;在数据迁移过程中,接收到对迁移数据的读取指令时,先通过迁移路由查询,若查询失败,再从原始路由查询;接收到对迁移数据的修改指令时直接通过迁移路由写入修改后的新数据;接收到对迁移数据的删除指令时,先通过原始路由删除,再通过迁移路由删除。本发明还公开了一种数据迁移装置,该方法和装置在数据迁移过程中完全不需要限制用户对数据的读写访问,且数据迁移过程在面向用户的层面瞬间完成,相当于实现存储系统瞬间完成扩容,不会导致数据服务中断。
Description
技术领域
本发明涉及存储技术领域的一种数据层无损扩容的方法,特别涉及一种数据迁移方法及装置。
背景技术
数据迁移一直是分布式存储产品相对比较难做的部分,因为既要移动数据又不能影响用户访问,所以为了减少数据迁移对用户访问的影响,基本上都只能是每次移动少量数据,并使这部分数据在移动时不能修改,直到数据迁移完成后,恢复数据修改的限制。
具体地,可将需要迁移的数据划分为N个数据域,每次以此数据域为单元进行搬迁,其过程是首先在存储系统的接入层进行控制,令待迁移数据域的数据只读,然后将该数据域的数据从源介质读出,再写入目标介质,该数据域的所有数据写入到目标介质后,将该数据域的路由指向目标介质,并删除源介质中的数据,并恢复该数据域数据的可写和可删,之后进行下一数据域的迁移,直到所有数据域迁移完成。
上述现有的数据迁移方法在部分应用场景下是可行的,但在一些数据交换频繁的应用中,例如网络游戏类应用,不同用户之间的数据交互非常频繁,且数据之间的关系错综复杂,如果一部分数据不可修改,除了影响需要使用这部分数据的用户访问外,还可能会影响其它用户访问,并对游戏逻辑造成损害。
可见,现有的数据迁移方法由于必须限制用户对迁移数据的访问,因此并不能适用于所有应用场景,而且现有数据迁移是一个持久的过程,涉及到网络交互和机器吞吐能力,只能缓慢地逐步进行迁移;如在对数据存储系统扩容而进行数据迁移时,如果迁移速度较慢,而系统原数据存储能力已经接近枯竭,若此时数据业务量暴涨,导致数据迁移速度跟不上业务数据增长速度,则很可能会造成存储爆仓,导致数据存储服务中断的严重后果。
发明内容
有鉴于此,本发明提供了一种数据迁移方法及装置,在数据迁移过程中完全不需要限制用户对数据的读写访问,且数据迁移过程在面向用户的层面瞬间完成,相当于实现存储系统瞬间完成扩容,不会导致数据服务中断。
为达上述目的,本发明的技术方案具体是这样实现的:
一种数据迁移方法,该方法包括:
建立迁移数据到目标介质的迁移路由,同时保留迁移数据到源介质的原始路由;
在数据迁移过程中,接收到对迁移数据的访问指令时,根据预定的路由顺序进行数据访问操作。
一种数据迁移装置,该装置包括:
路由建立模块,用于建立迁移数据到目标介质的迁移路由,同时保留迁移数据到源介质的原始路由;
迁移模块,用于执行数据迁移过程;
指令控制模块,用于在数据迁移过程中,接收到对迁移数据的访问指令时,根据预定的路由顺序进行数据访问操作。
由上述技术方案可见,本发明的这种数据迁移方法及装置,在数据迁移过程中,不需要对用户的数据访问做任何的限制,完全不影响用户访问,而具体数据的迁移可以在后台同时进行,在数据服务期系统扩容时,由于新数据都是通过迁移路由写入目标介质,对于源介质不会再增加数据,也就不会因为迁移缓慢造成原存储介质容量枯竭而中断数据存储服务,对于面向用户的数据存储服务来说,相当于实现了瞬间扩容。
附图说明
图1为本发明实施例的数据迁移方法流程图;
图2为本发明实施例的原始路由示意图;
图3为本发明实施例的迁移路由示意图;
图4为本发明实施例的数据迁移装置结构示意图;
图5为本发明实施例的迁移模块结构示意图;
图6为本发明实施例的指令控制模块结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明主要是在存储系统的接入层对迁移过程进行控制,对需要迁移的数据(以下简称迁移数据)增加一条迁移路由,该路由指向迁移数据的目标介质,而指向源介质的原始路由仍然保留;即迁移数据同时存在两条访问路由;当用户访问迁移数据时,若为读取,则先从迁移路由查询需要读取的数据,若没有查询到,再从原始路由查询;若为修改,则直接从迁移路由写入新数据,若为删除,则先从原始路由删除数据,再从迁移路由删除数据。
具体地,本发明的数据迁移方法流程如图1所示,包括如下步骤:
步骤101,建立迁移数据到目标介质的迁移路由,同时保留迁移数据到源介质的原始路由;
分布式系统在接入层中实现的对数据实际存储位置的指示可称为访问路由,如图2所示,接入层将整个存储范围划分为多个数据域,每个数据域中的数据保存的实际位置(介质A或介质B)都有一条对应的路由映射(以实线箭头表示),其中,数据域1和数据域2的访问路由指向介质B;数据域3和数据域4的路由指向介质A,接入层在接收到用户的访问请求时,可以根据路由映射找到具体数据,从而对具体数据进行操作。
在本步骤中,需要对迁移数据建立一条新的访问路由,为了区分,这里我们将指向迁移数据迁移前的原始保存位置的访问路由称为原始路由,将指向迁移数据迁移后的目标保存位置的访问路由称为迁移路由。原始路由和迁移路由指向的目标不同,但在形式上没有区别。
例如要对存储系统进行扩容时,如图3所示,存储系统内增加了介质C,此时需要将数据域1中的数据从介质B迁移到介质C,则需要对数据域1建立一条指向介质C的迁移路由,对于多个数据域的迁移路由建立,可以使用算法SuperHash(key)%N将用户数据投射到N个数据域,其中,SuperHash()是一个将用户数据的主键变换成一个整数数字的函数,%N表示对N取模,其中N为需要建立迁移路由的数据域个数,SuperHash(key)%N即是将用户数据投射到N的数据域的一个算法,当然具体算法很多,这里不再一一举例。
建立迁移路由时,数据域的原始路由均保留,这样每一个数据域就同时存在两条访问路由,如图3中,数据域1指向介质B的实线箭头表示原始路由,数据域1指向介质C的虚线箭头表示迁移路由。
步骤102,在数据迁移过程中,接收到对迁移数据的访问指令时,根据预定的路由顺序进行数据访问操作。
其中,对于不同的访问指令,按照预定的路由顺序进行的数据访问操作如下:接收到对迁移数据的读取指令时,先通过迁移路由查询,若查询失败,再从原始路由查询;接收到对迁移数据的修改指令时直接通过迁移路由写入修改后的数据;接收到对迁移数据的删除指令时,先通过原始路由删除,再通过迁移路由删除。
迁移路由建立完毕后,会开始进行具体的迁移数据转移操作,即将迁移数据分为预定个数的数据域,以数据域为单位逐一读取源介质中的迁移数据并复制到目标介质,当该数据域中所有迁移数据复制完成后删除源介质中的迁移数据,并删除该数据域的原始路由,保留其迁移路由,如此循环直至迁移数据的所有的数据域均转移完毕。每一个数据域迁移完毕后,其迁移路由即变为了该数据域的原始路由,并不再作为迁移数据处理,不参与接入层对迁移数据访问的特别处理。
在上述数据迁移过程中,如果接收到用户对还没有完成迁移的数据进行的访问指令,则会进行如下特别处理:
对于读取指令,先通过迁移路由查找需要读取的数据,若没有查询到需要读取的数据,再通过原始路由查询;
对于修改指令,则直接将修改后的数据通过迁移路由写入目标介质;
对于删除指令,先通过原始路由删除源介质中的数据,再通过迁移路由删除目标介质中的数据;如果迁移数据还没有复制到目标介质中,则具体删除操作可以取消,也可以强制执行,只不过会造成删除失败,但删除失败不会影响数据的正确性。
需要注意的是,在上述将迁移数据逐渐复制到目标介质的过程中,需要采用增加方式,而非普通的复制;所谓增加即为目标介质没有待复制的数据时才允许复制,目标介质中有待复制数据时复制失败,不同于无条件的普通复制,采用增加方式是为了避免目标介质的新数据被源介质中的老数据覆盖,如接入层在接到用户的修改指令时,新的数据被直接写入目标介质,而不会对源介质中的老数据进行修改,对于这种情况,不能允许老数据覆盖新数据,否则用户的修改指令相当于没有被执行,所以为保证数据迁移过程中用户指令的正确执行,在进行数据转移操作时需要采用增加方式。
另外,对于迁移数据的读取指令,当迁移未完成,即源介质有数据而目标介质中没有数据时,接入层还可以进一步将用户读取的数据复制到目标介质中,完成一次访问追加,进行访问追加可以减少后台迁移数据转移操作时所需进行复制的数据量,因为后台迁移数据的转移操作是采用增加方式,所以遇到目标介质中有待复制数据时,将不会进行数据的复制,当然,对于读取指令,进行访问追加操作并非必需。
在上述方法实施例中,接入层对于迁移数据的访问指令的处理完全不会影响在后台进行的具体数据转移操作,因此也就不需要对用户访问进行限制,通过双重路由巧妙地解决了困扰分布式存储系统进行数据迁移的难题,使数据迁移不再成为高频率数据访问服务的制肘,对于数据服务系统扩容时的数据迁移来说,更是能够达到瞬间扩容的效果,完全不必担心原系统服务中断的发生,从而使数据服务系统扩容的时机选择更加灵活。
另外,对应上述方法实施例,本发明还提供了一种数据迁移装置,可以实现上述方法,其具体结构如图4所示,包括:
路由建立模块401,用于建立迁移数据到目标介质的迁移路由,同时保留迁移数据到源介质的原始路由;
迁移模块402,与所述路由建立模块401相连,用于执行数据迁移过程;
指令控制模块403,与所述迁移模块402及路由建立模块401分别相连,用于在数据迁移过程中,接收到对迁移数据的访问指令时,根据预定的路由顺序进行数据访问操作。具体地,接收到对迁移数据的读取指令时,先通过迁移路由查询,若查询失败,再从原始路由查询;接收到对迁移数据的修改指令时,直接通过迁移路由写入修改后的新数据;接收到对迁移数据的删除指令时,先通过原始路由删除,再通过迁移路由删除。
迁移路由建立模块401、迁移模块402及指令控制模块403均可在数据存储系统的接入层实现。
其中,所述路由建立模块401使用算法SuperHash(key)%N,对N个数据域建立迁移路由,其中N为需要建立迁移路由的数据域个数。
较佳地,所述迁移模块402如图5所示,包括:
复制单元501,用于将迁移数据分为预定个数的数据域,以所述数据域为单位逐一读取源介质中的迁移数据并复制到目标介质;直至迁移数据的所有的数据域均迁移完毕;
处理单元502,与诉述复制单元501相连,当所述数据域中所有迁移数据复制完成后删除源介质中的迁移数据,并删除该数据域的原始路由,保留其迁移路由。
其中,所述复制单元501采用增加方式复制数据,包括:
目标介质没有待复制的数据时才允许复制,目标介质中有待复制数据时复制失败。
另外,所述指令控制模块403如图6所示,包括:
指令接收单元601,用于接收用户的访问指令;
读取单元602,所述指令接收单元601接收到对迁移数据的读取指令时,先通过迁移路由查询,若查询失败,再从原始路由查询;
修改单元603,所述指令接收单元601接收到对迁移数据的修改指令时,直接通过迁移路由写入修改后的新数据;
删除单元604,所述指令接收单元601接收到对迁移数据的删除指令时,先通过原始路由删除,再通过迁移路由删除。
较佳地,所述迁移模块402可以进一步包括:
追加单元,用于在所述读取单元完成读取指令后,将用户读取的数据复制到目标介质中,完成一次访问追加。
由上述的实施例可见,本发明的这种数据迁移方法及装置,在数据迁移过程中,不需要对用户的数据访问做任何的限制,完全不影响用户访问,而具体数据的迁移可以在后台同时进行,在数据服务期系统扩容时,由于新数据都是通过迁移路由写入目标介质,对于源介质不会再增加数据,也就不会因为迁移缓慢造成原存储介质容量枯竭而中断数据存储服务,对于面向用户的数据存储服务来说,相当于实现了瞬间扩容。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种数据迁移方法,其特征在于,该方法包括:
建立迁移数据到目标介质的迁移路由,同时保留迁移数据到源介质的原始路由;
在数据迁移过程中,接收到对迁移数据的访问指令时,根据预定的路由顺序进行数据访问操作,所述预定的路由顺序包括迁移路由和/或原始路由。
2.如权利要求1所述的数据迁移方法,其特征在于,所述根据预定路由顺序进行数据访问操作包括:
接收到对迁移数据的读取指令时,先通过迁移路由查询,若查询失败,再从原始路由查询;
接收到对迁移数据的修改指令时直接通过迁移路由写入修改后的新数据;
接收到对迁移数据的删除指令时,先通过原始路由删除,再通过迁移路由删除。
3.如权利要求2所述的数据迁移方法,其特征在于,所述数据迁移过程包括:
将迁移数据分为预定个数的数据域,以所述数据域为单位逐一读取源介质中的迁移数据并复制到目标介质,当该数据域中所有迁移数据复制完成后删除源介质中的迁移数据,并删除该数据域的原始路由,保留其迁移路由;直至迁移数据的所有的数据域均迁移完毕。
4.如权利要求3所述的数据迁移方法,其特征在于,所述复制为增加方式,包括:
目标介质没有待复制的数据时才允许复制,目标介质中有待复制数据时复制失败。
5.如权利要求2~4中任一项权利要求所述的数据迁移方法,其特征在于,所述读取指令完成后,该方法进一步包括:
若目标介质中不存在被读取数据,则将用户从源介质读取的数据复制到目标介质中,完成一次访问追加。
6.一种数据迁移装置,其特征在于,该装置包括:
路由建立模块,用于建立迁移数据到目标介质的迁移路由,同时保留迁移数据到源介质的原始路由;
迁移模块,用于执行数据迁移过程;
指令控制模块,用于在数据迁移过程中,接收到对迁移数据的访问指令时,根据预定的路由顺序进行数据访问操作,所述预定的路由顺序包括迁移路由和/或原始路由。
7.如权利要求6所述的数据迁移装置,其特征在于,所述指令控制模块包括:
指令接收单元,用于接收用户的访问指令;
读取单元,所述指令接收单元接收到对迁移数据的读取指令时,先通过迁移路由查询,若查询失败,再从原始路由查询;
修改单元,所述指令接收单元接收到对迁移数据的修改指令时,直接通过迁移路由写入修改后的新数据;
删除单元,所述指令接收单元接收到对迁移数据的删除指令时,先通过原始路由删除,再通过迁移路由删除。
8.如权利要求7所述的数据迁移装置,其特征在于,所述迁移模块包括:
复制单元,用于将迁移数据分为预定个数的数据域,以所述数据域为单位逐一读取源介质中的迁移数据并复制到目标介质;直至迁移数据的所有的数据域均迁移完毕;
处理单元,当所述数据域中所有迁移数据复制完成后删除源介质中的迁移数据,并删除该数据域的原始路由,保留其迁移路由。
9.如权利要求8所述的数据迁移装置,其特征在于,所述复制单元采用增加方式复制数据,包括:
目标介质没有待复制的数据时才允许复制,目标介质中有待复制数据时复制失败。
10.如权利要求7~9中任一项权利要求所述的数据迁移装置,其特征在于,所述迁移模块进一步包括:
追加单元,用于在所述读取单元完成读取指令后,若目标介质中不存在被读取数据,则将用户从源介质读取的数据复制到目标介质中,完成一次访问追加。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110419888.9A CN103164167B (zh) | 2011-12-15 | 2011-12-15 | 一种数据迁移方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110419888.9A CN103164167B (zh) | 2011-12-15 | 2011-12-15 | 一种数据迁移方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103164167A CN103164167A (zh) | 2013-06-19 |
CN103164167B true CN103164167B (zh) | 2016-03-23 |
Family
ID=48587296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110419888.9A Active CN103164167B (zh) | 2011-12-15 | 2011-12-15 | 一种数据迁移方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103164167B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103718533B (zh) | 2013-06-29 | 2015-06-10 | 华为技术有限公司 | 一种分区平衡子任务下发方法、装置与系统 |
CN104899218B (zh) * | 2014-03-06 | 2018-12-28 | 腾讯科技(深圳)有限公司 | 数据读写方法及数据读写装置 |
CN103971129B (zh) * | 2014-05-27 | 2017-07-07 | 浙江大学 | 一种基于学习跨数据域子空间的图像内容识别的分类方法及装置 |
CN106294471A (zh) * | 2015-06-03 | 2017-01-04 | 中兴通讯股份有限公司 | 数据迁移处理方法及装置 |
CN107133228A (zh) * | 2016-02-26 | 2017-09-05 | 华为技术有限公司 | 一种数据重分布的方法及装置 |
CN110427350A (zh) * | 2019-07-11 | 2019-11-08 | 北京梧桐车联科技有限责任公司 | 数据迁移中的数据处理方法及装置、存储设备及介质 |
CN112789606A (zh) * | 2019-09-11 | 2021-05-11 | 华为技术有限公司 | 数据重分布方法、装置及系统 |
CN111858541A (zh) * | 2020-06-29 | 2020-10-30 | 广东浪潮大数据研究有限公司 | 一种分布式文件系统的数据迁移控制方法及相关装置 |
CN111813739A (zh) * | 2020-09-11 | 2020-10-23 | 平安国际智慧城市科技股份有限公司 | 数据迁移方法、装置、计算机设备及存储介质 |
CN115113798B (zh) * | 2021-03-17 | 2024-03-19 | 中国移动通信集团山东有限公司 | 一种应用于分布式存储的数据迁移方法、系统及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7313154B2 (en) * | 2002-06-28 | 2007-12-25 | Harris Corporation | TDD frame format |
CN101969475A (zh) * | 2010-11-15 | 2011-02-09 | 张军 | 基于云计算的商业数据可控分发与融合应用系统 |
CN102185774A (zh) * | 2011-05-10 | 2011-09-14 | 中兴通讯股份有限公司 | 虚拟机无缝迁移的方法、管理器及系统 |
-
2011
- 2011-12-15 CN CN201110419888.9A patent/CN103164167B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103164167A (zh) | 2013-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103164167B (zh) | 一种数据迁移方法及装置 | |
US10776315B2 (en) | Efficient and flexible organization and management of file metadata | |
US20170220264A1 (en) | Zone forward drive management | |
CN102012852B (zh) | 一种增量写快照的实现方法 | |
US8719486B2 (en) | Pinning content in nonvolatile memory | |
KR101650424B1 (ko) | 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송 | |
CN103514249B (zh) | 一种数据自精简方法和系统及存储装置 | |
US11995063B2 (en) | Data set connection manager having a plurality of data sets to represent one data set | |
US20130290773A1 (en) | Storage system and storage control apparatus | |
CN107291883A (zh) | 一种分布式存储系统的快照方法及装置 | |
CN101946246A (zh) | 在i/o处理系统的通道子系统处提供控制块的间接数据寻址 | |
CN104216837A (zh) | 一种内存系统、内存访问请求的处理方法和计算机系统 | |
CN102239478B (zh) | 数据访问处理方法和设备 | |
CN105612488A (zh) | 数据写请求处理方法和存储阵列 | |
US20140068216A1 (en) | Storage system for supporting copy command and move command and operation method of storage system | |
CN105446664B (zh) | 一种对存储器进行文件存储方法和存储装置 | |
CN103329111A (zh) | 一种基于块存储的数据处理方法、装置及系统 | |
TW201723857A (zh) | 使用多串流的系統、方法以及製品 | |
JP2014203405A (ja) | 情報処理装置、メモリ制御装置、データ転送制御方法及びデータ転送制御プログラム | |
US20110238915A1 (en) | Storage system | |
CN105677252B (zh) | 读数据的方法、数据处理方法及相关存储设备 | |
US20080320062A1 (en) | Method of transferring file system, file system transference program, and file system transference device | |
CN110187834B (zh) | 重删副本的数据处理方法、装置、电子设备 | |
CN102521161B (zh) | 一种数据的缓存方法、装置和服务器 | |
JP6531574B2 (ja) | ストレージ装置、ストレージ装置制御プログラム及びストレージ装置制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |