RHEL6 snapshot 快照原理及实验
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-03-29
RHEL6 snapshot 快照原理及实验
LVM对lv提供了快照“snapshot”备份功能,这种功能也只对LVM 有效.snapshot有多种实现方法,这里只谈谈“写时复制COW”,不是奶牛哦,是“Copy-On-Write”
当一个snapshot创建的时候,仅拷贝原始卷里的源数据,这不是物理上的数据拷贝,因此snapshot的创建特别快,当原始卷里的数据有写入时,备份卷开始记录原始卷哪些数据发生了变化,然后在原始卷新数据覆盖旧数据时,将旧数据拷贝到snapshot的预留空间里,起到备份数据的作用,就保证了所有数据和创建备份卷之前的数据一致性.
而对于snapshot的读操作,如果是读取数据块是没有修改过的,那么会将读操作直接重定向到原始卷上,如果是要读取已经修改过的块,那么就读取拷贝到snapshot中的块.当原始卷破坏了之后还能用snapshot备份的数据还原.
参考一份51CTO 【asram先生】的解释吧:
【镜像分离,是为了让镜像卷保持拆分一瞬间的状态,而不再继续被写入数据.而拆分之后,主卷所做的所有写IO动作,会以bitmap的方式记录下来.bitmap就是一份位图文件,文件中每个位都表示卷上的一个块(扇区,或者由多个扇区组成的逻辑块),如果这个块在镜像分离之后,被写入了数据,则程序就将bitmap文件中对应的位从0变成1.待备份完成之后,可以将镜像关系恢复,此时主卷和镜像卷上的数据是不一致的,需要重新做同步.程序搜索bitmap中所有为1的位,对应到卷上的块,然后将这些块上的数据,同步到镜像卷,从而恢复实时镜像关系.
拥有帝国一切,皆有可能。欢迎访问phome.net改变块(changed block)
快照创建成功后,源和快照共享同一份物理数据拷贝,直到数据发生写操作,此时源上老数据或者新增数据将被写向新的存储空间.为了记录和追踪块的变化和复制信息,需要一个位图(bitmap),它用于确定实际拷贝数据的位置,以及确定从源还是目标来获取数据.
并发(concurrent)
它与改变块非常相似,但它总是物理地拷贝数据.当即时拷贝执行时,没有数据被复制.取而代之,它创建一个位图来记录数据的复制情况,并在后台进行真正的数据物理复制.
写时复制快照在快照时间点之后,没有物理数据复制发生,仅仅复制了原始数据物理位置的元数据.因此,快照创建非常快,可以瞬间完成.然后,快照副本跟踪原始卷的数据变化(即原始卷写操作),一旦原始卷数据块发生写操作,则先将原始卷数据块读出并写入快照卷,然后用新数据块覆盖原始卷.这样我们访问快照卷上的数据仍旧是写操作前的,可以保证我们备份数据的一致性.】
检验一下snapshot的特点吧:
采取COW实现方式时,snapshot的大小并不需要和原始卷一样大.那设置成多大呢?第一、根据原始卷数据的改变大小范围来设置;第二、根据原始卷数据的更新频率来定.一旦 snapshot的空间记录满了原始卷块变换的信息,那么这个snapshot就无法使用了.当然,如果你的snapshot大小和原始卷一样大,甚至还要大,那snapshot备份就绝对的不会崩溃啦.
下面就开始吧!
一、新建lv分区,装上一个系统(可以不用装,其实这里只需要说明他是一个我们要备份的数据卷而已)
--->先查看一下vg空闲空间吧
拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于RHEL6 snapshot 快照原理及实验的所有评论