磁盘快照方法与装置的制作方法

文档序号:6483721阅读:232来源:国知局
专利名称:磁盘快照方法与装置的制作方法
技术领域
本发明涉及快照技术领域,具体涉及磁盘快照方法与装置。
背景技术
快照是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在 某个时间点的映像。快照可以是其所表示的数据的一个副本,也可以是数据
的一个复制品。常用的即写即拷(copy-on-write )快照技术可以在每次输入 新数据或已有数据被更新时生成对存储数据改动的快照,这样就可以在发生 硬盘写错误、文件损坏或程序故障时迅速恢复数据
快照空间是存储物理资源的一部分,在对虚拟磁盘执行快照操作时,虛 拟磁盘中需要被修改的原数据移动到快照空间。
快照技术是一种能够保护之前某个时间点数据的存储技术。它可以生成 指定时间点数据的一个映像,在系统受到攻击、数据被删除、系统被病毒侵 害的情况下,通过快照技术可以把数据恢复到之前一个时间点的状态,从而 达到恢复和保护数据的效果。
最常见的一种快照技术就是第一次写拷贝(COFW, Copy on First Write),即在确定要对某磁盘空间执行快照操作时刻起,第一次向该磁盘 空间写入数据块时,要将该磁盘空间上已有的数据块取出并放入到快照空间 中。如图l所示,设定要在9: 00对磁盘空间5执行快照操作,9: 05有一 个数据块5,要写入磁盘空间5,则将磁盘空间5上已有的数据块5取出放 入快照空间,然后将数据块5,写入磁盘空间5。
图2为现有的COFW流程图,如图2所示,其具体步骤如下
步骤201:服务器要将datal写入磁盘空间diskl,向存储控制器发起写指令,该指令中的操作码为写,该指令包含要将datal写入的块在diskl中 的逻辑起始地址address, datal的长度TransferSize, datal 。
步骤202:存储控制器接收写指令,查询到diskl的COFW标志,则向 disk 1发送读指令,该指令中的操作码为读,该指令包含address 、 TransferSize。
步骤203: diskl接收读指令,从address起,读取长度等于TransferSize 的数据data2,将data2发送给存储控制器。
步骤204:存储控制器请求快照资源分配单元分配快照空间,该快照空 间的长度等于TransferSize,存储控制器将data2放入快照空间。
步骤205:存储控制器将datal写入diskl中起始地址为address,长度 为TransferSize的块中。
可见,现有技术中,将data2全部写入了快照空间。而在实际中,datal 可能与data2全部或部分相同,将data2全部拷贝到快照空间中,无疑增加 了对快照资源的需求,增加了写入快照空间的数据量,同时,传输数据量的 增加也会影响写快照空间存储的10性能。例如Datal的大小为64K, 占据128个扇区,采用现有技术,对于TransferSize为128的命令描述块 (CDB, Command Descriptor Block),就需要分配64K的快照资源空间, 64K的数据量要写入到快照空间中,最后再把64K数据写入到磁盘空间中, 则需要执行64K读指令一次,64K写指令2次,同时占用64K的快照资源。

发明内容
本发明提供磁盘快照方法与装置,以减少快照资源的占用。 本发明的技术方案是这样实现的 一种磁盘快照方法,包括
当需要向 一磁盘空间写入第 一数据块时,若发现该磁盘空间设置有第 一次 写拷贝COFW标志,则从该磁盘空间读取存储的第二数据块,判断第二数据块 与第一数据块是否相同,若是,不作处理;否则,将第二数据块写入快照空间, 将第一数据块写入磁盘空间。
6所述将第二数据块写入快照空间进一步包括将所述磁盘空间的COFW标
志清除。
所述将第二数据块写入快照空间之后进一步包括要查询第二数据块,先 在快照空间中查找,若未查找到,则在所述磁盘空间中查找。 一种磁盘快照方法,预先设定子块长度,该方法包括 当需要向一磁盘空间写入第一数据块时,若发现该磁盘空间设置有COFW
标志,则从该磁盘空间读取存储的第二数据块;以所述子块长度为单位,将第 一数据块、第二数据块分别划分成第一数据子块、第二数据子块,对处于相同 位置的每对第一数据子块和第二数据子块,判断二者是否相同,若是,不作处 理;否则,将第二数据子块写入快照空间,将第一数据子块写入第二数据子块 在磁盘空间所处位置。
所述将第二数据子块写入快照空间进一步包括记录第二数据子块在磁盘 空间的存储地址与在快照空间的存储地址的对应关系,
所述方法进一步包括要查询第二数据块,根据所述对应关系中第二数据 子块在快照空间的存储地址,查找快照空间内的第二数据子块,根据所述对应 关系中第二数据子块在磁盘空间的存储地址,确定其它第二数据子块在磁盘空 间中的存储地址,根据所确定的地址,在磁盘空间中查找其它第二数椐子块。
所述对处于相同位置的每对第一数据子块和第二数据子块,判断二者是否 相同为
对未被写入快照空间的第二数据子块,判断该第二数据子块和与该第二数 据子块处于相同位置的第一数据子块是否相同;
所述将第二数据子块写入快照空间之后进一步包括
判断是否所有第二数据子块都已被写入快照空间中,若是,将所述磁盘空
间的COFW标志清除。
一种磁盘快照装置,包括读写处理模块和比较模块,其中 读写处理模块,当需要向一磁盘空间写入第一数据块时,若发现该磁盘空
间设置有COFW标志,则从该磁盘空间读取存储的第二数据块,将第一、二数据块发送给比较模块;接收比较模块返回的不同指示,将第二数据块写入快照空间,将第一数据块写入磁盘空间;
比较模块,判断第二数据块与第一数据块是否相同,若是,不作处理;否则,向读写处理模块返回不同指示。
所述读写处理模块进一步用于,在将第二数据块写入快照空间时,将所述磁盘空间的COFW标志清除。
一种磁盘快照装置,该装置包括
读写处理模块,当需要向一磁盘空间写入第一数据块时,若发现该磁盘空间设置有COFW标志,则从该磁盘空间读取存储的第二数据块,以所述子块长度为单位,将第一数据块、第二数据块分别划分成第一数据子块、第二数据子块,将处于相同位置的每对第一数据子块和第二数据子块分别发送给比较模块;接收不同指示,将第二数据子块写入快照空间,将第一数据子块写入第二数据子块在义兹盘空间所处位置;
比较模块,对处于相同位置的第一数据子块和第二数据子块,判断二者是否相同,若是,不作处理;否则,向读写处理模块返回不同指示。
所述读写处理模块在将第二数据子块写入快照空间的同时进一步用于,记录第二数据子块在磁盘空间的存储地址与在快照空间的存储地址的对应关系。
所述装置进一步包括子块迁移记录模块,用于记录已被写入快照空间的第二数据子块标识;
且,所述读写处理模块进一步用于,从子块迁移记录模块获取已被写入快照空间的第二数据子块标识,确定未被写入快照空间的第二教据子块,对未被写入快照空间的各第二数据子块,将该第二数据子块和与该第二数据子块处于相同位置的第一数据子块发送给比较模块;且,在将第二数据子块写入快照空间时,在子块迁移记录模块中记录该第二数据子块标识;且,在确定所有第二数据子块都已被写入快照空间中时,将所述磁盘空间的COFW
标志清除。
与现有技术相比,本发明通过将要写入磁盘空间的第 一数据块与磁盘空
8间已有的第二数据块进行比较,只有在二者不同时,才将第二数据块写入快
照空间,从而减少了快照资源的占用,提高了写快照空间存储的IO性能;
或者,本发明通过将要写入磁盘空间的第一数据块、磁盘空间已有的第二数据块分別划分成多个第一数据子块、第二数据子块,分别比较处于相同位置的第一、二数据子块,若二者不同,才将该第二数据子块写入快照空间,
从而减少了快照资源的占用,提高了写快照空间存储的10性能。


图1为现有的COFW的示意图2为现有的COFW的流程图3为本发明实施例一提供的磁盘快照流程图4为本发明实施例二提供的磁盘快照流程图5为本发明实施例一提供的磁盘快照装置的组成图6为本发明实施例二提供的磁盘快照装置的组成图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。图3为本发明实施例一提供的磁盘快照流程图,如图3所示,其具体步骤如下
步骤301:服务器要将datal写入磁盘空间diskl,向存储控制器发送写指令,该指令中包含datal要写入的块在diskl中的起始地址address,传输数据长度TransferSize, datal。
步骤302:存储控制器接收写指令,查询到diskl的COFW标志,则从diskl中读取起始地址为address,长度为TransferSize的数据data2。
步骤303:存储控制器比较datal和data2,判断datal和data2是否相同,若是,不作处理,本流程结束;否则,执行步骤304。
步骤304:存储控制器请求快照资源分配单元分配快照空间,该快照空间的长度为TransferSize,将data2写入快照空间。
步骤305:存储控制器将datal写入diskl中起始地址为address,长度为TransferSize的块中,将diskl的COFW标志清除。
由于data2与datal不同,data2被写入到了快照空间,因此,将diskl的COFW标志清除;若data2与datal相同,则data2未被写入快照空间,因此,diskl的COFW标志仍被保留,此后若又有数据要写入diskl,则会继续执行上述步骤301 ~ 305。
当要查询快照数据data2时,先在快照空间中查找,若未查找到,则在diskl中查找。
图4为本发明实施例二提供的磁盘快照流程图,如图4所示,其具体步骤如下
步骤401:服务器要将datal写入磁盘空间diskl,向存储控制器发送写指令,该指令中包含datal要写入的块在diskl中的起始地址address,传输长度TransferSize, datal 。
步骤402:存储控制器接收写指令,查询到diskl的COFW标志,则从diskl中读取起始地址为address,长度为TransferSize的数据data2。
步骤403:按照预设子块长度,存储控制器将datal、 data2分别划分为多个子块。
通常扇区为存储系统的最小单位,因此,可将一个扇区长度的正整数倍作为子块长度。
设datal、 data2分别被划分成m个子块,datal=(TQ, TP Tm.,},data2= {S0, S。…,Sm-,}。
对data2中的每个子块S,( i = 0, 1, ..., m - 1 )分别执行如下步骤404 ~
410:
步骤404:存储控制器根据记录的data2的已迁移子块列表,判斯data2的T,是否已被写入快照空间,若是,执行步骤407;否则,执行步骤405。
若data2的 一个子块被写入快照空间,则该子块的标识会被记录到data2
10的已迁移子块列表中,见下述步骤406。
步骤405:存储控制器比较Si和Ti,判断二者是否相同,若是,执行步骤407;否则,执行步骤406。
步骤406:存储控制器请求快照资源分配单元分配快照空间,该快照空间大小等于预设子块长度,将data2的Si写入快照空间,并记录Sj的快照空间地址与Si在diskl中的地址的对应关系,同时,将Si的标识记录到data2的已迁移子块列表中,并将datal的Ti写入原S;在diskl中的存储空间中。
Sj的标识可以序号i表示。
步骤407:存储控制器判断是否data2的所有未写入快照空间的子块都已和datal的对应子块比较过,若是,执行步骤409;否则,执行步骤408。
步骤408:转至data2的下一个子块,返回步骤404。
步骤409:存储控制器判断是否data2的所有子块都已被写入快照空间,若是,执行步骤410;否则,不作处理,本流程结束。
步骤410:存储控制器将disk 1的COFW标志清除。
此后查询data2时,可先按照步骤406中记录的Si的快照空间地址与Si在diskl中的地址的对应关系,在快照空间中查询已被写入快照空间的data2的子块,若根据对应关系中的Si在diskl中的地址,发现有data2的子块未写入快照空间,则根据对应关系中未包含的diskl的地址,在diskl中查找data2中未写入快照空间的子块。例如设data2共包含5个子块So, SPS,p且SQ, SP S2已写入快照空间,则步骤406中分别记录了 S0、 S,、 S2的快照空间地址与其在diskl中的地址的对应关系,此后查询data2时,先根据所述对应关系中的So、 S, 、 S2的快照空间地址,在快照空间中查找到S0, SP S2,且根据所述对应关系中的S0、 S,、 S2在diskl中的地址,可以得知S0, S,, S2在data2中的位置,然后根据所述S。、 S,、 S 在diskl中的地址可以确定S3、 S4在diskl中的地址,从diskl中读取S3、 S4,将S。, S,,...,S4组合得到data2。
图5为本发明实施例一提供的磁盘快照装置的组成图,如图5所示,其主要包括读写处理模块51和比较模块52,其中
读写处理模块51:当需要向一磁盘空间写入第一数据块时,若发现该磁盘空间设置有COFW标志,则从该磁盘空间读取存储的第二数据块,将第一、二数据块发送给比较模块52;接收比较模块52返回的不同指示,将第二数据块写入快照空间,将第 一数据块写入》兹盘空间,并将磁盘空间的COFW标志清除。
比较模块52:接收读写处理模块51发来的第一、二数据块,判断第一、二数据块是否相同,若是,不作处理;否则,向读写处理模块51返回不同指示。
图6为本发明实施例二提供的磁盘快照装置的组成图,如图6.所示,其主要包括子块迁移记录模块60、读写处理模块61和比较模块62,其中
子块迁移记录模块60:用于记录已被写入快照空间的第二数据子块标识。
读写处理模块61:当需要向一磁盘空间写入第一数据块时,若发现该磁盘空间设置有COFW标志,则从该磁盘空间读取存储的第二数据块,以所述子块长度为单位,将第一数据块、第二数据块分别划分成第一数据子块、第二数据子块,从子块迁移记录模块60获取已被写入快照空间的第二数据子块标识,确定未写入快照空间的第二数据子块,将每个未写入快照空间的第二数据子块和与该第二数据子块处于相同位置的第一数据子块发送给比较模块62;接收比较模块62返回的携带第二数据子块标识的不同指示,将第二数据子块标识对应的第二数据子块写入快照空间,在子块迁移记录模块60中记录该第二数据子块标识,将与该第二数据子块处于相同位置的第一数据子块写入该第二数据子块在磁盘空间所处位置。在确定所有第二数据子块都已被写入快照空间中时,将所述磁盘空间的COFW标志清除。
比较模块62:接收读写处理模块61发来的处于相同位置的第一数据子块和第二数据子块,判断二者是否相同,若是,不作处理;否则,向读写处理模块61返回携带第二数据子块标识的不同指示。
读写处理模块61在将第二数据子块写入快照空间的同时还可用于,记录第二数据子块在磁盘空间的存储地址与在快照空间的存储地址的对应关系,以便后续查询第二数据块。以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种磁盘快照方法,其特征在于,该方法包括当需要向一磁盘空间写入第一数据块时,若发现该磁盘空间设置有第一次写拷贝COFW标志,则从该磁盘空间读取存储的第二数据块,判断第二数据块与第一数据块是否相同,若是,不作处理;否则,将第二数据块写入快照空间,将第一数据块写入磁盘空间。
2、 如权利要求l所述的方法,其特征在于,所述将第二数据块写入快照空 间进一步包括将所述;兹盘空间的COFW标志清除。
3、 如权利要求1或2所述的方法,其特征在于,所述将第二数据块写入快 照空间之后进一步包括要查询第二数据块,先在快照空间中查找,若未查找 到,则在所述》兹盘空间中查找。
4、 一种磁盘快照方法,其特征在于,预先设定子块长度,该方法包括 当需要向一磁盘空间写入第一数据块时,若发现该磁盘空间设置有COFW标志,则从该磁盘空间读取存储的第二数据块;以所述子块长度为单位,将第 一数据块、第二数据块分别划分成第一数据子块、第二数据子块,对处于相同 位置的每对第一数据子块和第二数据子块,判断二者是否相同,若是,不作处 理;否则,将第二数据子块写入快照空间,将第一数据子块写入第二数据子块 在磁盘空间所处位置。
5、 如权利要求4所述的方法,其特征在于,所述将第二数据子块写入快照 空间进一步包括记录第二数据子块在磁盘空间的存储地址与在快照空间的存 储地址的对应关系,所述方法进一步包括要查询第二数据块,根据所述对应关系中第二数据 子块在快照空间的存储地址,查找快照空间内的第二数据子块,根据所述对应 关系中第二数据子块在磁盘空间的存储地址,确定其它第二数据子块在磁盘空 间中的存储地址,根据所确定的地址,在磁盘空间中查找其它第二数据子块。
6、 如权利要求4或5所述的方法,其特征在于,所述对处于相同位置的每对第 一数据子块和第二数据子块,判断二者是否相同为对未被写入快照空间的第二数据子块,判断该第二数据子块和与该第二数据子块处于相同位置的第 一数据子块是否相同;所述将第二数据子块写入快照空间之后进一步包括判断是否所有第二数据子块都已被写入快照空间中,若是,将所述磁盘空 间的COFW标志清除。
7、 一种磁盘快照装置,其特征在于,包括读写处理模块和比较模块,其中读写处理模块,当需要向一磁盘空间写入第一数据块时,若发现该磁盘空 间设置有COFW标志,则从该磁盘空间读取存储的第二数据块,将第一、二数 据块发送给比较模块;接收比较模块返回的不同指示,将第二数据块写入快照 空间,将第 一数据块写入磁盘空间;比较模块,判断第二数据块与第一数据块是否相同,若是,不作处理;否 则,向读写处理模块返回不同指示。
8、 如权利要求7所述的装置,其特征在于,所述读写处理模块进一步用于, 在将第二IW居块写入快照空间时,将所述》兹盘空间的COFW标志清除。
9、 一种磁盘快照装置,其特征在于,该装置包括读写处理模块,当需要向一磁盘空间写入第一数据块时,若发现该磁盘空 间设置有COFW标志,则从该磁盘空间读取存储的第二数据块,以所述子块长 度为单位,将第一数据块、第二数据块分别划分成第一^t据子块、第二数据子 块,将处于相同位置的每对第一数据子块和第二数据子块分别发送给比较模块; 接收不同指示,将第二数据子块写入快照空间,将第一数据子块写入第二数据 子块在磁盘空间所处位置;比较模块,对处于相同位置的第一数据子块和第二数据子块,判断二者是 否相同,若是,不作处理;否则,向读写处理模块返回不同指示。
10、 如权利要求9所述的装置,其特征在于,所述读写处理才莫块在将第二 数据子块写入快照空间的同时进一步用于,记录第二数据子块在;兹盘空间的存储地址与在快照空间的存储地址的对应关系。
11、如权利要求9或IO所述的装置,其特征在于,所述装置进一步包括 子块迁移记录模块,用于记录已被写入快照空间的第二数据子块标识;且,所述读写处理模块进一步用于,从子块迁移记录模块获取已被写入快 照空间的第二数据子块标识,确定未被写入快照空间的第二数据子块,对未被 写入快照空间的各第二数据子块,将该第二数据子块和与该第二数据子块处于 相同位置的第一数据子块发送给比较模块;且,在将第二数据子块写入快照空 间时,在子块迁移记录模块中记录该第二数据子块标识;且,在确定所有第二 数据子块都已被写入快照空间中时,将所述》兹盘空间的COFW标志清除。
全文摘要
本发明公开了磁盘快照方法与装置。方法包括当需要向一磁盘空间写入第一数据块时,若发现该磁盘空间设置有第一次写拷贝COFW标志,则从该磁盘空间读取存储的第二数据块,判断第二数据块与第一数据块是否相同,若是,不作处理;否则,将第二数据块写入快照空间,将第一数据块写入磁盘空间。本发明减少了快照资源的占用。
文档编号G06F3/06GK101477447SQ20091007750
公开日2009年7月8日 申请日期2009年1月21日 优先权日2009年1月21日
发明者兵 张 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1