发新话题
打印

快照快照

本主题由 doit 于 2007-9-4 13:29 设置高亮
看大家回复的如此热烈,也加进来讨论讨论。欢迎拍砖!
从作快照的位置来看:要么是在主机端,要么就是Storage上(NAS或者ARRAY)

1 首先从主机端开始讲起(只讨论基本原理,不做各种快照变体的讨论)
1.1 对于Windows平台,应该大家都熟悉VSS(MS在Storage上技术比较落后些,比起UNIX平台推出这种技术要晚)
     它其实定义的是一套框架,由provider, writer, requestor组成。快照分为2步走,第一步是请求生成快照,第二步是在后续操作中不断的根据快照类型拷贝数据。
    第一步操作细节为,由requestor请求,锁住writer(各种应用,比如exchange, sql之类)的IO,将cache写入存储设备(从而避免数据一致性问题),然后恢复writer的I/O,做一些快照的初始化工作,这就是做快照那一瞬间的动作,其消耗的时间由I/O的负荷和已有快照的存储空间相关,因此最初做快照可能就很快;
    而第二步则是在快照生成后的漫长过程中,在更新原文件时,采用Copy on Write(CoW)技术去拷贝数据(各软硬件厂商提供的provider,会有自己的一套规则去管理快照,但基本原理都一样,正如江湖语言--天下武功出少林),这种快照基本都是是基于卷的。
   顺便说一声,各位看官经常提到快照的指针,是不是有点晕;其实,这个指针准确的说是LBA地址或者卷寻址的地址。打个比方,
      比如在T1时刻,F1文件存放的数据放在lba地址A1;
      在T2时刻做了一个快照,快照中对应的F1'文件(F1的快照),它初始时不会分配地址空间来存放数据,而是直接用lba地址A1(常说的指针),所以此时F1和F1'内容一样;
      而在T3时刻,要对F1文件改动,此时F1'采用CoW,分配新lba地址A1',把F1里面的内容拷贝过来,然后去更新F1文件lba地址A1里面的值,此时F1和F1'就不一样了

1.2 对于Unix/Linux平台,大部分都提供文件系统和卷的快照
1.2.1 卷的快照
    其实和Windows的VSS原理差不多,总是采用CoW和bitmap之类的技术来实现和管理;

1.2.2 文件系统的快照
    对于很多Unix的文件系统, 比如Veritas的VxFS(它有2种,一种是和卷的快照类似,另一种叫做Checkpoint,这里采用checkpoint来阐述)和IBM的 TransArc Episode文件系统,都是采用fileset(文件集),其技术原理也是一样,只不过它更加的易于管理;拿VxFS举例,每做一次Checkpoint,就会创建一个fileset,它能持续的保存变更的数据,并且Checkpoint是可以被mount的,也就是说它会被经常用于备份应用种(因为备份依赖文件系统的东西更多,所以在文件系统做checkpoint意义是非常明显的)。
    同时在文件系统做,减少了windows种VSS需要writer模块,直接将文件系统freeze就可以,而不用针对各种应用设计设计writer模块,当cache中的数据写入后,采用thaw就可以恢复文件系统的操作。

2. 对于Storage设备
其实,不管是NAS还是SAN,你都可以把它想象成装有OS主机的大盒子,只不过NAS给外界的接口是NFS或者CIFS,而ARRAY则是一套SCSI target端接口;
有了这个概念基础,那存储设备也可以在其所在盒子内部设计快照;
至于在盒子内的文件系统(NAS可能会这样选择)或者是卷级(Array可能选择和卷紧密相关的lun)就王婆卖瓜啦。
各位看官可能被快照的指针,和快速制作快照迷惑,其实也就是一层纸......

[ 本帖最后由 rechardluo 于 2007-8-29 13:10 编辑 ]

TOP

支持。顶
http://space.doit.com.cn/35700
存储界的首本个性之作《大话存储-网络存储系统原理精解与最佳实践》,将于9月初由清华大学出版社隆重出版!敬请关注!

TOP

顶下,大家也是讨论的快照,有的说的主机端的,有的说的存储设备的,有的是备份软件的......

TOP

引用:
原帖由 feelfall 于 2007-8-28 19:37 发表
快照刚创建的时候,快照卷上是没有东西的。当base卷发生变化的时候,变化了的数据块地址和值就记录在快照卷里面。

快照能防止的也就是人为的错误,数据的逻辑错误,比如一不小心改错了一个数据。把快照卷中的 ...
这个算是对快照基本的解释(阵列上的)

TOP

弱弱地问一句:
NAS的快照和复制搬到备份的快照和复制有啥不同的??????
http://xiaojf2005.blog.sohu.com/网络工程师之家

TOP

快照技术原理深入讨论 http://www.sansky.net/html/2007-05-13-221.html
存储部落:http://www.sansky.net

TOP

广告行为..
http://xiaojf2005.blog.sohu.com/网络工程师之家

TOP

学到了,看到了,tubie1兄弟的转的文章不错哦!把观点都跟正了!
存储备份
王培俊
QQ:27974531 西部存储群:38857045
e-mail:wang_0281@hotmail.com
电话:13183802190

TOP

1、数据备份是一个时间轴上的概念,在一段时间内,在相应的一些时间点进行对数据的状态的保留,以便未来需要时恢复当时的状态。

2、传统数据备份采用磁带备份的方式进行,但是面临许多问题,如备份窗口不足、恢复速度过慢、不可靠、机械故障等。

3、为了提高数据备份恢复的RTO和RPO,现代先进的数据备份恢复手段增加了“本机时间点瞬时备份恢复”的功能。

4、磁带备份继续保留作数据离线保管的目的。

5、“本机时间点瞬时备份恢复”实现的方法有两个:快照和完整克隆(或象楼上所称复制)。但是从实现手法上来分析,可分为三种模型:全拷贝、半拷贝、和零拷贝。全拷贝就是完整克隆,半拷贝和零拷贝都是快照,即都是照指针。注意,这里的指针不是指文件的指针。快照是通用于SAN和NAS的一种技术。由于是照指针,速度都很快。真正区别在后续的写操作时对性能的影响。

6、区分全拷贝、半拷贝和零拷贝的关键在于是否对改动的数据块和无改动的数据块进行复制。

7、全拷贝:对改动的数据块和无改动的数据块全部进行复制,性能影响在其次,空间耗费是主要问题。典型产品EMC的TimeFinder。

8、半拷贝:需要对改动的数据块进行复制。所有Copy-On-Write技术均属此类产品。性能影响显著,达40-60%。

9、零拷贝:不对任何原数据块进行复制,改动数据块直接写入新区。因此没有性能影响,典型产品NetApp的Snapshot。

10、大多数应用环境,半拷贝和零拷贝的空间消耗远少于全拷贝;只有当相邻两个时间点之间的数据百分百全改动,空间消耗才会和全拷贝相同。

11、防范原数据丢失是RAID的任务,如果许多磁盘同时发生故障导致数据丢失,那是容灾的任务。

12、快照也有支持可读写的。

TOP

呵呵,学习啊

TOP

发新话题