专利名称:一种改进的写时拷贝快照的实现方法和装置的制作方法
技术领域:
本发明涉及计算机存储技术领域,特别涉及一种改进的写时拷贝快照的实现方法 和装置。
背景技术:
信息技术的加速发展,使得企业的关键业务数据的规模日益膨胀,企业不仅要求 存储容量越来越大,对数据安全的要求也越来越高。随着存储应用需求的提高,用户需要在 线的备份和保护数据。快照(Snapshot)技术是一种有效地在线数据保护方法,能够快速的 实现在线数据备份。快照是指定数据集合的一个完全可用拷贝,该拷贝包括指定数据集合在某个时间 点的映像。指定数据集合称为源数据区,某个时间点的映像称为快照数据区。目前的快照 技术主要有两种写时拷贝(Copy-On-Write)和重定向写(Redirect-On-Write)。其中写 时拷贝技术占用空间小,创建速度快,且对源数据区访问性能影响较小,广泛应用于各种快 照系统中。写时拷贝技术可以在每次输入新数据或已有数据被更新时,生成对存储数据改动 的快照。这样做可以在发生硬盘写错误、文件损坏或程序故障时迅速地恢复数据。但是,如 果需要对网络或存储媒介上的所有数据进行完全的存档或恢复时,所有以前的快照都必须 可供使用。写时拷贝技术在创建快照时,不进行任何数据拷贝,仅需为源数据区初始化快照 引用指针索引,标识该时间点数据实际所处位置,所以创建写时拷贝快照,瞬间即可完成创 建。写时拷贝快照技术按指定大小单元将源数据区划分为若干数据块(chunk),数据 块是快照处理数据的基本单位。写时拷贝的原理如下创建写时拷贝快照后,当源数据区收 到写数据请求时,存储系统首先查找快照引用指针索引,判断源数据区待修改的数据块是 否建立了引用指针,若该数据块未建立引用指针,则先将该数据块拷贝到快照数据区,并建 立该数据块的引用指针,然后更新源数据区数据块;若该数据块已经建立了引用指针,则表 示该数据块已经拷贝到快照数据区,可直接更新该数据块。这样快照数据区就备份了源数 据区快照后所有的更改数据,即生成了源数据区在快照创建时间点的映像。现有技术的写时拷贝快照处理装置如图1所示,包括用户请求接收模块101、读写 判断模块102、数据块管理模块103、快照引用索引模块104、源数据区模块105、数据块拷贝 模块106、快照引用索引更新模块107和快照数据区模块108。用户请求接收模块101用于接收来自用户的访问请求;读写判断模块102用于判断用户请求接收模块101所接收的访问请求是读请求还是写请求,若是写请求,则将该写请求发送至数据块管理模块103。若是读请求,则将该读请 求发送至源数据区数据块105,由源数据区数据块105对该读请求执行相应操作。数据块管理模块103,用于根据源数据区数据块大小与来自读写判断模块102的 写请求的起始地址,计算得到待修改的源数据区数据块号,并将所得数据块号发送至快照引用索引模块104。快照引用索引模块104中保存了预设设置的快照引用指针索引,所述快照引用指 针索引相当于是源数据区的数据块号与快照数据区的数据块号的映射关系。并根据来自数 据块管理模块103的数据块号查找所述快照引用指针索引,若已建立关于所述数据块号的 快照引用索引,则通知源数据区模块105响应所述写请求,若未建立关于所述数据块号的 快照引用索引,则将所述数据块号通知数据块拷贝模块106。源数据区模块105包括源数据区,并用于对源数据区中的数据块执行读写操作。数据块拷贝模块106用于在收到快照引用索引模块104的通知后,读取源数据区 待修改数据块,设置数据块写入快照数据区的扇区位置,并将读取的数据块写入所述扇区 位置。快照引用索引更新模块107,用于在数据块拷贝模块106对快照数据区模块108进 行写入操作后,建立新写入的快照数据区数据块与源数据区数据块的快照引用指针,并将 所述建立的快照引用指针发送至快照引用索引模块104,使快照引用索引模块104的快照 引用指针索引进行更新。快照数据区模块108用于保存快照数据区的数据块。图2所示为现有技术的写时快照技术的处理流程,包括如下步骤步骤201 创建快照数据区。步骤202 根据指定的源数据区的数据块大小,将快照数据区划分为若干数据块, 每个数据块具有唯一的数据块号,数据块大小与源数据区数据块大小相等,并初始化快照 引用指针索引,所述快照引用指针索引相当于是源数据区的数据块号与快照数据区的数据 块号的映射关系。步骤203 源数据区接收用户的访问请求。步骤204 判断该访问请求是否为写请求,若是则执行步骤205,否则转至步骤 211。步骤205 根据源数据区数据块大小与写请求起始地址,计算得到待修改数据块号。步骤206 以所得数据块号为关键字,查找快照引用指针索引。步骤207 判断是否已经建立快照引用指针,若是则转至步骤211,否则执行步骤 208。步骤208 读取源数据区待修改数据块XI,设置数据块写入快照数据区的扇区位置。步骤209 将读取的数据块写入快照数据区的所述扇区位置的数据块Y1。步骤210 建立源数据区的数据块Xl与快照数据区的数据块Yl的快照引用指针。步骤211 响应读写请求,访问源数据区数据块XI。虽然写时拷贝快照创建速度快,且仅需保存源数据区发生更改的数据块,空间占 用率也较低,但是写时拷贝快照技术在源数据区数据块第一次发生更改时,需先将数据块 备份到快照数据区并在内存中建立快照引用指针,然后才能更新该数据块,这给用户写请 求带来了较大延迟;同时随着源数据区更改的数据越来越多,快照引用索引所消耗的内存 将越来越大,快照数据区所占 存储空间也越来越大,这都给存储系统带来很大的负担。
发明内容
有鉴于此,本发明的目的在于,提出一种改进的写时拷贝快照的实现方法和装置,可以降低延迟并节省快照数据区的存储空间。本发明实施例提出的一种改进的写时拷贝快照的实现方法,设置源数据区位图 表;所述源数据区位图表每比特位对应N个的数据块;比特位为有效表示对应的数据块中 写入了数据,比特位为无效则表示对应的数据块中未写入数据,N为自然数;该方法包括如 下步骤A、创建快照数据区;将快照数据区划分为多个数据块,快照数据区数据块大小与 源数据区数据块大小相等,并初始化快照引用指针索引;拷贝源数据区位图表到快照数据 区作为快照数据区位图表;B、源数据区接收到写请求,确定所述写请求对应的源数据区数据块,并判断所述 源数据区数据块对应的源数据区位图表的第J个比特位是否有效,若是则执行步骤C,J为 自然数;否则转至步骤E ;C、判断快照数据区位图表对应的第J个比特位是否有效,若有效,则执行步骤D, 否则转至步骤E ;D、判断所述源数据区数据块是否已建立快照引用指针,若已建立快照引用指针, 则转至步骤E,否则,读取该源数据区数据块的数据,将读取的数据块写入到快照数据区,为 该数据块建立快照引用指针,并加入快照引用指针索引;E、修改源数据区位图表对应的比特位状态为有效,源数据区响应所述写请求。其中,步骤B所述确定所述写请求对应的源数据区数据块的数据块号Chimkn等于 写请求起始地址A除以源数据区数据块的大小M。所述源数据区数据块对应的源数据区位图表的第J个比特位等于源数据区数据 块号Chimkn除以源数据区位图表每比特位对应的数据块数目N。较佳地,所述设置源数据区位图表包括如下步骤建立初始化的源数据区位图表,根据内存大小确定位图表每比特位标识的数据块 数目N,位图表所有比特位初始化为无效状态;源数据区接收用户的写请求,确定所述写请求对应的源数据区数据块,修改源数 据区数据块对应的源数据区位图表的比特位状态为有效。本发明实施例提出一种改进的写时拷贝快照的实现装置,包括用户请求接收模 块、源数据区模块、快照数据区模块;源数据区模块包括多个数据块组成的源数据区,并用 于对源数据区中的数据块执行读写操作;快照数据区模块用于保存快照数据区的数据块; 用户请求接收模块,用于接收来自用户的写请求;其特征在于,该装置还包括数据块管理模块、快照引用索引模块、数据块拷贝模 块、快照引用索引更新模块、源数据区位图表模块以及快照区位图表模块;数据块管理模块,用于根据所述写请求计算得到待修改的源数据区数据块号,并 将所得数据块号发送至源数据区位图表模块;源数据区位图表模块,用于维护源数据区位图表;所述源数据区位图表每比特位 对应N个的数据块;比特位为有效表示对应的数据块中写入了数据,比特位为无效则表示对应的数据块中未写入数据;在收到来自数据块管理模块的数据块号后,判断所述数据块 号对应的源数据区位图表的第J个比特位是否有效,若是则将比特位序号J以及数据块号 发送至快照区位图表模块;N、J均为自然数;在源数据区执行写操作后,将所述数据块号所 对应源数据区位图表的比特位设置为有效;快照数据区位图表模块,用于在创建快照时,拷贝源数据区位图表模块中的源数 据区位图表到快照数据区作为快照数据区位图表;并根据来自源数据区位图表模块的比特 位序号J,判断快照数据区位图表的第J个比特位是否有效,若有效则将所述数据块号发送 至快照引用索引模块;若无效则通知所述源数据区模块执行相应的写操作;快照引用索引模块,用于保存了预设设置的快照引用指针索引,并根据来自快照 区位图表模块的数据块号,查找所述快照引用指针索引,若已建立关于所述数据块号的快 照引用索引,则通知源数据区模块响应所述写请求,若未建立关于所述数据块号的快照引 用索引,则将所述数据块号通知数据块拷贝模块;数据块拷贝模块用于在收到快照引用索引模块的通知后,读取源数据区待修改数 据块,将读取的数据块写入快照数据区的数据块;快照引用索引更新模块,用于在数据块拷贝模块对快照数据区模块进行写入操作 后,建立新写入的快照数据区数据块与源数据区数据块的快照引用指针,并将所述建立的 快照引用指针发送至快照引用索引模块,使快照引用索引模块的快照引用指针索引进行更 新,然后通知所述源数据区模块执行相应的写操作。所述源数据区位图表模块进一步包括初始化单元,用于建立初始化的源数据区位图表,根据内存大小确定位图表每比 特位标识的数据块数目N,位图表所有比特位初始化为无效状态。从以上技术方案可以看出,在创建快照时,将此刻源卷的位图表复制到快照卷保 存,作为该快照的数据区位图表。当源数据区接收到写请求时,源数据区的位图表判断该数 据块是否有效,若该数据块无效,则直接响应该写请求;若该数据块有效,则进一步由快照 数据区的位图表判断该数据块是否有效;若该数据块无效,则直接响应该写请求。通过上 述改进,对于很大一部分的主机写请求可直接响应,而无需拷贝该数据块到快照数据区。本 发明方案可大大的减少空白数据拷贝,在源卷数据为空时创建的快照不会引发任何数据拷 贝,较现有技术能够减少快照引用索引与快照数据区大小,提高存储空间利用率。
图1为现有技术的写时快照技术的处理装置;图2为现有技术的写时快照技术的处理流程示意图;图3为部署本发明实施例需进行的初始化处理流程图;图4为本发明实施例基于写时快照技术的处理装置;图5为本发明实施例基于写时快照技术的处理流程示意图。
具体实施例方式本发明方案的基本思路如下在现有写时拷贝快照技术基础上,分别在源数据区与快照数据区增加判断模块,用于判断当源数据区接收到写请求时,是否需要拷贝对应数据块到快照数据区,并仅在需 要的情况下才执行所述拷贝操作。为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步 的详细阐述。本发明实施例中通过引入位图表(bitmap)来来标识源数据区与快照数据区相应 数据块是否有效。位图表的每个比特位可对应一个或多个数据块。为了记录源数据区数据 块状态,位图表必须在创建源数据区时创建。源数据区创建时,源数据区不包含任何有效用 户数据,所有数据块均为无效,此时源数据区位图表所有比特位均标识为无效状态。随着存 储系统不断接收写请求,写请求写入的数据块被标识为有效数据块。创建快照后,源数据区 位图表可能因为新的写请求而改变某些比特位状态,为了记录快照创建时源数据区的数据 块状态,创建快照时拷贝源数据区位图表到快照数据区,作为快照数据区的位图表,快照数 据区位图表记录了创建快照时,源数据区数据块的状态。通过建立所述位图表,可减少写时 拷贝快照过程中对无效数据块的拷贝,通过减少无效数据拷贝,既降低用户写请求延时,也 提高了存储空间利用率。本发明实施例方案涉及源数据区,快照数据区,快照引用指针索引,源数据区位图 表,快照数据区位图表。其中源数据区存放用户的有效数据;快照数据区备份源数据区快照 时间点后修改的数据;快照引用指针索引建立源数据区数据块与快照数据区数据块的映射 关系;源数据区位图表用来描述源数据区数据块是否有效;快照数据区位图表用来描述创 建快照时,源数据区数据块是否有效。本发明实施例的初始处理流程按照图3所示,包括如下步骤步骤301 在存储系统中创建源数据区,准备接收用户读写请求;步骤302 根据指定的数据块大小,将源数据区划分为若干数据块,数据块大小应 为磁盘扇区的整数倍,可依据系统内存(RAM)大小确定数据块大小;步骤303 建立源数据区位图表,位图表每比特位标识N个的数据块,N为自然数。 N表示每比特位标识的数据块数目,可依据系统内存(RAM)大小确定。每比特位标识的数据 块越少,则位图表越大,确定数据块有效状态的精确度也越高;位图表所有比特位初始化为 无效状态;即源数据区所有数据块为无效状态;步骤304 源数据区接收用户的访问请求。步骤305 判断所述访问请求是否为写请求,若是则顺序执行步骤306 ;否则直接 转至步骤308 ;步骤306 根据数据块大小,每比特位标识数据块数目以及写请求的起始位置计 算与该数据块号对应的源数据区位图表比特位。若源数据区数据块大小值为M,位图表每比特位标识的数据块数目为N,用户请求 起始地址为A,则该请求对应的源数据区数据块号计算公式为Chunkn = A/M(公式一)数据块对应的比特位计算公式为Bitn = Chunkn/N(公式二 )步骤307 修改源数据区位图表对应的比特位状态为有效;步骤308 源数据区响应用户的访问请求,并返回步骤304。
本发明实施例提出的写时拷贝快照的处理流程如图4所示,包括如下步骤步骤401 创建快照数据区;步骤402 根据指定数据块大小将快照数据区划分为若干数据块,快照数据区数 据块大小与源数据区数据块大小相等,并初始化快照引用指针索引;步骤403 拷贝源数据区位图表到快照数据区,建立快照数据区位图表;步骤404 源数据区接收用户访问请求;步骤405 判断所述用户访问请求是否为写请求,若不是写请求,转步骤415 ;若是 写请求,顺序执行步骤406;步骤406 根据源数据区数据块大小与写请求起始地址计算待修改数据块号,使 用公式一;步骤407 根据待修改数据块号,计算所述数据块号对应的源数据区位图表比特 位,使用公式二;步骤408 判断源数据区位图表对应比特位是否有效,若无效,表示该数据块无 效,转步骤415 ;若有效,顺序执行步骤409 ;步骤409 判断快照数据区位图表对应比特位是否有效,若无效,表示该数据块无 效,转步骤415 ;若有效,顺序执行步骤410。假设公式二计算得到的比特位以及步骤408所述源数据区位图表对应比特位是 源数据区位图表中第J个比特位,根据源数据区位图表与快照数据区位图表的对应关系, 所述快照数据区位图表对应比特位也是快照数据区位图表的第J个比特位,其中J为自然数。步骤410 以数据块号为关键字,查找快照引用指针索引;步骤411 判断该源数据区数据块是否已建立快照引用指针,若已经建立快照引 用指针,转步骤415 ;若未建立快照引用指针,顺序执行步骤412 ;步骤412 读取该源数据区数据块的数据,并设置数据块写入快照数据区的扇区 位置;步骤413 将读取的数据块写入到快照数据区;步骤414 为该数据块建立快照引用指针,并加入快照引用指针索引;步骤415 若为读请求,源数据区直接读取相应数据,并响应该读请求;若为写请 求,修改源数据区位图表对应的比特位状态为有效,源数据区写入数据并响应所述写请求。本发明对传统写时拷贝快照技术的改进主要在步骤408与步骤409,即根据源数 据区与快照数据区位图表,判断待修改数据块是否为有效状态,若该数据块为无效状态,则 直接转步骤415,一方面可避免无效数据块的拷贝,提高用户写请求响应,一方面可减少无 效数据的快照引用索引指针,减少快照引用索引占用的内存空间,另一方面可消除无效数 据在快照数据区所占存储空间,从而提高存储系统的空间利用率。源数据区使用过程中,用户写入的有效数据很可能只占源数据区的很少部分,此 时,即源数据区的大部分数据块均为无效状态。使用本发明提出的方法创建写时快照后,若 源数据区大部分数据块为无效状态,则进行写时快照操作时,直接响应用户请求,避免对无 效数据块的拷贝以及快照引用指针的添加,大大降低用户写请求延时,提高存储系统空间 利用率。
本发明实施例还提出一种改进的写时拷贝快照的装置,该装置如图5所示,包括 用户请求接收模块501、读写判断模块502、数据块管理模块503、源数据区位图表模块504、 源数据区模块505、快照数据区位图表模块506、快照引用索引模块507、数据块拷贝模块 508、快照引用索引更新模块509以及快照数据区模块510。相比图1所示的现有技术的写 时拷贝快照装置,增加了源数据区位图表模块504与快照数据区位图表模块506。上述各个 模块的功能如下用户请求接收模块501用于接收来自用户的访问请求;读写判断模块502用于判断用户请求接收模块501所接收的访问请求是读请求还 是写请求,若是写请求,则将该写请求发送至数据块管理模块503。若是读请求,则将该读请 求发送至源数据区数据块505,由源数据区数据块505对该读请求执行相应操作。数据块管理模块503,用于根据源数据区数据块大小与来自读写判断模块502的 写请求的起始地址,计算得到待修改的源数据区数据块号,并将所得数据块号发送至源数 据区位图表模块504。源数据区位图表模块504,用于维护源数据区位图表;所述源数据区位图表每比 特位对应N个的数据块;比特位为有效表示对应的数据块中写入了数据,比特位为无效则 表示对应的数据块中未写入数据;在收到来自数据块管理模块的数据块号后,判断所述数 据块号对应的源数据区位图表的第J个比特位是否有效,若是则将比特位序号J以及数据 块号发送至快照区位图表模块506 ;N、J均为自然数;在源数据区执行写操作后,将所述数 据块号所对应源数据区位图表的比特位设置为有效。源数据区模块505包括源数据区,并用于对源数据区中的数据块执行读写操作。快照数据区位图表模块506,用于拷贝源数据区位图表模块中的源数据区位图表 到快照数据区作为快照数据区位图表;并根据来自源数据区位图表模块的比特位序号J, 判断快照数据区位图表的第J个比特位是否有效,若有效则将所述数据块号发送至快照引 用索引模块507;快照引用索引模块507中保存了预设设置的快照引用指针索引,所述快照引用指 针索引相当于是源数据区的数据块号与快照数据区的数据块号的映射关系。并根据来自快 照数据区位图表模块506的数据块号查找所述快照引用指针索引,若已建立关于所述数据 块号的快照引用索引,则通知源数据区模块505响应所述写请求,若未建立关于所述数据 块号的快照引用索引,则将所述数据块号通知数据块拷贝模块506。数据块拷贝模块508用于在收到快照引用索引模块507的通知后,读取源数据区 待修改数据块,设置数据块写入快照数据区的扇区位置,并将读取的数据块写入所述扇区 位置。快照引用索引更新模块509,用于在数据块拷贝模块508对快照数据区模块510进 行写入操作后,建立新写入的快照数据区数据块与源数据区数据块的快照引用指针,并将 所述建立的快照引用指针发送至快照引用索引模块507,使快照引用索引模块507的快照 引用指针索引进行更新,然后通知所述源数据区模块505执行相应的写操作。快照数据区模块510用于保存快照数据区的数据块。本发明实施例方案在现有的写时拷贝快照方案上加以改进,在源数据区与快照数 据区增加位图表,当源数据区接收到写请求时,先根据源数据区位图表判断该数据块是否有效,并设置源数据区位图表对应比特位为有效。若该数据块无效,则直接响应该写请求; 若源数据区位图表标识该数据块有效,则进一步根据快照数据区位图表判断该数据块是否 有效;若该数据块无效,则直接响应该写请求。所以数据块对应的源数据区位图表或者快照 数据区位图表对应比特位为无效时,可直接响应该写请求,而无需拷贝该数据块到快照数 据区。通过改进可降低用户写请求延时,减少快照引用索引与快照数据区大小,提高存储空 间利用率。 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种改进的写时拷贝快照的实现方法,其特征在于,设置源数据区位图表;所述源数据区位图表每比特位对应N个的数据块;比特位为有效表示对应的数据块中写入了数据,比特位为无效则表示对应的数据块中未写入数据,N为自然数;该方法包括如下步骤A、创建快照数据区;将快照数据区划分为多个数据块,快照数据区数据块大小与源数据区数据块大小相等,并初始化快照引用指针索引;拷贝源数据区位图表到快照数据区作为快照数据区位图表;B、源数据区接收到写请求,确定所述写请求对应的源数据区数据块,并判断所述源数据区数据块对应的源数据区位图表的第J个比特位是否有效,若是则执行步骤C,J为自然数;否则转至步骤E;C、判断快照数据区位图表对应的第J个比特位是否有效,若有效,则执行步骤D,否则转至步骤E;D、判断所述源数据区数据块是否已建立快照引用指针,若已建立快照引用指针,则转至步骤E,否则,读取该源数据区数据块的数据,将读取的数据块写入到快照数据区,为该数据块建立快照引用指针,并加入快照引用指针索引;E、修改源数据区位图表对应的比特位状态为有效,源数据区响应所述写请求。
2.根据权利要求1所述的方法,其特征在于,步骤B所述确定所述写请求对应的源数据 区数据块的数据块号Chimkn等于写请求起始地址A除以源数据区数据块的大小M。
3.根据权利要求2所述的方法,其特征在于,所述源数据区数据块对应的源数据区位 图表的第J个比特位等于源数据区数据块号Chimkn除以源数据区位图表每比特位对应的 数据块数目N。
4.根据权利要求1所述的方法,其特征在于,所述设置源数据区位图表包括如下步骤建立初始化的源数据区位图表,根据内存大小确定位图表每比特位标识的数据块数目N,位图表所有比特位初始化为无效状态;源数据区接收用户的写请求,确定所述写请求对应的源数据区数据块,修改源数据区 数据块对应的源数据区位图表的比特位状态为有效。
5.一种改进的写时拷贝快照的实现装置,包括用户请求接收模块、源数据区模块、快 照数据区模块;源数据区模块包括多个数据块组成的源数据区,并用于对源数据区中的数 据块执行读写操作;快照数据区模块用于保存快照数据区的数据块;用户请求接收模块, 用于接收来自用户的写请求;其特征在于,该装置还包括数据块管理模块、快照引用索引模块、数据块拷贝模块、快 照引用索引更新模块、源数据区位图表模块以及快照区位图表模块;数据块管理模块,用于根据所述写请求计算得到待修改的源数据区数据块号,并将所 得数据块号发送至源数据区位图表模块;源数据区位图表模块,用于维护源数据区位图表;所述源数据区位图表每比特位对应 N个的数据块;比特位为有效表示对应的数据块中写入了数据,比特位为无效则表示对应 的数据块中未写入数据;在收到来自数据块管理模块的数据块号后,判断所述数据块号对 应的源数据区位图表的第J个比特位是否有效,若是则将比特位序号J以及数据块号发送 至快照区位图表模块;N、J均为自然数;在源数据区执行写操作后,将所述数据块号所对应 源数据区位图表的比特位设置为有效;快照数据区位图表模块,用于在创建快照时,拷贝源数据区位图表模块中的源数据区 位图表到快照数据区作为快照数据区位图表;并根据来自源数据区位图表模块的比特位序 号J,判断快照数据区位图表的第J个比特位是否有效,若有效则将所述数据块号发送至快 照引用索引模块;若无效则通知所述源数据区模块执行相应的写操作;快照引用索引模块,用于保存了预设设置的快照引用指针索引,并根据来自快照区位 图表模块的数据块号,查找所述快照引用指针索引,若已建立关于所述数据块号的快照引 用索引,则通知源数据区模块响应所述写请求,若未建立关于所述数据块号的快照引用索 弓丨,则将所述数据块号通知数据块拷贝模块;数据块拷贝模块用于在收到快照引用索引模块的通知后,读取源数据区待修改数据 块,将读取的数据块写入快照数据区的数据块;快照引用索引更新模块,用于在数据块拷贝模块对快照数据区模块进行写入操作后, 建立新写入的快照数据区数据块与源数据区数据块的快照引用指针,并将所述建立的快照 引用指针发送至快照引用索引模块,使快照引用索引模块的快照引用指针索引进行更新, 然后通知所述源数据区模块执行相应的写操作。
6.根据权利要求5所述的装置,其特征在于,所述源数据区位图表模块进一步包括 初始化单元,用于建立初始化的源数据区位图表,根据内存大小确定位图表每比特位 标识的数据块数目N,位图表所有比特位初始化为无效状态。
全文摘要
本发明公开了一种改进的写时拷贝快照的实现方法,设置源数据区位图表以及快照区位图表;位图表每比特位对应N个的数据块;比特位为有效表示对应的数据块中写入了数据,比特位为无效则表示对应的数据块中未写入数据,N为自然数;基于所述源数据区位图表以及快照区位图表,实现如下功能当源数据区接收到写请求时,判断是否需要拷贝对应数据块到快照数据区,并仅在需要的情况下才执行所述拷贝操作。本发明还公开一种改进的写时拷贝快照的实现装置。本发明提出的改进方案对于很大一部分的主机写请求可直接响应,而无需拷贝该数据块到快照数据区。通过改进可降低用户写请求延时,减少快照引用索引与快照数据区大小,提高存储空间利用率。
文档编号G06F12/06GK101840362SQ20091023675
公开日2010年9月22日 申请日期2009年10月28日 优先权日2009年10月28日
发明者吉永光, 金振成 申请人:创新科存储技术有限公司;创新科软件技术(深圳)有限公司