用于快照建立的方法和系统与流程

文档序号:12801846阅读:431来源:国知局
用于快照建立的方法和系统与流程

本发明涉及云计算领域,尤其涉及一种用于快照建立的方法和系统。



背景技术:

快照可定义为将某一时刻存储设备上的数据生成一个“卷影副本”。快照并不是立即占用相同容量的存储空间备份数据,而是将之后写入的数据重新定位以保持“快照”内的数据不被覆盖。快照也可以理解为是指向保存在存储设备中的数据的引用标记或指针。目前,快照功能作为一种基础功能已普遍运用在虚拟化技术中,通过快照可以使得当虚机系统发现问题后快速恢复到快照的时间点,从而有效保护磁盘上的文件系统和虚拟机的内存状态数据。快照技术常运用在应用测试、系统升级等场景。

不同虚拟化技术或代表厂家实现快照的方式不尽相同,根据快照建立后新数据存储位置不同大致可分为内部快照、外部快照。内部快照技术采用写时复制的方式(copyonwrite,简称:cow)的方式进行,快照建立后,一旦原始卷数据块发生首次更新,则先将原始卷数据块读出并写入快照卷,然后用新数据块覆盖原始卷。外部快照技术将在快照建立是新生成一个快照磁盘,并将原有磁盘设为只读,当快照建立后,会将磁盘更新的数据部分写到新建的快照磁盘中。

然而不论哪种快照方式,在建立快照时都会引起虚机的暂停。原因是快照建立过程中系统需要做一系列的准备,例如通知网络附属存储服务器将目前有数据的磁盘区块全部保留起来;然后新建快照磁盘用于新数据存储;还需要相关配置文件,例如记录新旧磁盘映射关系的指针表、记录内存状态的文件、记录快照变化的文件等。由于上述 原因,因此现有技术在快照建立时均存在不同时长的暂停现象,暂停时间长短与虚拟机镜像大小、宿主机性能等因素相关,这就会导致虚拟机业务出现中断、不连续,继而影响用户体验。在快照建立时的虚拟机业务不连续的问题,是目前亟待解决的问题之一。



技术实现要素:

本发明的发明人发现了上述现有技术中存在问题,并因此针对上述问题中的至少一个问题提出了一种新的技术方案。

根据本发明的一个方面,提供了一种用于快照建立的方法,包括:

在快照建立阶段,快照控制器指示存储服务器锁定原磁盘;

快照控制器指示通用块层模块将指令经io(inputoutput,输入输出)调度设备发送至缓存块设备,指令包括读指令和写指令;

缓存块设备接收io调度层模块发送的指令;

当指令为写指令时,缓存块设备保存待写入数据和管理参数。

在一个实施例中,管理参数包括与待写入数据相关的地址结构体。

在一个实施例中,还包括:

当指令为读指令时,缓存块设备根据读指令查找相应的内容;

当缓存块设备查找到相应的内容时,则读取相应的内容。

在一个实施例中,还包括:

当缓存块设备未查找到相应的内容时,则将读指令发送至目标块设备驱动模块;

目标块设备驱动模块根据读指令从原磁盘中读取相应的内容。

在一个实施例中,还包括:

在快照建立之后,快照控制器指示存储服务器解除对原磁盘的锁定;

快照控制器指示数据同步模块根据管理参数将待写入数据写入原磁盘;

数据同步模块在写入完成后向快照控制器发送写入完成消息;

快照控制器在接收到写入完成消息后,指示通用块层模块将指令经io调度层模块发送给目标块设备驱动模块,以便目标块设备驱动模块根据指令对原磁盘进行相应操作。

根据本发明的另一方面,提供了一种用于快照建立的系统,包括:

快照控制器,用于在快照建立阶段,指示存储服务器锁定原磁盘;指示通用块层模块将指令经输入输出io调度层模块发送至缓存块设备,指令包括读指令和写指令;

存储服务器,用于在快照建立阶段,根据快照控制器的指示锁定原磁盘;

通用块层模块,用于在快照建立阶段,根据快照控制器的指示,将指令经io调度层模块发送至缓存块设备;

io调度层模块,用于在快照建立阶段,将指令转发至缓存块设备;

缓存块设备,用于在快照建立阶段,接收io调度层模块发送的指令;当指令为写指令时,保存待写入数据和管理参数。

在一个实施例中,管理参数包括与待写入数据相关的地址结构体。

在一个实施例中,缓存块设备,还用于当指令为读指令时根据读指令查找相应的内容;当查找到相应的内容时,则读取相应的内容。

在一个实施例中,还包括目标块设备驱动模块,其中,

缓存块设备,还用于当未查找到相应的内容时,则将读指令发送至目标块设备驱动模块;

目标块设备驱动模块,用于根据读指令从原磁盘中读取相应的内容。

在一个实施例中,还包括数据同步模块,其中:

快照控制器,还用于在快照建立之后,指示存储服务器解除对原磁盘的锁定;指示数据同步模块根据管理参数将待写入数据写入原磁盘;在接收到写入完成消息后,指示通用块层模块将指令经io调度层模块发送给目标块设备驱动模块;

存储服务器,还用于在快照建立之后,根据快照控制器的指示解除对原磁盘的锁定;

数据同步模块,用于在快照建立之后,根据管理参数将待写入数据写入原磁盘;在写入完成后向快照控制器发送写入完成消息;

通用块层模块,还用于在快照建立之后,根据快照控制器的指示将指令发送给目标块设备驱动模块;

目标块设备驱动模块,还用于在快照建立后,根据指令对原磁盘进行相应操作。

本发明的用于快照建立的方法和系统,能够使得虚拟机在快照建立的过程中不中断运行,保持业务的连续,提高了虚拟机运行效率和用户体验。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明用于快照建立的方法一个实施例的流程图。

图2为本发明用于快照建立的方法另一个实施例的流程图。

图3为本发明用于快照建立的方法的又一个实施例的流程图。

图4为本发明用于快照建立的系统一个实施例的示意图。

图5为本发明一个实施例的系统架构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图5为本发明一个实施例的系统架构图。如图5所示,本实施例涉及的快照控制器501、通用块层503、io调度层504、缓存块设备505、目标块设备驱动506、flusher内核线程507位于虚拟机系统的内核空间中,用户通过虚拟机文件系统发送指令,对存储服务器502中的原磁盘5021和快照磁盘5022进行读写操作,其中:

快照控制器501,控制快照相关指令触发、生命周期管理,包括触发快照、删除快照、合并快照等与快照生命周期相关的管理。

通用块层503,为内核组件,处理来自系统中的所有块设备发出的系统i/o请求,为所有的块设备提供了一个抽象视图,从而隐藏硬件块设备间的差异性。在快照建立过程中,通用块层将截获磁盘读写指令,并重定向到缓存块设备505。

io调度层504,根据预先定义的内核策略将待处理的i/o数据传送请求归类。调度程序的作用是把物理介质上相邻的数据请求聚集在一起。

缓存块设备505,在快照建立、数据回写过程中,接收来自io调度层504的指令。对于读指令,将不被缓存命中的读指令定向到目标块设备驱动506,由目标块设备驱动504向原磁盘5021申请读取相应的内容;若被缓存命中的读指令则直接从缓存中读取,不经过原磁盘5021。对于写指令则直接由缓存块设备处理,缓存写数据。

目标块设备驱动506,向磁盘硬件接口发送适当的命令,从而进行实际的数据传送。

flusher内核线程507,在满足一定时间间隔、脏页达到一定比例时等条件,将脏页面放入设备的io请求队列,同步到磁盘上。利用flusher内核线程将缓存数据回写到磁盘。

图1为本发明的用于快照建立的方法的一个实施例的流程图。图5为本发明的系统架构图。结合图1和图5,如图1所示,本实施例的方法步骤如下:

步骤101,在快照建立阶段,快照控制器指示存储服务器锁定原磁盘。存储服务器将原磁盘锁定后使得原磁盘不能够被覆写。其中原 磁盘为需要建立快照磁盘、磁盘分区等。

步骤102,快照控制器指示通用块层将指令经io调度层(例如虚拟机文件系统内核空间中的io调度层)发送至缓存块设备,其中指令包括读指令和写指令。在未建立快照时的正常读取流程中,通用块层(例如虚拟机文件系统内核空间中的通用块层)将读写指令通过io调度层发送至目标块设备驱动(例如目标块设备驱动驱动),目标块设备驱动根据读写指令完成对磁盘进行相应的读写操作。

现有技术中在快照建立阶段,将需要建立快照的原磁盘进行锁定,文件服务中止。本实施例中,在快照建立阶段,快照控制器将指示通用块层截获对目标块设备驱动的读写指令,将指令经io调度层发送给缓存块设备,从而将指令进行重定向。通过对指令的重定向,不中断用户的文件服务,保障业务的运行。

步骤103,缓存块设备接收io调度层发送的指令。

步骤104,当指令为写指令时,缓存块设备保存到写入数据和管理参数。

在一个实施例中,管理参数包括了与待写入数据相关的地址结构体例如address_space等,该地址结构体是虚拟地址结构体的物理地址对等体,以便于在快照建立之后按照相应的地质结构体将待写入数据回写入原磁盘。

本实施例中,在快照建立阶段,并不中断虚拟机的业务,而在现有技术中,在快照建立时,需要中断业务,无法进行写操作。本发明通过引入缓存块设备,在快照建立时,当用户进行写操作,则将待写入数据和管理参数存入缓存块设备,此过程用户无感知,提升了用户体验。

图2为本发明的用于快照建立的方法的另一个实施例的流程图。如图2所示,本实施例的方法步骤如下:

步骤201,在快照建立阶段,快照控制器指示存储服务器锁定原磁盘。

步骤202,快照控制器指示通用块层将指令经io调度层发送至 缓存块设备,其中指令包括读指令和写指令。

步骤203,缓存块设备接收io调度层发送的指令。

步骤204,当指令为读指令时,缓存块设备根据读指令查找相应的内容。

步骤205,缓存块设备判断是否查找到相应的内容。当查找到相应的内容时,进入步骤206,当未查找到相应的内容时,进入步骤207。

步骤206,缓存块设备根据读指令读取相应的内容。如图1所示实施例,在快照建立阶段,当缓存块设备接收指令为写指令时,存储待写入数据。之后当用户发起的读指令为读取之前的待写入数据时,由于待写入数据此时并未写入原磁盘,因此,缓存块设备可以查找到相应的内容,并进行读取。当读取的内容为原磁盘中的内容时,则需要进入步骤207处理。

步骤207,缓存块设备将读指令发送至目标块设备驱动。

步骤208,目标块设备驱动根据读指令从原磁盘中读取相应的内容。当缓存块设备中没有缓存有相应的内容时,将读指令发送目标块设备驱动,由目标块设备驱动从原磁盘读取并发送至用户。

如图2所示的实施例中,当用户在快照建立阶段进行读操作时,缓存块设备在首先查找相关的内容,当查找到相关的内容时进行读取,当未查找到时,则将读指令发送给目标块设备驱动进行相关内容的读取。从而保证了快照建立时业务的流畅,即使用户快照建立阶段写入了新数据也可以进行读取,不中断业务,改善了用户体验。

图3为本发明的用于快照建立的方法的又一个实施例的流程图。如图3所示,本实施例的方法步骤如下:

步骤301,在快照建立后,快照控制器指示存储服务器解除对原磁盘的锁定,从而恢复对原磁盘的读写。

步骤302,快照控制器指示数据同步模块根据管理参数将待写入数据写入原磁盘。快照建立后,生成了快照磁盘,此时待写入数据缓存在缓存块设备中,并未写入磁盘。数据同步模块例如flusher内核线程根据快照控制器的指示,调用fsync()函数,周期性的将缓存块 设备中的待写入数据(例如脏页)进行回写入原磁盘中。本领域技术人员通过本发明可以了解的是,脏页回写过程中,根据虚拟化技术采用的是内部快照技术还是外部快照技术,将脏页进行回写入原磁盘或快照磁盘中。

步骤303,数据同步模块在写入完成后向快照控制器发送写入完成消息。在数据同步模块未完成脏页回写阶段,用户对文件的读写指令依然经缓存块设备处理,直至数据同步模块完成写入。

步骤304,快照控制器在接收到写入完成消息后,指示通用块层将用户的读写指令经io设备发送给目标块设备驱动,以恢复对原磁盘的读写。

图3所示的实施例中,在快照建立之后,数据同步模块首先将缓存块设备中的待写入数据写入原磁盘,待写入完成后再恢复对原磁盘的读写流程,从而保证了业务的完整、数据的安全。

图4为本发明用于快照建立的系统的一个实施例的示意图,图5为本发明的系统架构图。如图4和图5所示,本发明的用于快照建立的系统400包括:

快照控制器401用于在快照建立阶段,指示存储服务器402锁定原磁盘4021;指示通用块层模块403将指令经io调度层模块404发送至缓存块设备405,其中指令包括读指令和写指令。快照控制器401还可以用于触发快照、删除快照、合并快照等与快照生命周期相关的管理。

通用块层模块403用于在快照建立阶段,根据快照控制器401的指示,将指令经io调度层模块404发送至缓存块设备405。例如,通用块层模块403可以为虚拟机系统中内核空间的通用块层组件,处理系统中所有块设备发出的io请求,为块设备提供抽象视图,来隐藏硬件块设备之间的差异性。

io调度层模块404用于在快照建立阶段,将指令转发至缓存块设备405。例如,io调度层模块404可以为内核空间中的io调度层,根据预先定义的内核策略将待处理的io数据传送请求归类,从而把 物理介质(例如磁盘)的相邻数据请求聚集在一起。

缓存块设备405用于在快照建立阶段,接收io调度层模块404发送的指令;当指令为写指令时,保存待写入数据和管理参数。其中管理参数包括与待写入数据相关的地址结构体。从而保证了在快照建立阶段,用户依然可以进行写操作,而不需要中断业务。

在一个实施例中,缓存块设备405还用于当指令为读指令时根据读指令查找相应的内容;当查找到相应的内容时,则读取相应的内容。当未查找到所述相应的内容时,则缓存块设备405将读指令发送至目标块设备驱动模块406。目标块设备驱动模块406用于根据读指令从原磁盘中读取相应的内容,从而保证了用户在快照建立阶段,依然可以进行读操作。

在一个实施例中,本发明的用于快照建立的系统还包括数据同步模块407,例如flusher内核线程,其可以在一定时间间隔内、缓存块设备中的脏页达到一定比例时,将脏页放入io请求队列,通过目标块设备驱动模块406将脏页同步至存储服务器402中。其中,

快照控制器401还用于在快照建立之后,指示存储服务器402解除对原磁盘4021的锁定;指示数据同步模块407(例如flusher内核线程)根据管理参数将待写入数据写入原磁盘4021;在接收到写入完成消息后,指示通用块层模块403将指令经io调度层模块404发送给目标块设备驱动模块406;其中快照保存在快照磁盘4022中。

数据同步模块407用于在快照建立之后,根据管理参数将待写入数据写入原磁盘4021;在写入完成后向快照控制器401发送写入完成消息。

通用块层模块403还用于在快照建立之后,根据快照控制器401的指示将指令发送给目标块设备驱动模块406。

目标块设备驱动模块406还用于在快照建立后,根据指令对原磁盘4021进行相应操作。

图4所示实施例中,本发明的用于快照建立的系统,能够使得虚拟机在快照建立的过程中不中断运行,保持业务的连续,提高了虚拟 机运行效率和用户体验。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

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