基于文件目录的热迁移方法及装置与流程

文档序号:12666258阅读:198来源:国知局
基于文件目录的热迁移方法及装置与流程

本发明涉及分布式文件系统领域,尤其涉及基于文件目录的热迁移方法及装置。



背景技术:

现有基于文件系统的分布式存储系统中,随着读写量的增多或者出现扩容缩容行为时,系统中文件就会出现分布不均衡,因而需要进行热迁移。

而现有基于分布式文件系统的热迁移技术中,需要同时对多个待迁移文件的副本进行同步写,因而不能实现与前台IO进行隔离,从而造成在漫长的数据迁移过程中持续影响前台IO性能。



技术实现要素:

本发明的主要目的在于提供一种基于文件目录的热迁移方法及装置,旨在解决现有热迁移技术中未与前台IO进行隔离,进而使得在漫长的数据迁移过程中,持续影响前台IO性能的技术问题。

为实现上述目的,本发明提供一种基于文件目录的热迁移方法,应用于分布式文件系统,所述基于文件目录的热迁移方法包括:

创建待迁移文件目录下各文件的本地副本;

采用异步操作迁移数据,将所述本地副本中的第一部分数据从迁出端迁移到迁入端,并在数据迁移过程中对前台IO进行隔离;

当完成所述第一部分数据的迁移时,阻塞前台IO,并采用同步操作迁移数据,将所述本地副本中的第二部分数据从所述迁出端迁移到所述迁入端;

将所述待迁移文件目录下各文件的访问路径从所述迁出端切换到所述迁入端,其中,异步操作迁移的总数据量大于同步操作迁移的总数据量。

优选地,采用后台主动创建与写时复制被动创建的并行创建方式,对所述待迁移文件目录下各文件进行全量快照,以创建对应的本地副本;

其中,在所述后台主动创建方式下,若所述待迁移文件目录所在磁盘的读写IO队列由非空变换为空,则启动进行所述本地副本的创建,若该磁盘的读写IO队列由空变换为非空,则暂停进行所述本地副本的创建;

在所述写时复制被动创建方式下,若前台IO对未创建本地副本的文件进行读写,则在该文件被修改之前,完成该文件的本地副本的创建。

优选地,所述在数据迁移过程中对前台IO进行隔离包括:

在数据迁移过程中,对前台IO队列进行监控;

若前台IO队列由非空变换为空,则启动进行数据迁移,若前台IO队列由空变换为非空,则暂停进行数据迁移。

优选地,所述基于文件目录的热迁移方法还包括:

在采用异步操作迁移数据之前,将写操作的日志状态设置为异步记录日志状态,在采用同步操作迁移数据之前,将写操作的日志状态设置为同步记录日志状态。

优选地,采用租约机制回收所述分布式文件系统的客户端写权限,以供阻塞前台IO。

进一步地,为实现上述目的,本发明还提供一种基于文件目录的热迁移装置,应用于分布式文件系统,所述基于文件目录的热迁移装置包括:

创建模块,用于创建待迁移文件目录下各文件的本地副本;

异步迁移模块,用于采用异步操作迁移数据,将所述本地副本中的第一部分数据从迁出端迁移到迁入端,并在数据迁移过程中对前台IO进行隔离;

同步迁移模块,用于当完成所述第一部分数据的迁移时,阻塞前台IO,并采用同步操作迁移数据,将所述本地副本中的第二部分数据从所述迁出端迁移到所述迁入端;

切换模块,用于将所述待迁移文件目录下各文件的访问路径从所述迁出端切换到所述迁入端,其中,异步操作迁移的总数据量大于同步操作迁移的总数据量。

优选地,采用后台主动创建与写时复制被动创建的并行创建方式,对所述待迁移文件目录下各文件进行全量快照,以创建对应的本地副本;

其中,所述创建模块还用于:在所述后台主动创建方式下,若所述待迁移文件目录所在磁盘的读写IO队列由非空变换为空,则启动进行所述本地副本的创建,若该磁盘的读写IO队列由空变换为非空,则暂停进行所述本地副本的创建;在所述写时复制被动创建方式下,若前台IO对未创建本地副本的文件进行读写,则在该文件被修改之前,完成该文件的本地副本的创建。

优选地,所述异步迁移模块还用于:

在数据迁移过程中,对前台IO队列进行监控;

若前台IO队列由非空变换为空,则启动进行数据迁移,若前台IO队列由空变换为非空,则暂停进行数据迁移。

优选地,所述基于文件目录的热迁移装置还包括:

设置模块,用于在采用异步操作迁移数据之前,将写操作的日志状态设置为异步记录日志状态,在采用同步操作迁移数据之前,将写操作的日志状态设置为同步记录日志状态。

优选地,采用租约机制回收所述分布式文件系统的客户端写权限,以供阻塞前台IO。

本发明中,将数据迁移过程分为异步阶段与同步阶段两个部分,其中异步阶段迁移绝大部分数据量,但不会对前台IO业务造成阻塞,而同步阶段迁移数据量少,但会瞬间阻塞前台IO业务,本发明采用上述方式可以在保证大量数据迁移的情况下,达到对前台IO影响最小的效果。

附图说明

图1为本发明基于文件目录的热迁移方法中分布式文件系统一实施例的逻辑关系示意图;

图2为本发明基于文件目录的热迁移方法一实施例的流程示意图;

图3为基于文件目录的热迁移装置第一实施例的功能模块示意图;

图4为基于文件目录的热迁移装置第二实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明基于文件目录的热迁移方法中分布式文件系统一实施例的逻辑关系示意图。

如图1所示,本实施例中具体在上层的分布式文件系统之下,增加一层透明的迁移逻辑,整个迁移过程由服务侧进而控制,对客户端透明,因此,本实施例中的迁移逻辑与客户端的迁移逻辑互不干扰。

MDS表示元数据服务器,主要负责监控物理节点的状态和按负载情况计算数据布局以及:1.定时采集各brick的负载情况,按负载重新计算布局OSD-Brick映射视图;2.统一保存brick状态,包括up/down/in/out;3.发放/回收对OSD的写权限;4.MDS采用Zk集群,保障可靠性。

Brick表示物理节点,对应一个磁盘。主要用于:1.管理迁入/迁出任务;2.每个brick对应一个BrickProxy。

OSD表示逻辑节点,对应磁盘上一个文件目录,主要用于具体执行写开关和缓冲IO。

基于上述分布式文件系统的逻辑关系,提出本发明基于文件目录的热迁移方法及装置的各实施例。

参照图2,图2为本发明基于文件目录的热迁移方法一实施例的流程示意图。

为实现大量数据热迁移的同时,达到对前台IO影响最小的目的,本实施例中,基于文件目录的热迁移方法包括:

步骤S10,创建待迁移文件目录下各文件的本地副本;

本实施例中,为进行数据的热迁移,因此,需要先创建待迁移数据的副本。本实施例中具体基于文件目录进行数据热迁移,因此,需要创建待迁移文件目录下各文件的本地副本。比如待迁移文件目录下有五个文件,则需要创建该五个文件所各自对应的总共五个本地副本,也即在本地迁出端创建对应的镜像文件。

需要进一步说明的是,本实施例中的文件目录下的文件通常都是小文件(数据量小于4M),因此,在迁移效率上较现有方式效率更高。同时,本实施例中并不限定本地副本的创建方式,具体根据实际需要进行设置。

步骤S20,采用异步操作迁移数据,将本地副本中的第一部分数据从迁出端迁移到迁入端,并在数据迁移过程中对前台IO进行隔离;

步骤S30,当完成第一部分数据的迁移时,阻塞前台IO,并采用同步操作迁移数据,将本地副本中的第二部分数据从迁出端迁移到迁入端;

本实施例中,具体基于前台IO操作以区分同步操作与异步操作。若与前台IO的写操作同步而迁移数据,则为采用同步操作迁移数据,而若与前台IO的写操作不同步而迁移数据,则为采用异步操作迁移数据。其中,异步操作迁移数据不需要阻塞前台IO,而同步操作迁移数据则需要阻塞前台IO。

此外,本实施例中,对于第一部分数据与第二部分数据的划分方式不限,例如直接将本地副本划分为两部分,分别对应第一部分数据与第二部分数据,或者以当前所满足的条件进行划分,比如在迁移数据的过程中,若当前迁移的数据量达到总数据量的N%时,则将之前迁移的数据看成是第一部分数据而采用异步操作迁移数据,而剩余的看成是第二部分数据而采用同步操作迁移数据。

本实施例中,迁入端与迁出端分别对应不同的磁盘。同时,为降低数据迁移对前台IO所带来的影响,因此,需要在数据迁移过程中对前台IO进行隔离。可选的,采用租约机制回收分布式文件系统的客户端写权限,以供阻塞前台IO。

步骤S40,将待迁移文件目录下各文件的访问路径从迁出端切换到迁入端,其中,异步操作迁移的总数据量大于同步操作迁移的总数据量。

本实施例中,在完成数据迁移后,客户端访问迁移数据的路径也已经发生了改变,因此还需进一步将待迁移文件目录下各文件的访问路径从迁出端切换到迁入端。

本实施例中,为将数据迁移对前台IO的影响降到最低,因此,在异步迁移数据时,尽量迁移更多的数据,而在同步迁移数据(需要阻塞前台IO)时,则尽量迁移更少的数据,也即第一部分的数据量要远远大于第二部分的数据量。

本实施例中,将数据迁移过程分为异步阶段与同步阶段两个部分,其中异步阶段迁移绝大部分数据量,但不会对前台IO业务造成阻塞,而同步阶段迁移数据量少,但会瞬间阻塞前台IO业务,本实施例采用上述方式可以在保证大量数据迁移的情况下,达到对前台IO影响最小的效果。

进一步地,在本发明基于文件目录的热迁移方法另一实施例中,具体采用后台主动创建与写时复制被动创建的并行创建方式,对待迁移文件目录下各文件进行全量快照,以创建对应的本地副本。

本实施例中,在后台主动创建方式下,若待迁移文件目录所在磁盘的读写IO队列由非空变换为空,则启动进行本地副本的创建,若该磁盘的读写IO队列由空变换为非空,则暂停进行本地副本的创建;

而在写时复制被动创建方式下,若前台IO对未创建本地副本的文件进行读写,则在该文件被修改之前,完成该文件的本地副本的创建,进而延迟了副本的创建,也即通过控制同时创建副本的并发数量,以避免集中创建多个文件副本而造成磁盘IO被全部占用。

与现有热迁移技术中迁移大文件的方案不同的是,本实施例中具体针对文件目录以及4M小文件,因此,本地副本也是小文件镜像且采用主动与被动两种方式进行并行创建,从而在控制创建镜像的并发数量的同时,避免造成磁盘IO全占用。

进一步地,在本发明基于文件目录的热迁移方法另一实施例中,在数据迁移过程中对前台IO进行隔离包括:

(1)在数据迁移过程中,对前台IO队列进行监控;

(2)若前台IO队列由非空变换为空,则启动进行数据迁移,若前台IO队列由空变换为非空,则暂停进行数据迁移。

为将数据迁移对前台IO的影响降到最低,因此,本实施例中对前台IO进行隔离具体是针对CPU、带宽等多个维度。而现有技术中则需要在指定时间内完成数据迁移,因而现有热迁移技术是没有做完全前台IO隔离的。

本实施例中,采用异步迁移与同步迁移相结合的方式,进而可使得对前台IO的阻塞时间最短。同时,通过全量快照可避免数据迁移过程中影响前台IO的读写,同时进一步提供了前台IO隔离,以进一步保证前台IO不受影响。

进一步可选地,在本发明基于文件目录的热迁移方法又一实施例中,基于文件目录的热迁移方法还包括:

在采用异步操作迁移数据之前,将写操作的日志状态设置为异步记录日志状态,在采用同步操作迁移数据之前,将写操作的日志状态设置为同步记录日志状态。

现有热迁移技术中通常是将整个虚拟机的运行状态完整保存下来进行迁移,因此,现有技术中的虚拟机迁移是大成功概率事件,因而需要在指定的时间内完成热迁移,所以使用同步日志以支持重启后的续传,而所产生的副作用是同步日志影响性能。

而本实施例针对的是热平衡,这是小成功概率事件,系统永远处于热平衡状态,没有起点与终点,同时热平衡持续时间远长于虚拟机迁移。同时,大部分的热平衡任务可能出现暂停取消,且每次只有少量会成功。因而本实施例中在初始阶段使用异步日志,就是考虑重启后不需要续传,同时将性能影响降到最低。

参照图3,图3为基于文件目录的热迁移装置第一实施例的功能模块示意图。本实施例中,基于文件目录的热迁移装置包括:

创建模块10,用于创建待迁移文件目录下各文件的本地副本;

本实施例中,为进行数据的热迁移,因此,需要先创建待迁移数据的副本。本实施例中具体基于文件目录进行数据热迁移,因此,需要创建待迁移文件目录下各文件的本地副本。比如待迁移文件目录下有五个文件,则需要创建该五个文件所各自对应的总共五个本地副本,也即在本地迁出端创建对应的镜像文件。

需要进一步说明的是,本实施例中的文件目录下的文件通常都是小文件(数据量小于4M),因此,在迁移效率上较现有方式效率更高。同时,本实施例中并不限定本地副本的创建方式,具体根据实际需要进行设置。

异步迁移模块20,用于采用异步操作迁移数据,将本地副本中的第一部分数据从迁出端迁移到迁入端,并在数据迁移过程中对前台IO进行隔离;

同步迁移模块30,用于当完成第一部分数据的迁移时,阻塞前台IO,并采用同步操作迁移数据,将本地副本中的第二部分数据从迁出端迁移到迁入端;

本实施例中,具体基于前台IO操作以区分同步操作与异步操作。若与前台IO的写操作同步而迁移数据,则为采用同步操作迁移数据,而若与前台IO的写操作不同步而迁移数据,则为采用异步操作迁移数据。其中,异步操作迁移数据不需要阻塞前台IO,而同步操作迁移数据则需要阻塞前台IO。

此外,本实施例中,对于第一部分数据与第二部分数据的划分方式不限,例如直接将本地副本划分为两部分,分别对应第一部分数据与第二部分数据,或者以当前所满足的条件进行划分,比如在迁移数据的过程中,若当前迁移的数据量达到总数据量的N%时,则将之前迁移的数据看成是第一部分数据而采用异步操作迁移数据,而剩余的看成是第二部分数据而采用同步操作迁移数据。

本实施例中,迁入端与迁出端分别对应不同的磁盘。同时,为降低数据迁移对前台IO所带来的影响,因此,需要在数据迁移过程中对前台IO进行隔离。可选的,采用租约机制回收分布式文件系统的客户端写权限,以供阻塞前台IO。

切换模块40,用于将待迁移文件目录下各文件的访问路径从迁出端切换到迁入端,其中,异步操作迁移的总数据量大于同步操作迁移的总数据量。

本实施例中,在完成数据迁移后,客户端访问迁移数据的路径也已经发生了改变,因此还需进一步将待迁移文件目录下各文件的访问路径从迁出端切换到迁入端。

为将数据迁移对前台IO的影响降到最低,因此,在异步迁移数据时,尽量迁移更多的数据,而在同步迁移数据(需要阻塞前台IO)时,则尽量迁移更少的数据,也即第一部分的数据量要远远大于第二部分的数据量。

本实施例中,将数据迁移过程分为异步阶段与同步阶段两个部分,其中异步阶段迁移绝大部分数据量,但不会对前台IO业务造成阻塞,而同步阶段迁移数据量少,但会瞬间阻塞前台IO业务,本实施例采用上述方式可以在保证大量数据迁移的情况下,达到对前台IO影响最小的效果。

进一步地,基于文件目录的热迁移装置一实施例中,采用后台主动创建与写时复制被动创建的并行创建方式,对待迁移文件目录下各文件进行全量快照,以创建对应的本地副本;

本实施例中,创建模块10还用于:在后台主动创建方式下,若待迁移文件目录所在磁盘的读写IO队列由非空变换为空,则启动进行本地副本的创建,若该磁盘的读写IO队列由空变换为非空,则暂停进行本地副本的创建;在写时复制被动创建方式下,若前台IO对未创建本地副本的文件进行读写,则在该文件被修改之前,完成该文件的本地副本的创建。

与现有热迁移技术中迁移大文件的方案不同的是,本实施例中具体针对文件目录以及4M小文件,因此,本地副本也是小文件镜像且采用主动与被动两种方式进行并行创建,从而在控制创建镜像的并发数量的同时,避免造成磁盘IO全占用。

进一步可选地,基于文件目录的热迁移装置一实施例中,异步迁移模块20还用于:

(1)在数据迁移过程中,对前台IO队列进行监控;

(2)若前台IO队列由非空变换为空,则启动进行数据迁移,若前台IO队列由空变换为非空,则暂停进行数据迁移。

为将数据迁移对前台IO的影响降到最低,因此,本实施例中对前台IO进行隔离具体是针对CPU、带宽等多个维度。而现有技术中则需要在指定时间内完成数据迁移,因而现有热迁移技术是没有做完全前台IO隔离的。

本实施例中,采用异步迁移与同步迁移相结合的方式,进而可使得对前台IO的阻塞时间最短。同时,通过全量快照可避免数据迁移过程中影响前台IO的读写,同时进一步提供了前台IO隔离,以进一步保证前台IO不受影响。

参照图4,图4为基于文件目录的热迁移装置第二实施例的功能模块示意图。本实施例中,基于文件目录的热迁移装置包括:

设置模块50,用于在采用异步操作迁移数据之前,将写操作的日志状态设置为异步记录日志状态,在采用同步操作迁移数据之前,将写操作的日志状态设置为同步记录日志状态。

现有热迁移技术中通常是将整个虚拟机的运行状态完整保存下来进行迁移,因此,现有技术中的虚拟机迁移是大成功概率事件,因而需要在指定的时间内完成热迁移,所以使用同步日志以支持重启后的续传,而所产生的副作用是同步日志影响性能。

而本实施例针对的是热平衡,这是小成功概率事件,系统永远处于热平衡状态,没有起点与终点,同时热平衡持续时间远长于虚拟机迁移。同时,大部分的热平衡任务可能出现暂停取消,且每次只有少量会成功。因而本实施例中在初始阶段使用异步日志,就是考虑重启后不需要续传,同时将性能影响降到最低。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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