暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

处理Linux磁盘逻辑卷丢失

原创 逆风飞翔 2023-02-19
4837


服务器异常断电,重启服务器之后,开机自启动的服务全部都无法启动,最后发现,服务所在的磁盘丢失,逻辑卷也不存在。很诡异的一个问题,目前还未找到逻辑卷丢失的原因。先把解决方法记录下。

现象:
lvm信息看不到或者无法使用
1)刚创建完vg,无法挂载;
2)lv是挂载且正在使用的场景(/dev目录下能看),但pvs、vgs、lvs都看不到相关信息,当遇到主机故障、系统重启等场景,会没有办法挂载使用

我的情况是第二种

解决办法如下:
1、尝试重启Linux系统,看是否能看到vg pv lv信息,能否挂载使用
也不必担心重启可能会导致问题更加严重,如果不重启,无法恢复lvm信息,因为pv、vg、lv在/dev/目录下会存在一部分,重启后才能完全消失
2、重启后不能恢复,按照如下步骤处理
2.1、执行以下命令查看lvm配置文件备份内容:
more /etc/lvm/backup/datavg
2.2、执行以下命令进行恢复(使用原来的PV UUID来创建PV,并使用lvm配置备份文件来恢复信息):
pvcreate /dev/sdb -u 【physical_volums中pv0中的id,而且是丢失的逻辑卷(盘)的】 --restorefile /etc/lvm/backup/datavg
2.3、恢复datavg的vg信息:vgcfgrestore datavg
注意:执行vgcfgrestore恢复vg信息后不能立即使用,执行lvdisplay显示lv信息,会处于NOT available状态,需要执行vgchange -ay激活vg
2.4、激活之前先检查vg、pv、lv信息是否都已恢复:vgs && pvs && lvs
2.5、如果已经都恢复了,进行激活:vgchange -ay datavg
2.6、挂载使用:mount /dev/datavg/lv_app /app

最后启动服务,都正常了

拓展小知识:
1、Linux的LVM会存储用户对PV/VG/LV的每一步操作,并自动把当前的VG的信息备份到一个文件里面,该文件为/etc/lvm/backup/VG名
2、该文件内记录的内容跟vgdisplay/pvdisplay/lvdisplay输出的信息一致,里面包含关于恢复VG信息至关重要的PVUUID


问题现象
系统重启后,发现LVM中的一个VG丢失
原因分析
1、一般LVM的VG丢失都是由于突然断电或者更换了操作系统等原因引起。尝试执行vgscan命令扫描卷组,无果。尝试通过vgcfgrestore –f /etc/lvm/backup/data data 命令恢复VG卷组,提示以下错误。
Cannot restore Volume Group data with 1 PVs marked as missing.
Restore failed.
2、查看/etc/lvm/backup/data文件中PV0的ID号,与pvdisplay /dev/emcpowera命令中显示的UUID号不一致,初步判断是因为系统重启后,/dev/emcpowera的UUID号发生变化了。导致VG无法找到对应的物理卷。
解决方法
为了防止数据丢失或破坏,首先对/dev/emcpowera设备的数据进行备份。如下所示。
[root@MCBL043 backup]# dd if=/dev/emcpowera of=/data/01/emcpowera.img
209715200+0 records in
209715200+0 records out
107374182400 bytes (107 GB) copied, 455.871 s, 236 MB/s
执行以下命令重新修正/dev/emcpowera的UUID号。
[root@MCBL043 backup]# pvcreate -u blfaxf-3CER-4r4l-MS32-v0aN-s3Ta-DH08ZV(此内容为/etc/lvm/backup/data/文件中PV的ID号) /dev/emcpowera --restorefile /etc/lvm/backup/data
Physical volume "/dev/emcpowera" successfully created
恢复卷组信息。
[root@MCBL043 backup]# vgcfgrestore -f /etc/lvm/backup/data data
Restored volume group data
执行PVS,VGS查看卷组和物理卷信息,发现卷组信息已经找回。

# pvcreate /dev/sdb -u X4xYDe-VSiw-Gzh3-Ih78-dC08-xBKF-tGWc5s --restorefile /etc/lvm/backup/datavg
// 使用原来的PV UUID来创建PV,并使用自动备份的文件来恢复信息
# vgcfgrestore datavg // 恢复datavg的vg信息
# vgs && pvs && lvs
————————————————
可以看到,执行完以上命令之后,PV及VG/LV都恢复回来了。现在来验证一下文件是不是都还在。
vgchange –ay datavg // 激活该vg

挂载上该LV之后,再查看里面的文件信息,发现跟之前的完全一样,验证成功。
通过该案例,可以了解到,Linux对于LVM的操作是提供了一些灾难恢复的选项的,而通常情况下我们对PV/VG/LV的操作,除了格式化LV外,基本上都不会破坏实际存储的数据,只是对LVM的元数据进行操作。而此例实质也就是恢复了LVM的元数据而已。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论