一、背景介绍

随虚拟化的普及,越来越多的企业在生产环境都是用虚拟化产品来整合服务器资源提高设备使用率。而快照作为一种可以保存当前时刻的系统状态以供随时切换的特性被越来越多的提及。LVM2逻辑卷也是一种支持快照的文件系统,本章就针对快照和LVM2逻辑卷快照功能的实现来做详细说明。

二、快照技术原理

首先需要说明,是否支持快照功能取决于文件系统本身,而文件系统在创建时就已将磁盘分为数据区和元数据区,元数据区保存着数据的属性信息(如:大小、inode号、atime等,但不包含文件名,文件名是存放在目录中),这些属性信息是对数据信息的描述。

我们知道用户在访问数据时,是先去元数据区找到要查找数据的inode号,根据inode号再去数据区找到要查找的数据。而创建快照的速度之所以这么快,就是因为创建快照其实是将元数据在同一个文件系统内的其他地方保存了一份,并启用了一个类似监控的功能监控着原元数据文件的变化

LVM2逻辑卷之3——快照功能介绍_LVM

当用户做完快照后再修改数据区内的数据时,他会将被修改的数据块复制一份存放到快照区(此处以数据块1为例),其他没有更改的数据块不会复制到快照区,这也就是为什么快照文件开始很小,最终会增长到和原文件一样的大小

LVM2逻辑卷之3——快照功能介绍_LVM_02

正常情况下用户访问时数据的查找方式为通过元数据区中的inode号查找数据区文件位置(此处假设要访问数据位于1、2、3、4数据块):

LVM2逻辑卷之3——快照功能介绍_LVM_03

而访问快照时,数据块1的使用的是快照区中,其余数据块还是使用数据区中的,所以此时看到的内容就是修改前的内容,由于快照区保留着一份元数据,相当于给数据区中的文件增加了一个新的访问入口,类似于文件系统的硬链接,这也就是为什么快照要和创建快照的目标对象在同一个文件系统内,对于LVM2来说即创建出的快照要和LV属于同一个VG的原因

LVM2逻辑卷之3——快照功能介绍_LVM_04

三、操作步骤

1.先将LV挂载到/lvm目录,查看此时/dev/myvg/lvm设备文件内的内容

LVM2逻辑卷之3——快照功能介绍_快照_05

2.创建一个PV并加入VG,用作存放快照LV的空间,确认新创建的LV空间与原LV同属于一个VG

LVM2逻辑卷之3——快照功能介绍_LVM_06

3.为原LV创建一个大小为3G的快照,挂在后看到快照中的内容与原LV中的内容一致

LVM2逻辑卷之3——快照功能介绍_LVM_07

4.此时删除原LV中的a.txt文件,再到快照中去查看,发现a.txt文件依然存在,至此操作完成

LVM2逻辑卷之3——快照功能介绍_快照_08