快照技术-一个热门的数据保护技术

我来介绍一下它的的工作原理:
 
    快照的基本思想是: 抓取某一时刻点磁盘(或者卷)上的所有数据,而且完成的速度很快,就好比是相机拍照

    1 基于文件系统的快照
  文件系统管理数据的思想在于运用它的链表,B树,位图等结构,也就是Metadata元数据,以及对这些元数据的管理方式。
  磁盘的底层是扇区,文件系统首先将扇区组合成更大的逻辑块,(降低管理的规模)NTFS最大每个块是4KB,就是8个扇区,组成一个簇(块,block)。
  文件系统创建所管理的存储空间上所有簇(块)的位图文件,位图文件中的每个位代表卷上的一个簇,如果簇正在被文件使用,这个簇的位图中的对应位的值就是1,否则0.
  文件系统还保存一份文件和其对应符号的映射簇号的映射链,这个映射链本身以及簇位图本身也是文件,也要有自己的映射链,
   有个固定的入口用来让文件系统程序读入并历遍所有文件系统的元数据,称这个入口是root inode 
  写入一个新文件,
  1首先查找簇位图,找到位值为0所对应的簇号,并计算所需空间,然后分配这些簇号给这个文件。
  2 将文件实体数据写入对应的簇,
  3 然后再去”文件-簇号映射图“中更新,将新文件与其对应的簇映射关系记录下来
  4 到簇位图中将这些簇对应的位的值从0改为1,
  5 如果要删除这个文件,则直接在文件系统的簇号映射链中抹掉对应的文件簇的记录,然后在簇位图中将对应的簇的位值从1改为0
  
  以上讲的是文件系统的工作原理,就是基于这样的元数据的工作方式,才能产生“快照技术”
   
  文件系统只是根据这些映射图来对应卷上的实际数据,所以只要有了映射图,就可以按图索骥,并找到实际要的数据。
   每当要向卷或者分区写入新的文件或者更新旧的文件,文件系统便将这些更新数据写入一个新的空闲的地方去,
    然后在它的映射图中加入对应的条目,由于保存好了原来的映射图,并且有一份不能写入原卷的实体数据,
    当第一次做快照的时候,可以这么理解,就是将映射图和实体数据都冻结了,以后的IO操作都是在新的区域上开展,第一份快照并不占用空间。
    将以前的 Root inode 入口变成 一个Snapshot,建立新的Root inode,索引图拷贝一份,有新的数据写在新的空间上,并更改新的索引图。


   介绍一下比较近牛的存储商NetApp的WAFL文件系统,利用快照是很有特色的,每次做快照的时候,只将Root inode 做拷贝并保存,不保存下级链表的inode,因为WALF从来不会覆写入某个文件对应的旧块,不管是元数据还是实体数据,WAFL 统统写入到卷的空闲块上(根节点inode映射图位置恒定,每次更新会覆盖写)