一、前言
系统稳定性一直是一个老生常谈的问题,本文主要介绍LVM快照卷的一个基本使用
二、操作方法
前置条件:只能对LVM卷进行管理,VG必须可以给快照卷分配空间
案例机器:Centos7操作系统 当前VG卷组中还有剩余空间,下图额外用了一块盘加了卷组,我更建议装系统的时候就预留一部分的空间,或者回收现有空间

创建快照卷
blkid看可以发现创建的快照卷和目标root的UUID一模一样
Centos不允许同时挂载两个UUID一模一样的目标
在/opt下有3个iso的大文件,总大小14G。但是之前只创建了10G大小的快照卷。情况1:删除快照卷容量范围内的原卷文件
这里删除了一个4.4G(<10G)的文件后df -h可以查到空间的确变小了Lvs 查看Data%的结果是0.01,后面介绍
前文介绍系统无法同时挂载两个相同UUID的文件系统,正确的方法如下
恢复快照无需挂载快照,此处只做演示。此图中发现恢复后无变化,看起来没什么用。事实上是lvm此刻不敢去影响系统的IO读写,需要重新挂载或者重启后生效。快照卷本身支持在线调整,但我们操作的是/,所以重启一下。
数据恢复,但是让人遗憾的是,快照卷,它燃尽了自己的生命。它是一次性的。
情况2:删除超过快照卷容量范围内的原卷内容(>10G)
如上图所示,这次我把所有的镜像全部删除,空间也看到被释放了,Data仍然是0.1 ,此时仍然可以恢复。
疑问点:如果此时,我再原卷中再次写入了数据或者删除会怎么样
看起来没什么变化
尝试添加一个大文件
添加了一个大文件,发现Data% 变成了69%。
解释:快照初始只存指针,旧数据物理上并未删除,当原卷再次写入的时候触发COW(写时复制),快照被迫将旧数据搬到自己的空间。之前在/opt下删了3个iso看到空间被释放了其实只是逻辑上被释放了数据还在扇区上存着,所以如果仍然在/opt下写数据,如果此次没有触碰到之前旧数据的空间地址,Data就不会增加,否则为了保证恢复,快照卷就得将那部分“隐藏”的数据移动到自己空间中,这是为了不影响原卷的正常使用。一旦放不下(如发生的变化超过了快照卷的大小或者说覆盖率大于快照卷的100%,快照去备份旧数据的时候会发现14>10,那么会立刻失效,无法恢复)

重启也不行,因快照失效所以无法被挂载使用也无法恢复了,这时只能使用lvremove遗憾移除“尸体”
所以要使用lvm快照卷需要分配好空间并且进行监控
只要不爆,记录快照后,无论后续原卷发生什么变化,恢复后都会回到最初时的状态
乱搞
最后再生成一个8G的大文件
只要没失效,现在恢复
和记录之前的状态一模一样
三、总结
AI的一个有趣例子:
ABC三人,分别表示原告、记录、被告
C向A租了一块地,B记录了当前A的状态(只记录),A表示同意并租出。如果C占地未影响A原来的位置则不影响,反之占用了A本来的地方,就会被A所抗议表示你先等会儿我把地方腾出来,这就相当于新数据写到了原来的内容地址上。于是A腾开了地方C占用了那一部分。后来C占用了更多,但A发现旧数据未搬完仓库就满了,为了不把系统搞死,B必须舍弃快照。最终快照卷被标记为Invalid,A放弃了抢救,仍由新数据无情覆盖剩下的旧数据。
工作中如何使用:
短期内做重大操作的时候(比如磁盘管理扩容删除、修改内核参数如添加DDS大内存配置、更新驱动、数据变更、系统升级如更新GCC或者Glibc,带有破坏性、容易导致系统死机或者故障)可以先建立快照保证状态回滚再动手。(操作简单,有磁盘的情况下1分钟内即可创建)快照不适合用来当备份使用,因为它只能记录某一个时间的状态并且当爆满的时候会死。其核心价值在于以最小空间和性能开销提供时间点数据保护,适用于短期备份、测试验证等场景。

4956

被折叠的 条评论
为什么被折叠?



