原创 Linux中COW快照bitmap语义分析

2008-7-10 10:13 4393 4 4 分类: 软件与OS


快照技术是计算机技术中的传统技术,常应用于数据的快速备份。在快照实现技术中,最常用的快照算法有COW写时拷贝算法和ROW写时映射算法。COW算法适合在写少读多的情况下应用;ROW算法适合在写多读少的情况下应用。这里主要分析一下COW算法实现过程中的bitmap语义。



 



        COWCopy On Write)快照有两种实现方式:一种为草型快照,另一种为链式快照。草型快照在快照设备非常多的时候需要进行多份数据拷贝,但是快照设备之间不存在紧密的依赖关系;链式快照只需要进行一次数据拷贝,但是快照设备之间存在紧密的依赖关系。两种快照的逻辑结构表述如下:
352755c5-6935-41a0-8fb7-a4de7e734eb7.JPG
链式快照
47b92378-df46-4a43-96cd-962365950816.JPG
草型快照


    在实现COW快照过程中需要用一个bitmap来表示快照设备之间的增量信息。对于链式快照而言,假设创建一个快照点s4,那么源设备会将记录的bitmap信息交给s4,然后将源设备的bitmap清空。这样在写源设备的时候,系统会检查写操作所在的chunk是否在历史的某个时刻被写过,如果已经被写过,那么将orig设备上所对应chunk拷贝到快照点s4,并且将新的数据写入orig,然后再修改orig设备的bitmap对应chunk的位信息。这个过程就是快照的写时拷贝过程。对于草型快照而言,数据将向多个快照点进行COW,效率相对于链式快照低。从这个过程可以看出,orig设备上的bitmap信息记录的是最近一个快照点之后的增量数据信息。在未来的某个时刻,如果再创建一个快照点,那么orig上的bitmap信息将转移给新创建的快照设备,这样这个bitmap信息就描述了目前最近快照点到未来快照点之间的增量数据。这些增量数据的老数据都位于最近快照设备之上,因此,在链式快照的读写算法中,需要通过读前驱设备的bitmap信息来定位数据是否位于被访问的快照设备上。草型快照具有同样的原理,其bitmap信息在创建快照的时候从orig转移给新快照,然后orig上的bitmap清空。由于草型快照设备之间具有很强的独立性,无法反映快照设备之间的增量信息,所以通过这个增量数据的bitmap信息,可以方便的获取草型快照之间的增量信息。



 



       下面补充一下链式快照的读过程:假设读快照设备s2时间点的信息,那么首先读取s3时间的bitmap信息,如果读取chunk的位信息为1,那么说明s2上的数据有效,直接从s2设备上读取信息。如果位信息无效,那么依次往前遍历,定位bitmap位有效的下一个快照设备。这就是COW快照设备的读过程。草型快照的读过程和这个不一样,具体代码可以参考Linux中的snapshot代码。



 



       从上述分析可以看出,COWbitmap语义为快照点之间的增量信息,通过这个增量信息,链式快照可以遍历得到快照点上的数据,草型快照可以得到快照点之间的增量信息。感兴趣的朋友可以阅读Linux中的snapshot相关代码,本文只是对阅读代码过程中遇到的bitmap语义进行分析说明。





文章评论0条评论)

登录后参与讨论
相关推荐阅读
tiloog 2012-12-18 12:58
我的存储之道博客
大家好,最近一直在做存储方面的工作,所以我在51CTO上专门开辟了一个空间讨论存储相关的问题,喜欢存储的朋友可以可以访问我的存储博客: 存储之道 (http://alanwu.blog.51cto...
tiloog 2012-04-06 21:39
SAS Cable可以有多长?
SAS接口是高端硬盘的主流接口,是存储系统的理想选择。我们知道高速信号的传输距离和传输线相关的,那么SAS作为外部通信接口,其Cable线具体可以有多长呢? 我在网上找到上图所示的眼图测...
tiloog 2012-04-06 21:38
对TRIM SCSI命令的一些分析
前一段时间做了一些对SSD方面进行优化的工作,SSD最大的问题在于长时间使用之后,IO性能会急剧下降。其主要问题在于为了防止“写放大”问题的产生,SSD的firmware采用了类似于log方式的算...
tiloog 2012-04-06 21:35
惊叹!我们的跨洋网络
  每次地质自然灾害的时候,总会伴随着网络的问题,这是由于我们的越洋光纤网络出了故障,受到自然力的破坏而导致断裂。越洋光纤,听起来的确是件非常不可思议的事情,工程量非常的巨大,但正是如此伟大的...
tiloog 2012-04-06 21:33
科学仪器网络模型
科学仪器概述     科学仪器发展趋势 科学是从测量开始的,科学仪器是信息技术的源头,是信息产业的重要组成部分,是现代科学与工业的基石。科学仪器产业的发展关系到国家科学研究实力、生...
tiloog 2012-04-06 21:16
谈谈RAID产品与技术
说起RAID,学计算机的同学马上会说RAID技术简单啊,就是将数据条带化,然后计算一些冗余数据,一并写入磁盘。通过RAID技术一方面提高系统的IO性能;另一方面提高系统的可靠性。单纯从RAID的原...
我要评论
0
4
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条