好了;基于上次写博客的动力与平台对本用户的小小激励,我们胜不骄败不垒,继续上次没写完的落下的功能‘逻辑卷上的快照功能’接着整理,我们共同学习共同进步(用我们老师的话说“老司机要开车了,请扶稳坐好”)。

那什么是逻辑卷的快照?

简单讲如果想在逻辑卷里做一些文件批量处理,临时改文件,删除文件,备份,等操作,但又不想中止系统,改变数据这时候该怎么办呢?哎这个时候我们就用快照来解决。

1、快照是通过把文件系统的改变记录到一个快照分区,而不是对这个分区做镜像。因此当你创建一个快照分区时,你不需要使用和你正创建快照的分区一样大小的分区, 而是在做快照过程中需要改变的大小。当然这取决于有多少数据正在写入分区和你希望保留逻辑卷快照多长时间。你保留的时间越长在文件系统的改变就越多,更多的快照分区就会被填充改变的信息,在分区上的改变率越高,快照的平均生命期越短.如果一个逻辑卷系统的分区改变量超过了快照的大小,那么快照就会被释放。

2、当创建快照的时候,仅拷贝原始逻辑卷里数据的元数据(注意;这里备份的是数据的元数据)。并不会有数据的物理拷贝,因此快照的创建几乎是实时的。当原始卷上有写操作时,快照跟踪原始卷块的改变,此时原始卷上将要改变的数据在改变之前被拷贝到快照的空间里。因此这个原理的实现叫做写时复制(CoW)。

3、使用CoW时,快照大小并不需要和原始卷一样大,其大小只需考虑两个方面:从快照创建到释放的这段时间内数据块 的改变量有多大,数据更新的频率。一旦快照的空间记录满了原始卷数据块的改变的信息,那么这个快照就无效了。我们上面说过了!!

注意:在写操作写入块之前,CoW将原始数据移动到快照空间里,这样就保证了所有的数据在快照创建时候保持一致 性,而对于快照的读操作,如果是读取的数据块是没有修改过的,那么就会将读操作直接重定向到原始卷上,如果是读取已经修改过的数据快,那么就读取拷贝到快照上的数据快。

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝,副本(此快照非彼快照)

快照里的数据只有在它们和原来的逻辑卷数据不同时才会消耗空间(快照权限最好为只读)  

   1、快照区与原逻辑卷系统是共用很多PE区块的,快照区与被快照的逻辑卷必须在同一个VG组上

     因此系统恢复的时候文件的数量不能高于快照区的实际容量,高于就报错。

   2、在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些

     空间(快照空间可以扩)。

   3、当原来的逻辑卷中数据有所改变时,会将旧的数据复制到快照中,这个步骤是自动的。

   4、快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据。

    (逻辑卷的原始数据被保存在快照中,如果想恢复直接复制过去就行)。

   5、只针对已有逻辑卷分区有效,也不能在一个非逻辑卷文件系统上使用。

   6、删除逻辑卷则在该逻辑卷上创建的所有快照也会被全部删除(记得备份)。

   7、建立快照的卷大小只需要原始逻辑卷的15%~20%就够了。也可以使用lvextend放大快照。

再来一遍;看图

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享。

       

       

左图为最初建立系统快照区的状况,逻辑卷会预留一个区域 (左图的左侧三个PE 区块) 作为数据存放处。此时快照区内并没有任何数据,而快照区与系统区共享所有的PE 数据, 因此你会看到快照区的内容与文件系统是一模一样的。等到系统运作一阵子后,假设A 区域的数据被更动了 (上面右图所示),则更动前系统会将该区域的数据移动到快照区,所以在右图的快照区被占用了一块PE 成为A,而其他B 到I 的区块则还是与文件系统共享。

实验平台:Windows+VMware 12

Linux:Centos6.8

首先,如果我们要做快照,就必须先有逻辑卷存在(这里面考虑到先有鸡还是先有蛋的问题...)

快照不能单独存在,必须依附于逻辑卷,所以我们先创建逻辑卷

创建逻辑卷;分五步走(之前的我删除了,现在我重新做下)

创建物理卷

[root@6 ~]# pvcreate /dev/sd{b1,c}

创建卷组

[root@6 ~]# vgcreate vg0 /dev/sd{b1,c}

wKiom1fF2uCybUSzAAAct5AQi_k781.png

创建逻辑卷

[root@6 ~]# lvcreate -n lv0 -L +10G vg0

格式化逻辑卷为ext4系统

[root@6 ~]# mkfs.ext4 /dev/vg0/lv0

挂载逻辑卷

[root@6 ~]# mount  /dev/vg0/lv0 /mnt/lv0/

然后就可以基于逻辑卷创建快照了(挂载临时生效,如永久生效写配置文件fstab)

创建快照:

[root@6 ~]# lvcreate -L +10G -s -n lv0-snapshot -p r /dev/vg0/lv0 

1、此命令的意思是,基于逻辑卷lv0自身创建一个大小为10G的快照 -s 创建快照。-L指定空间大小,

  -n指定快照名,-p指定权限为只读,后面dev路径是指定从谁那里获取空间。

2、快照创建成功了,并且活动状态

3、是卷组和逻辑卷的快照所对应的一些信息。

挂载快照

挂载快照不需要格式化,直接挂载就可以,而且快照可以创建多个。

查看快照里的文件信息

注意:在这个位置有很多人搞混快照原理,

我们之前说过由于快照区与原本的卷区共用很多PE的区块的,如果你在快照区看到文件请不要惊讶,

只是快照把这个指针指向了源卷区空间文件上而已,实际看的还是源卷区文件,因为你现在没有改文件啊,所以他两是共享存在!!!

测试,快照区和源卷区文件测试

我在修改f1文件之前快照已经自动把f1文件备份到快照里了,所以你看到的还是没有修改过的f1原始文件。

对快照里的资料进行打包备份,准备还原

[root@6 snap]# tar cjf /tmp/lvm.tar.bz2 *

卸载移除

[root@6 ~]# umount /mnt/snap/

卸载并格式化文件系统

[root@6 ~]# umount /mnt/lv0

[root@6 ~]# mkfs.ext4 /dev/vg0/lv0

挂载解压恢复数据

[root@6 ~]# mount /dev/vg0/lv0 /mnt/lv0/

[root@6 ~]# tar xjf /tmp/lvm.tar.bz2 -C /mnt/lv0/

[root@6 ~]# ll /mnt/lv0/

删除快照

删除快照特别容易,先取消挂载快照umount /mnt/snap

移除快照系统

[root@6 ~]# lvremove /dev/vg0/lv0-snapshot

到此,实验结束,感谢浏览。

注意:如果想彻底删除快照功能,就把逻辑卷按照安装的反方向挨个删除,这样快照也就不复存在了。

但是要注意备份哦!!!