购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.6 LVM快照

LVM还有一个常用功能,就是LVM快照。可以把LVM快照理解为虚拟机的快照,用于把当前状态保存下来,如果状态发生了改变,则可以使用快照区中的数据进行恢复,从而保证数据不丢失。

1.LVM快照的原理

在LVM中,要想创建快照,需要注意快照区和被快照的逻辑卷必须在同一个卷组中,因为快照区与被快照的逻辑卷有很多物理扩展是通用的。那是怎么造成这种情况的呢?

当给原始LV建立一个快照时,在快照区中只写入原始LV的“元数据”(元数据是LVM的必需数据,主要记录卷组相关数据、逻辑卷相关数据等),如图1-12所示。

图1-12 LVM快照

图1-12左图是建立快照时的情况,快照区不会真实地复制原始LV中的数据,只是记录了原始LV的元数据。这时,快照区的PE是空白的,快照区共享了原始LV中的PE。所以会看到快照区与原始LV的大小一致,内容也完全一样。

当原始LV中的数据被修改后,原始LV在数据更新之前,会先把原始数据在快照区中备份一份。如图1-12右图所示,在把A写成New A之前,先将A备份至快照区的一个PE中,然后原始LV中的数据才更新为New A。这样,不论原始LV中的数据如何变化,快照区中保存的都是建立快照时的数据。

需要注意的是,快照也是有大小限制的。如果原始LV中的数据变化量小于快照区的大小,那么快照正常生效;但是,如果原始LV中的数据变化量大于快照区的大小,那么快照马上就会失效。为了解决这个问题,提出两个建议。

● 在建立完快照之后,马上把快照区中的数据进行备份,这样就不用担心数据快照失效的问题了。但是,这样做和直接备份原始LV中的数据是没有什么区别的。

● 把快照区建立得和原始LV一样大,这样就不用考虑快照失效的问题了。

2.建立LVM快照

在建立LVM快照之前,先向原始LV中复制一些测试数据。命令如下:

建立LVM快照依然要使用lvcreate命令。命令格式如下:

在建立快照之前,先查看一下卷组scvg中的剩余空间。命令如下:

给逻辑卷/dev/scvg/disklv建立一个2GB大小的快照。命令如下:

快照建立完成,查看一下。命令如下:

在快照建立完成之后,也需要完成挂载才能正常使用。命令如下:

注意: 在挂载快照分区的时候,需要使用“-o nouuid”选项,因为快照区和原始LV的UUID是同一个,在XFS文件系统中不允许具有相同UUID的分区同时挂载。

在挂载之后,查看原始LV和快照区中的数据。命令如下:

3.利用LVM快照恢复数据

我们来测试一下如何利用LVM快照恢复数据。在当前实验中,不能直接删除原始LV(/disklvm)中的数据,然后把快照区(/snap1)中的数据复制过去,从而完成数据恢复。因为如果原始LV(/disklvm)中的数据变化量大于快照区(/snap1)的大小,那么部分数据无法完全复制到快照区(/snap1),就会导致快照失效,数据丢失。

如果原始LV中的数据发生变化,不论是数据增长,还是数据丢失,都可以通过快照区中的数据进行恢复。先向原始LV中增加数据,命令如下:

必须事先备份快照区中的数据,然后才能删除原始LV中的数据。命令如下:

在备份之后,开始卸载原始LV,并重新格式化,删除原始LV中的所有数据。命令如下:

这时,如果需要恢复原始LV中的数据,则只需要还原备份的数据。命令如下:

在这里是通过打包压缩的方式进行数据备份和恢复的,当然也可以利用其他的复制命令来进行数据备份和恢复。

对于LVM快照的思考:采用以上方法进行快照和恢复,中间需要手工备份和恢复数据,才能保证数据不丢失。既然需要手工备份,那么,为什么不直接打包备份原始LV中的数据,反而还需要创建快照?这不是多此一举吗?这样看来,只有把快照区创建得和原始LV一样大小,才不用考虑快照失效的问题,才能真正利用快照来保护数据。 kJbgXd8HE97LwFIvxhAUb3Z2ZKRdUYlK2NASgSdvtPu9qi3zl4Tnx/f0d4SzT28o

点击中间区域
呼出菜单
上一章
目录
下一章
×