LVM是 Logical Volume Manager(逻辑卷管理)的简写。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
在实际使用中,可能因LVM信息或数据区域丢失,导致文件系统启动、初始化、识别等过程失败,造成文件系统不可用,
本文分享了LV信息被误删除情况下的处理办法。
一、 故障描述
lv(logical volume )信息可能因管理员误操作,导致被误删除了,此时数据依旧完整。
二、 测试方式
初始化环境,使用一块盘创建了一个 vg_cs 的vg组,和一个lv_cs 的lvm卷,并挂载到/cs 下,创建了一个testfile的临时文件,其中内容为1到10万的连续数字。
三、 故障模拟
此时我们手工删除lv _cs ,以模拟误删除场景。
首先还是直接使用vgcfgrestore来恢复尝试恢复:
提示中,显示每个逻辑卷块设备的seqno序号增加了1,与之前不一致了。
使用vgchange来激活vg _cs 里的lv,提示没有可以激活的对象。同时,lvs信息里也没有lv _cs 。说明目前的恢复是失败的。
从前面的seqno序号提示错,去检查下lvm最后一次备份信息:
从文件的description部分,文件在执行lvremove后被创建,所以这个最新的,存在在/ etc/lvm/backup 目录下的文件,里面已经没有lv_ cs 的卷信息了!
从这里不难发现,每次我们对lvm操作,操作系统都会自动的做一次备份,这在归档目录,也就是/ etc/lvm/archive 中,可以确认的到:
关于archive和backup的保留策略,可以在lvm.conf 中配置,例如:
到这里已经很明确了,我们要利用lvremove之前的归档文件去恢复,所以即archive目录下的最后一个文件进行恢复:
激活lv后,可看到数据恢复了。这里因为数据本身没有改动,所以也没做文件系统的检查或恢复了。不过建议还是做一下比较好。
五、总结
/ etc/lvm/ back up 文件始终是最新的lvm备份文件,每次lvm相关的操作都会将这个文件移到 archive 下,并再生成最新的backup文件。
所以,在之前的场景下,磁盘本身出现故障,lvm信息并未改动,则使用backup文件做恢复(直接使用vg cfgrestore 命令时,默认使用该文件);如果lvm做了操作后,做恢复,则需要用archive下的历史文件进行恢复,需注意!