一种自适应应用负载变化的快照生成方法

文档序号:6335214阅读:188来源:国知局
专利名称:一种自适应应用负载变化的快照生成方法
技术领域
一种自适应应用负载变化的快照生成方法属于计算机存储技术领域,具体涉及其 中的快照自动生成领域。
背景技术
随着信息技术的飞速发展,人们要处理的数据量不断增加,这对存储系统可靠性 和可用性提出了巨大需求。快照是关于指定数据集的一个完全可用的拷贝,该拷贝包括相 应数据在某个时间点的印象。应用快照技术能够保留存储系统不同时刻的数据,一方面在 发生故障时能将系统数据恢复到过去某个时间点,提高系统可靠性,另一方面可以实现在 线数据备份。快照技术广泛应用在各种大规模存储系统中以提供数据备份和数据恢复支 持。随着存储系统规模的不断扩大,快照的数量和进行快照的频度也不断增加,以人 工手动输入命令来进行快照的方式已经不能适应数据保护的需要。定时生成快照的方式 每隔一段时间自动生成快照,简化了快照过程中的人工操作,但是生成快照的时间间隔是 固定的,不能适应应用负载的动态化,如果某一间隔内应用没有对源数据区进行修改,那新 创建快照将造成资源的浪费,如果某一间隔应用对源数据区的修改非常频繁,该间隔内只 创建一个快照则将造成大量历史数据的丢失。本发明提出的自适应应用负载变化的快照生 成方法,随着源数据区上应用负载的变化,以动态的时间间隔自动生成快照,并具有以下特占.
^ \\\ ·1.负载变化的自适应性当应用负载对数据的修改频度提高时,生成快照的时间 间隔缩短,有效地保护历史数据,当应用负载对数据的修改频度降低时,生成快照的间隔延 长,节省存储资源;2.简单的计数结构采用占用空间很小的位图记录数据修改频度,并将位图缓 存,使其查找和修改操作对读写性能的影响几乎可以忽略;3.高度的灵活性提供了基于平均修改数和最大修改数的快照自动生成策略,通 过灵活选择策略和配置不同的参数,可以满足各种应用负载的数据保护要求。

发明内容
本发明的目的是设计一种自适应应用负载变化的快照生成方法,根据被保护数据 的修改频率等信息调节快照的生成频率,通过本方法既能达到自动保留有用数据的要求, 又能保证较好的系统性能与空间利用率。本发明构建在采用写时拷贝(Copy-0n-Write,C0W)技术的快照之上。写时拷贝快 照技术,在创建快照时,无需保存任何数据,创建过程瞬间即可完成,由于其只保存要更改 的数据块,这种基于数据块改变的增量方式最大限度地减少了对存储容量的消耗。基于写 时拷贝方法的快照系统,每次创建快照后,主机发送的写请求若是第一次修改源数据区中 的数据,一般要分解为以下三个步骤1.从源数据区中读出需要快照保存的数据;2.将此快照数据写入快照区;3.将主机发送的新数据写入源数据区相应位置。本发明的特征在于,所述方法是在用户端依次按以下步骤实现的步骤(1).用户端的初始化,步骤(1. 1).用户通过应用程序接口 API在快照计算机中设定快照的数据结构,包 括元数据区、索引区、数据区和计数区,其中元数据区包括用户赋予的快照名称,快照编号,源数据区名称,该快照中数据块 的大小,数据区的长度以及标识位,其中源数据区,存储用户访问请求的数据,对源数据区创建一个快照将会保留一个快 照创建时刻源数据区的映像,源数据区在逻辑上是按照所述元数据区中所述数据块的大小 分为多个数据块,数据块的编号从1开始,其分块号依次为1,2,3,…,N,N为源数据区中数 据块数目,这个编号就是源数据区的分块号,标识位,值为1时,表示快照是对源数据区最新创建的快照,为0,则不是,当对源 数据区新创建一个快照时,将新创建的快照的标识位置为1,并将对源数据区创建的其它快 照的标识位置为0索引区,记录源数据区被修改过的数据块的分块号以及该数据块原来的数据在所 述数据区存放位置的新分块号,数据区,存储快照需要保存的数据,在逻辑上按照所述元数据区中所述数据块的 大小分为多个数据块,块大小与所述源数据区中每个数据块的块大小相同,初始化时数据 区的所有数据块都标记为未被使用,当所述源数据区中的一个数据块在快照创建后第一次 被修改,这个数据块原来的数据将被存放到数据区中一个未被使用的数据块中,相应的数 据区中的数据块标记为已被使用,计数区,用位图的方式存储所述源数据区中各数据块被修改的次数,所述源数据 区中第η个数据块被修改的次数用计数区中第η位的值Wn表示,η = 1,2,…,N,步骤(1. 2).用户通过应用程序接口 API在所述快照计算机中创建用以创建新快 照的守护进程Daemon,并指定守护进程Daemon在创建新快照时所用到的参数的值,这些参 数包括所述快照名称,快照编号,源数据区名称,数据块的大小,数据区的长度,步骤(2).当所述快照计算机通过应用程序接口 API接收到用户对源数据区的写 入请求和写入数据时,依次执行以下步骤步骤(2. 1).找到对所述源数据区最新创建的快照,即标识位为1的快照,步骤(2. 2).将含有起始地址和长度的所述写入数据,按步骤(2. 1)所述快照中的 所述数据块的大小分为多个写入数据块,每个写入数据块对应一个源数据区的数据块,步骤(2. 3).对步骤(2. 2)所述的每个写入数据块,按其对应的源数据区数据块的 分块号在步骤(2. 1)所述快照的索引区中查找,若存在该分块号,则说明源数据区数据块 原来的数据已经被保存在数据区中,转步骤(2. 6),若不存在,则执行下一步骤(2. 4),步骤(2. 4).把步骤(2. 3)所述写入数据块对应的源数据区数据块中的数据拷贝 到步骤(2. 1)所述快照的数据区,修改所述快照的索引区中的分块号,步骤(2. 5).再把步骤(2. 3)所述写入数据块的数据写入其对应的源数据区数据 块中,步骤(2. 6).把所述快照的计数区中与步骤(2. 3)所述源数据区数据块的分块号对应的修改次数位的值加1,步骤(2. 7).判断步骤(2. 2)所述的所有写入数据块是否都处理完毕,是,则结束, 否则,重复步骤(2. 3) 步骤(2. 6),步骤(2. 8).根据用户设定的判定策略及阈值确定是否需要生成新快照若用户设定最大平均修改次数策略,则判断源数据区各数据块的平均修改次数是 否超过设定的平均修改次数阈值,若超过,则需要生成新快照,否则,不需要,若用户设定最大修改次数策略,则判断所述源数据区各数据块的修改次数中最大 的修改次数是否大于设定的最大修改次数阈值,若为大,则需要生成新快照,若为小或等 于,则不需要生成新快照,当判断为需要生成新快照时,执行步骤(2. 9),否则,转步骤(2. 10),步骤(2.9).所述快照计算机利用所述守护进程Daemon创建新快照,其步骤如 下步骤(2. 9. 1).停止所述源数据区的读写服务,步骤(2. 9. 2).按照步骤(1. 2)中用户设定的快照名称,快照编号,源数据区名称, 数据块的大小,快照的数据区长度,创建新快照结构,并建立与所述源数据区的映射关系,步骤(2. 9. 3).在内存中建立新快照的计数区缓存,步骤(2. 9. 4).恢复所述源数据区的读写服务,步骤(2.10).结束。通过实验表明,该方法在源数据区数据修改频繁时生成快照的时间间隔短,在数 据较少时生成快照的时间间隔延长,一段时间内所生成的多个快照,每个快照卷所保留的 历史数据量基本相同,能够适应应用负载的动态变化。另外由于计数区以位图的方式存储 各个块的修改计数,占用的空间很小,能够将计数区数据全部缓存以提高访问速度,增加的 计数区的查找和修改操作给读写性能带来的影响几乎可以忽略。


图1.快照的数据结构图。
图2.元数据区的数据结构
图3.源数据区写请求执行的流程图。
图4.增加计数和判定是否生成快照的流程图。
图5.系统结构图。
图6.内核中创建快照的流程图。
具体实施例方式本发明的核心是通过快照的计数区记录各个源数据区各个块的修改次数,以此作 为判断源数据区应用负载高低的依据,动态地生成新快照,实现数据按需保护。快照的结构如图1所示,元数据区、索引区、数据区和计数区,其中元数据区包括用户赋予的快照名称,快照编号,源数据区名称,该快照的数据块 的大小,数据区的长度以及标识位,其结构如图2所示。其中,源数据区,存储用户访问请求 的数据,对源数据区创建一个快照将保留一个快照创建时刻源数据区的映像,源数据区在逻辑上是按照所述元数据区中数据块的大小分为多个数据块,数据块的编号从1开始,其 分块号依次为1,2,3,…,N,这个编号就是源数据区的分块号;标识位,它的值为1时,表示 快照是对源数据区最新创建的快照,为0则不是,当对源数据区新创建一个快照时,将新创 建的快照的标识位置为1,并将对源数据区创建的其它快照的标识位置为0索引区,记录源数据区被修改过的块的分块号以及该块原来的数据在数据区存放 位置的新分块号;数据区,存储快照需要保存的数据,它在逻辑上按照所述元数据区中数据块的大 小分为多个数据块,块大小与所述源数据区中每个数据块的块大小相同,初始化时数据区 的所有块都标记为未被使用,当所述源数据区中的一个数据块在快照创建后第一次被修 改,这个数据块原来的数据将被存放到数据区中一个未被使用的块中,相应的数据区中的 块标记为已被使用;计数区,以位图的方式存储所述源数据区中各数据块被修改的次数,所述源数据 区中第η个数据块被修改的次数用位图中的第η位表示,η = 1,2,…,N,N为源数据区中 数据块数目。当快照计算机接收到对源数据区的写请求时,顺序进行图3所示流程(1)找到对应所述源数据区的最新创建的快照,即标识位为1的快照(2)根据步骤1中所述快照设定的块大小,将含有起始地址和长度的写请求数据 按快照设定的数据块大小分为多个写入数据块,每个写入数据块对应一个源数据区的数据 块;(3)对每个写入数据块,按其对应源数据区数据块的分块号在快照索引区中查找, 若已存在,则转步骤5,否则按顺序执行;(4)将源数据区上需要保存的数据拷贝到快照的数据区,更新快照索引区;(5)将写入数据块的数据写入源数据区;(6)把所述快照的计数区中与步骤3所述源数据区数据块的分块号对应的修改次 数位的值加1 ;(7)是否所有分块都处理完毕,是则顺序执行,否则转步骤3 ;(8)判断是否需要生成新快照,若不需要,则转步骤10,否则顺序执行;(9)守护进程Daemon创建新快照;(10)结束判断快照是否为对源数据区最新的快照,可查找该快照元数据中的标识位,如果 该标识位的值为1,则为对源数据区最新的快照,否则不是;在新创建快照时,将新创建快 照的标识位为1,并将其他快照的标识位置为0。有最大平均修改次数和最大修改次数两种策略判定是否需要生成新快照。最大平 均修改次数策略下,如果各个数据块的平均修改次数超过某个阈值,则需要生成新快照。最 大修改次数策略下,只要其中一个数据块的修改次数超过阈值就需要生成新快照。选择相 同的阈值时,平均修改次数策略下各个快照保护的历史数据量更加平均,相邻两个快照之 间的数据更新量大约为块数量*阈值;最大修改次数策略保证对每个块的数据更新量不超 过阈值。不管哪种策略,当阈值越小,对源数据区数据保护的强度越大,但快照的开销也会 有一定的增加。当阈值为1时,则是数据保护的极端模式,CDP保护模式,通过频繁生成快照而保留被保护逻辑卷中数据块任意时刻的数值,使数据能够回滚到过去的任意时刻。上述判断是否需要生成新快照生所用的阈值由用户通过应用程序接口 API指定。增加计数区计数值并判断是否需要生成新快照的流程如图4所示,(1)根据源数据区数据块的分块号将计数区位图中对应位的值即该块的修改次数 加1 ;(2)如果判定策略为平均修改次数策略,转步骤3,否则,转步骤4 ;(3)判断源数据区各数据块的平均修改次数是否大于设定的平均修改次数阈值, 若为大,则转步骤5,若为小或等于,则转步骤6 ;(4)判断所述源数据区各数据块的修改次数中最大的修改次数是否大于设定的最 大修改次数阈值,若为大,则转步骤5,若为小或等于,则转步骤6,(5)判定需要生成新快照,结束;(6)判定不需要生成新快照,结束。系统结构如图5所示,快照计算机(Snapshot Manager)包括用以控制新快照创建 的守护进程Daemon,快照计算机接收和处理用户的访问请求,并判断是否需要生成新快照, 快照计算机在进行决策时需要了解快照和源数据区的信息;应用程序接口(API)供用户访 问数据以及设置快照参数和获取快照状态。快照计算机中的守护进程Daemon创建新快照的流程如图6所示(1)停止源数据区的读写服务;(2)按照用户设定的快照名称,快照编号,源数据区名称,数据块的大小,快照的数 据区长度创建快照结构,并建立与源数据区的映射关系;(3)在内存中建立快照的计数区缓存;(4)恢复源数据区的读写服务;(5)结束。由于计数区以位图的方式存储源数据区各个数据块的修改次数,占用的空间很 小,能够缓存以提高访问速度,由于位图的查找和修改效率为0(1),所以更改计数区中的源 数据区数据块修改次数值和判定是否生成新快照的开销仅为几次内存访问的时间,对写操 作带来的影响几乎可以忽略。缓存将定时写入快照中以保证系统崩溃或重启后修改计数能 正常读取。
权利要求
一种自适应应用负载变化的快照生成方法,其特征在于,所述方法是在用户端依次按以下步骤实现的步骤(1).用户端的初始化,步骤(1.1).用户通过应用程序接口API在快照计算机中设定快照的数据结构,包括元数据区、索引区、数据区和计数区,其中元数据区包括用户赋予的快照名称,快照编号,源数据区名称,该快照中数据块的大小,数据区的长度以及标识位,其中源数据区,存储用户访问请求的数据,对源数据区创建一个快照将会保留一个快照创建时刻源数据区的映像,源数据区在逻辑上是按照所述元数据区中所述数据块的大小分为多个数据块,数据块的编号从1开始,其分块号依次为1,2,3,…,N,N为源数据区中数据块数目,这个编号就是源数据区的分块号,标识位,值为1时,表示快照是对源数据区最新创建的快照,为0,则不是,当对源数据区新创建一个快照时,将新创建的快照的标识位置为1,并将对源数据区创建的其它快照的标识位置为0索引区,记录源数据区被修改过的数据块的分块号以及该数据块原来的数据在所述数据区存放位置的新分块号,数据区,存储快照需要保存的数据,在逻辑上按照所述元数据区中所述数据块的大小分为多个数据块,块大小与所述源数据区中每个数据块的块大小相同,初始化时数据区的所有数据块都标记为未被使用,当所述源数据区中的一个数据块在快照创建后第一次被修改,这个数据块原来的数据将被存放到数据区中一个未被使用的数据块中,相应的数据区中的数据块标记为已被使用,计数区,用位图的方式存储所述源数据区中各数据块被修改的次数,所述源数据区中第n个数据块被修改的次数用计数区中第n位的值wn表示,n=1,2,…,N,步骤(1.2).用户通过应用程序接口API在所述快照计算机中创建用以创建新快照的守护进程Daemon,并指定守护进程Daemon在创建新快照时所用到的参数的值,这些参数包括所述快照名称,快照编号,源数据区名称,数据块的大小,数据区的长度,步骤(2).当所述快照计算机通过应用程序接口API接收到用户对源数据区的写入请求和写入数据时,依次执行以下步骤步骤(2.1).找到对所述源数据区最新创建的快照,即标识位为1的快照,步骤(2.2).将含有起始地址和长度的所述写入数据,按步骤(2.1)所述快照中的所述数据块的大小分为多个写入数据块,每个写入数据块对应一个源数据区的数据块,步骤(2.3).对步骤(2.2)所述的每个写入数据块,按其对应的源数据区数据块的分块号在步骤(2.1)所述快照的索引区中查找,若存在该分块号,则说明源数据区数据块原来的数据已经被保存在数据区中,转步骤(2.6),若不存在,则执行下一步骤(2.4),步骤(2.4).把步骤(2.3)所述写入数据块对应的源数据区数据块中的数据拷贝到步骤(2.1)所述快照的数据区,修改所述快照的索引区中的分块号,步骤(2.5).再把步骤(2.3)所述写入数据块的数据写入其对应的源数据区数据块中,步骤(2.6).把所述快照的计数区中与步骤(2.3)所述源数据区数据块的分块号对应的修改次数位的值加1,步骤(2.7).判断步骤(2.2)所述的所有写入数据块是否都处理完毕,是,则结束,否则,重复步骤(2.3)~步骤(2.6),步骤(2.8).根据用户设定的判定策略及阈值确定是否需要生成新快照若用户设定最大平均修改次数策略,则判断源数据区各数据块的平均修改次数是否超过设定的平均修改次数阈值,若超过,则需要生成新快照,否则,不需要,若用户设定最大修改次数策略,则判断所述源数据区各数据块的修改次数中最大的修改次数是否大于设定的最大修改次数阈值,若为大,则需要生成新快照,若为小或等于,则不需要生成新快照,当判断为需要生成新快照时,执行步骤(2.9),否则,转步骤(2.10),步骤(2.9).所述快照计算机利用所述守护进程Daemon创建新快照,其步骤如下步骤(2.9.1).停止所述源数据区的读写服务,步骤(2.9.2).按照步骤(1.2)中用户设定的快照名称,快照编号,源数据区名称,数据块的大小,快照的数据区长度,创建新快照结构,并建立与所述源数据区的映射关系,步骤(2.9.3).在内存中建立新快照的计数区缓存,步骤(2.9.4).恢复所述源数据区的读写服务,步骤(2.10).结束。
全文摘要
一种自适应应用负载变化的快照生成方法属于计算机存储技术领域,目的是设计一种应用感知的自适应快照生成方法,根据被保护数据的修改频率调节生成快照的频率,既达到自动保留有用历史数据的要求,又保证较好的系统性能与空间利用率,其特征在于为快照分配一个计数区记录源数据区各个块的修改次数,创建守护进程,控置快照生成。当快照计算机收到对源数据区的写请求时,将其对应源数据区数据块的修改次数增加,并根据设定的阈值判断是否需要生成快照,如果是,则发送消息给守护进程,守护进程控制生成新快照。本方法具有自适应应用负载变化、实现简单几乎不影响读写性能影响和使用灵活方便的优点。
文档编号G06F11/14GK101968755SQ20101053195
公开日2011年2月9日 申请日期2010年11月4日 优先权日2010年11月4日
发明者周炜, 易乐天, 舒继武 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1