《大话存储》16章数据保护与备份技术学习总结

数据保护,就是对当前位置的数据进行备份,以防止突发情况的发生造成数据的丢失带来的损失。

数据保护

文件级备份

文件级的备份是通过调用文件系统的接口数据文件的形式读出,然后将读出的文件存到另一个介质上,由于原来的介质上有文件系统管理数据,文件的存放可以不连续,而在新介质上很可能是连续的

块级备份

这里的“块”,相对于磁盘来说就是扇区(Sector),块级备份不考虑文件系统的逻辑,直接通过磁盘控制器驱动接口对磁盘扇区进行读取,并将读取到的扇区写入到新的磁盘对应的扇区。 所以速度快

缺点:其一、因为它不管你扇区上有没有数据,都会备份,所以就会备份很多僵尸扇区,我的理解就是无用功,浪费时间资源;其二 ,原来不连续的文件,备份之后还是不连续。

典型应用就是磁盘镜像,而磁盘镜像最简单的实现方式就是RAID1,这里一定要理解“镜”这个字,假想你站在镜子前,肯定是你做什么动作,镜子里就会出现什么动作。RAID1将对一块磁盘的写入,完全复制到另一块磁盘,两块磁盘内容完全相同。

高级数据保护

远程文件复制

即把需要备份的文件,通过网络传输到异地容灾站点。它可以只复制一个文件中变化过的内容,而不必整个文件都复制:增量复制

远程磁盘(卷)镜像

基于块的远程备份,与远程文件复制不同的地方在于,是把块数据备份到异地站点。又可以分为同步和异步复制:

同步复制:即数据真的复制到异地站点以后,才会上报上层IO成功消息
异步复制:写入成功即可回复成功,然后通过网络传输到异地。当然你这个响应快,但不能保证一致性。

快(块)照数据保护

无论远程镜像还是本地镜像,如果某个时刻相对镜像卷进行备份,此时要停掉主机所有的IO动作,即拆分镜像,这当然会影响应用。所以—快照就产生了。

基于文件系统的快照

文件系统管理的精髓就在于它的链表、B树以及位图等结构。也就是元数据(Metadata) 。

  1. 文件系统将多个扇区组成一个 来降低管理规模,比如NTFS最大块可以为4KB,也就是8个扇区组成一簇(Block).
  2. 文件系统会创建所有簇的位图文件,每个位对应一个簇,用0、1表示簇是否被使用。被使用了就被置为1.
  3. 文件系统保存一份文件和其对应簇号的映射链。即告诉文件存在了哪些簇号上。

————是不是可以理解文件和簇号,簇和位图之间分别有个映射表。前者用来查文件存在哪些位置,后来来查某个簇是否被占用。

写入新数据

  1. 查找簇位图,找位值为0的簇号
  2. 计算所需空间, 分配簇号给文件
  3. 将数据写入簇,再去文件——簇号映射图更新
  4. 将对应的簇映射关系记录下来,到簇位图将对应位置改为1.

删除数据

  1. 直接在簇号映射链中抹掉
  2. 簇位图对应簇改为0

    看出元数据的重要性了吧!!!

快照技术就是为了解决这种问题,其基本思想是抓取某一时间点磁盘卷上的所有数据。

  1. Copy on First Write (CoFW)
    快照中的指针始终指向原数据,更改后的数据霸占了原来数据的位置(很霸道呢~),把原来的数据挤出去了。一次读出,两次写操作。系统中将有两套元数据链,原来的元数据指向当前最新的,快照的元数据链指向历史。
  2. Redirect on First Write,(RoFW)
    快照中的指针仍指向原数据,这个就比较友好了,给更改的数据另开辟一段新的空间来存放。一次读出,一次写操作。系统也有两套元数据,一套是快照保存下来的,永远不更新,一套是源文件系统的,不断的更新。只有首次覆盖的时候,才重定向,因为重定向以后的数据块,哪怕被覆盖了,也不影响之前快照保存的数据了。

基于物理卷的快照

基于物理卷的快照比文件系统快照要简单的多。因为LUN一般在底层磁盘上是固定的,不像文件系统一样可以随机细粒度的分布。所以可以认为LUN的原数据就是磁层磁盘的起始和结束地址。这个就简单了,你不用根据一个额外的文件去找相应的存储地址了,所以在做快照的时候,需要复制的元数据也少了。

卷扇区方都是用LBA来编号的,实现快照的时候,程序首先保留一张初始LBA表,每当有新的写入请求的时候,重定向到另一个地方,并在初始的LBA表中做好记录。比如

原始LBA:卷A的10000号,映射到LBA:卷B的100号。  

此时如果来了新的写IO,有两种方式一种是Write Redirect 一种是Copy on Write

所谓Write Redirect就是将文件系统的读写请求,重定向到卷B,这样每次IO其实都会查找快照映射表,降低了性能。所以引入了Copy on Write

所谓Copy on write,就是当写请求来的时候,先把原来的扇区的数据复制一份到空闲卷,然后将新数据写入原卷。不过这种复制操作只发生在原卷某个或者快照之后从未更新过的块上面,若是某个块在快照之后更新过了,说明之前的数据已经转移走了,可以放心的覆盖。

所以Copy on Write实际上是让旧数据先占着位置,等新数据来了以后先把原来的数据复制走,再更新,而且一旦更新了一次,可以直接覆盖。

卷clone

快照是某个时刻的影子,而克隆是某时刻的实体。这个也好理解,你没见过克隆动物是克隆出来一个影子吧,克隆出来的肯定是实实在在的东西。

一般快照都是只读的,不可改写。如果某个物理卷某时刻生成一份可写的快照,就叫做这个卷某时刻的一份Clone。 然而这份Clone内容没被修改的部分是与源卷共享的,只有被更改之后的数据才是实实在在地存在另一处,所以源卷没了,Clone也就没了,这叫虚拟Clone。如果把数据复制出来,生成一个独立的卷,则就叫Split Clone,也就是可以得到实Clone。

数据备份系统的基本要件

  1. 备份对象:需要备份的备份源
  2. 备份目标:磁盘、磁带等介质
  3. 备份通路:网络
  4. 备份执行引擎:备份软件
  5. 备份策略

数据备份

完全备份

从字面上就以理解,无论你要备份的数据有多大,我都给你完完全全备份下来,这个应该安全系数比较高,当然你也得考虑实际啊,你需要的空间也大啊。

差量备份

只备份从上次完全备份以来发生变化的数据,是建立在完全备份的基础上。

增量全备份

只备份从上次备份以来文件中发生变化过的数据。不管你上次备份采用的是全备,差备还是增量备份。

分级存储

基于信息生命周期管理的思想,分级存储就是:

  1. 第一级:一线磁盘阵列
    指存储应用频繁访问数据的磁盘阵列;

  2. 第二级:二线虚拟磁带库(VTL,virtual tape library)

    专门存放那些近期不会被频繁访问的数据

  3. 带库或者光盘库
    几年甚至几十年都不访问的那种数据

参考:

https://www.jianshu.com/p/b14ece444676

《大话存储Ⅱ》