一种基于linux系统的COW快照数据刷写方法及其系统与流程

文档序号:12596756阅读:469来源:国知局
一种基于linux系统的COW快照数据刷写方法及其系统与流程

本发明涉及快照技术领域,特别是涉及一种基于linux系统的COW快照数据刷写方法及其系统。



背景技术:

在linux系统中,当IO数据第一次写入到linux系统的源卷内的某个存储位置时,会执行COW(Copy On Write,写时复制)快照操作,COW快照操作的内容为:首先将该位置的原有内容读取出来,复制到目的卷内的某个位置,然后再将IO数据写入到该位置中;即在新数据写入时,为避免数据覆盖而将旧数据存储至另一位置,而这个过程中会产生一个包含新旧数据的位置映射关系(数据块之间)的例外信息。目前的COW快照操作每执行一次,即会将生成的例外信息刷写至磁盘内。

由于在上述操作中,COW快照操作是针对数据块进行的,若源卷内的数据块大小较小(例如为4KB),而写入的IO数据较大(例如为20G),这时一次IO写操作会需要执行多次COW快照操作,生成多个例外信息,故该种情况下访问磁盘的次数是非常大的,而频繁的磁盘访问会拖慢IO的处理速度,影响linux系统的性能。

因此,如何提供一种处理速度快且对系统性能影响小的基于linux系统的COW快照数据刷写方法及其系统是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种基于linux系统的COW快照数据刷写方法及其系统,能够在不影响CPW快照性能的基础上,大大减少访问磁盘的次数,提高IO的处理速度,尽可能避免影响linux系统的性能。

为解决上述技术问题,本发明提供了一种基于linux系统的COW快照数据刷写方法,包括:

当有IO数据写入时,执行CPW快照操作,并将生成的例外信息存储于内存中的快照数据块内;

判断所述快照数据块是否达到预设刷写条件,如果是,将所述快照数据块内的例外信息统一刷写至磁盘内。

优选地,所述预设刷写条件具体包括:

所述快照数据块被判定为脏块且所述脏块所处dirty链表的容量超出预设容量限制范围和/或所述linux系统出现掉电情况。

优选地,所述快照数据块被判定为脏块的条件具体为:

所述快照数据块超过预设时间未被访问。

优选地,所述预设容量限制范围为缓冲区固定容量值的75%。

优选地,判断所述linux系统是否出现掉电情况的过程具体为:

实时检测所述linux系统的电源电压值;

判断所述电源电压值是否低于预设电压阈值,如果是,所述linux系统出现掉电情况。

优选地,当判断所述linux系统出现掉电情况后,所述将所述快照数据块内的例外信息统一刷写至磁盘内的过程具体为:

控制所述linux系统切换至大电容供电,然后将所述快照数据块内的例外信息统一刷写至所述磁盘内。

优选地,所述控制所述linux系统切换至大电容供电之后还包括:

发送截断指令至IO栈,控制所述IO栈停止下发IO数据;

确定当前例外信息的状态情况,得到状态信息并写入所述linux系统的超级块内,供所述linux系统上电后按照所述状态信息进行相应的处理。

为解决上述技术问题,本发明还提供了一种基于linux系统的COW快照数据刷写系统,包括:

快照操作模块,用于当有IO数据写入时,执行CPW快照操作,并将生成的例外信息存储于内存中的快照数据块内;

刷写判断模块,用于判断所述快照数据块是否达到预设刷写条件,如果是,将所述快照数据块内的例外信息统一刷写至磁盘内。

优选地,所述刷写判断模块具体包括:

脏块判断单元,用于判断所述快照数据块是否被判定为脏块且所述脏块所处dirty链表的容量是否超出预设容量限制范围,如果是,所述快照数据块满足所述预设刷写条件,触发刷写单元;

掉电判断单元,用于实时检测所述linux系统的电源电压值;判断所述电源电压值是否低于预设电压阈值,如果是,所述linux系统出现掉电情况,控制所述linux系统切换至大电容供电,并触发所述刷写单元;

所述刷写单元,用于将所述快照数据块内的例外信息统一刷写至磁盘内。

本发明提供了一种基于linux系统的COW快照数据刷写方法及其系统,本发明取消了COW快照操作中每次生成例外信息即将其刷写至磁盘的操作,而是将每次生成的例外信息存储至内存中的快照数据块内,直达快照数据块满足预设刷写条件后,才将快照数据块内存储的若干例外信息一次性刷写至磁盘内。可见,本发明在不影响CPW快照性能的基础上,大大减少了访问磁盘的次数,提高了IO的处理速度,尽可能避免了影响linux系统的性能。

附图说明

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

图1为本发明提供的一种基于linux系统的COW快照数据刷写方法的过程的流程图;

图2为本发明提供的一种基于linux系统的COW快照数据刷写系统的结构示意图。

具体实施方式

本发明的核心是提供一种基于linux系统的COW快照数据刷写方法及其系统,能够在不影响CPW快照性能的基础上,大大减少访问磁盘的次数,提高IO的处理速度,尽可能避免影响linux系统的性能。

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

本发明提供了一种基于linux系统的COW快照数据刷写方法,参见图1所示,图1为本发明提供的一种基于linux系统的COW快照数据刷写方法的过程的流程图;该方法包括:

步骤s101:当有IO数据写入时,执行CPW快照操作,并将生成的例外信息存储于内存中的快照数据块内;

步骤s102:判断快照数据块是否达到预设刷写条件,如果是,将快照数据块内的例外信息统一刷写至磁盘内。

这里的例外信息具体为位图信息。当然,本发明不限定例外信息的类型。

其中,这里的预设刷写条件具体包括:

快照数据块被判定为脏块且脏块所处dirty链表的容量超出预设容量限制范围和/或linux系统出现掉电情况。

具体的,快照数据块被判定为脏块的条件具体为:

快照数据块超过预设时间未被访问。

可以理解的是,快照数据块是位于缓冲区内的,缓冲区的固定容量值与缓冲区内数据块的固定容量大小有关,当数据块大小小于4M时,分配主内存的2%做为缓冲区;当数据块大小大于4M时,分配虚拟内存的25%做为缓冲区。其中,每个缓冲区内包括有两个数据块链表,分别为放置干净块的clean链表以及放置脏块的dirty链表,当快照数据块超过预设时间未被访问,该快照数据块会被标记为脏块并放置于dirty链表内,当dirty链表的容量超出预设容量限制范围时,则满足预设刷写条件将dirty链表内的脏块统一刷写至磁盘内。

进一步的,这里的预设容量限制范围为缓冲区固定容量值的75%。当然,本发明不限定缓冲区固定容量值以及预设容量限制范围的具体大小。

其中,判断linux系统是否出现掉电情况的过程具体为:

实时检测linux系统的电源电压值;

判断电源电压值是否低于预设电压阈值,如果是,linux系统出现掉电情况。

具体的,当判断linux系统出现掉电情况后,将快照数据块内的例外信息统一刷写至磁盘内的过程具体为:

控制linux系统切换至大电容供电,然后将快照数据块内的例外信息统一刷写至磁盘内。

可以理解的是,linux系统在掉电后会立即切换至大电容供电,由大电容来进行临时供电,在临时供电期间将全部例外信息刷写至磁盘,供linux系统在上电后根据存储的例外信息进行数据恢复操作,从而尽可能保证了在意外断电的情况下数据的完整性。当然,这里的预设电压阈值可以自行设定,本发明不作限定。

作为优选地,控制linux系统切换至大电容供电之后还包括:

发送截断指令至IO栈,控制IO栈停止下发IO数据;

确定当前例外信息的状态情况,得到状态信息并写入linux系统的超级块内,供linux系统上电后按照状态信息进行相应的处理。

其中,这里的状态信息包括例外信息处于拷贝状态或删除状态等,例如,当处于拷贝状态时,表明掉电后,例外信息已刷写至磁盘内,linux系统上电后可根据该例外信息进行数据恢复;当处于删除状态时,表明例外信息处于正在删除的状态,当linux系统上电后,可继续对例外信息进行删除。另外,这里的状态信息可以具体包括每条例外信息的状态,也可以包括某一个起止范围内的例外信息的状态,当包括某一个起止范围内的例外信息的状态时,状态信息内还需包括对应的起止范围信息。

当然,这里的状态信息还可包括表明其他状态的信息,本发明对此不作限定。

另外,这里的预设刷写条件还可以包括:接收到手动触发信号。即操作人员手动触发刷写功能,接收到手动触发信号后即判定快照数据块达到预设刷写条件。当然,预设刷写条件可以包括以上三种之和或几种的组合,或者还可以包括其他条件,本发明仅给出优选实施例,对此并不做限定。

本发明提供了一种基于linux系统的COW快照数据刷写方法,本发明取消了COW快照操作中每次生成例外信息即将其刷写至磁盘的操作,而是将每次生成的例外信息存储至内存中的快照数据块内,直达快照数据块满足预设刷写条件后,才将快照数据块内存储的若干例外信息一次性刷写至磁盘内。可见,本发明在不影响CPW快照性能的基础上,大大减少了访问磁盘的次数,提高了IO的处理速度,尽可能避免了影响linux系统的性能。

本发明还提供了一种基于linux系统的COW快照数据刷写系统,参见图2所示,图2为本发明提供的一种基于linux系统的COW快照数据刷写系统的结构示意图。该系统包括:

快照操作模块1,用于当有IO数据写入时,执行CPW快照操作,并将生成的例外信息存储于内存中的快照数据块内;

刷写判断模块2,用于判断快照数据块是否达到预设刷写条件,如果是,将快照数据块内的例外信息统一刷写至磁盘内。

作为优选地,刷写判断模块2具体包括:

脏块判断单元21,用于判断快照数据块是否被判定为脏块且脏块所处dirty链表的容量是否超出预设容量限制范围,如果是,快照数据块满足预设刷写条件,触发刷写单元23;

掉电判断单元22,用于实时检测linux系统的电源电压值;判断电源电压值是否低于预设电压阈值,如果是,linux系统出现掉电情况,控制linux系统切换至大电容供电,并触发刷写单元23;

刷写单元23,用于将快照数据块内的例外信息统一刷写至磁盘内。

其中,掉电判断单元22包括电压传感器,电压传感器用于实时检测linux系统的电源电压值。

本发明提供了一种基于linux系统的COW快照数据刷写系统,本发明取消了COW快照操作中每次生成例外信息即将其刷写至磁盘的操作,而是将每次生成的例外信息存储至内存中的快照数据块内,直达快照数据块满足预设刷写条件后,才将快照数据块内存储的若干例外信息一次性刷写至磁盘内。可见,本发明在不影响CPW快照性能的基础上,大大减少了访问磁盘的次数,提高了IO的处理速度,尽可能避免了影响linux系统的性能。

需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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