Linux LVM逻辑卷排错和故障诊断
Linux LVM逻辑卷排错和故障诊断
[重点](未解决)# 问题:6.1 中提到的 LVM 诊断过程
[答案] :
1、检查当前应用是否受损
2、当前应用是否需要停止
3、卷组是否正常
4、逻辑卷是否正常
5、pv 是否正常?是否有物理磁盘损坏
6、是否需要恢复 pv ?
7、是否需要恢复卷组的 meta data ?
[重点] (已解决)# 问题:总结恢复 vg 的过程
[答案] :
我们分成四种情况来看:
1)文件系统正常,但 lv 不正常,且 pv 无物理故障。
2)文件系统正常(superblock 没有坏),但 pv 故障(lvm label 或者 metadata 丢失)
3)文件系统不一致(superblock 损坏),但 pv 正常
4)文件系统和 pv 都不正常
注 :这里讨论的故障都是“软”故障,而不是真正的物理损坏。
[重点] (已解决)# 问题:文件系统正常,但 lv 不正常,且pv无物理故障
[答案] :
-)1、首先备份该 pv 上的文件系统(虽然 pv 不正常,但文件系统还是可以正常挂载的,最好是以 ro 方式挂载)
-)2、最好卸载 vg 和相关的文件系统。尤其是要 deactive 卷组,否则后面的 pvcreate 可能无法执行
-)3、执行 lvs 查看是那个 lv 不正常(一般也是 pv 的 metadata 出现问题才会造成 lv 不正常的)
-)4、用 pvcreate 恢复该 pv (用于恢复的 pv 就是本身)。命令是
[root@mail ~]# pvs -P
Partial mode. Incomplete volume groups will be activated read-only.
Couldn't find device with uuid 'dOt94R-RS3A-NWb6-oCjR-DI8u-BkMI-rOjKNC'.
(省略)
PV VG Fmt Attr PSize PFree
(省略)
unknown device vg_1 lvm2 a- 964.00M 884.00M // 原来是 /dev/hdb5 的,现在变成 unknown 设备了。
[root@mail ~]#
[root@mail ~]# pvcreate -ff --uuid dOt94R-RS3A-NWb6-oCjR-DI8u-BkMI-rOjKNC --restorefile /etc/lvm/backup/vg_1 /dev/hdb5 // 注意到目的 pv 就是 /dev/hdb5 本身
Couldn't find device with uuid 'dOt94R-RS3A-NWb6-oCjR-DI8u-BkMI-rOjKNC'.
Physical volume "/dev/hdb5" successfully created // 提示成功恢复
[root@mail ~]#
[root@mail ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/hda6 vg_1 lvm2 a- 964.00M 940.00M
/dev/hda7 vg_2 lvm2 a- 1.87G 808.00M
/dev/hda8 lvm2 -- 1.01G 1.01G
/dev/hdb5 vg_1 lvm2 a- 964.00M 884.00M
/dev/hdb6 vg_1 lvm2 a- 3.73G 2.03G
[root@mail ~]#
-)5、现在可以恢复卷组了
[root@mail ~]# vgcfgrestore -f /etc/lvm/backup/vg_1 vg_1
Restored volume group vg_1
[root@mail ~]#
-)6、执行 lvs 查看 lv 的情况
[root@mail ~]# vgchange -ay vg_1
4 logical volume(s) in volume group "vg_1" now active
[root@mail ~]# lvs vg_1
LV VG Attr LSize Origin Snap% Move Log Copy%
lvol0 vg_1 -wi-a- 800.00M
lvol1 vg_1 -wi-a- 800.00M
lvol2 vg_1 owi-a- 40.00M
lvol3 vg_1 mwi-a- 80.00M lvol3_mlog 80.00
lvol4 vg_1 swi-a- 40.00M lvol2 57.99
[root@mail ~]#
可以看到一切正常了,不过建议还是用 fsck 查一遍
=============================================================================================
[重点] (已解决)# 问题:如果是文件系统正常,但 pv 不正常(需要更换的情况)
[答案] :
和上面一样,但差别有3点:
-1)、 pvcreate 时目标 pv 不同。
-)2、 pvcrate 时卷组不用 deactive ,因为此时 pv 不属于该 vg
-)3、 pvcreate 用于恢复的 pv 必须是空闲的(不属于任何vg),大小必须至少等于源pv,不能小于。否则会报错
-)4、在恢复卷组后必须用
=============================================================================================
[重点] (已解决)# 问题:文件系统不正常,但 lv ,pv 正常
[答案] :
这个不关 lvm 的事,用 fsck 修复就是了。但出于 fsck 的风险性,建议在 fsck 之前用 dd 作一下整个lv的备份。
-)1、下面是 lv 的情况
[root@mail ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy%
lvol0 vg_1 -wi-a- 800.00M
lvol1 vg_1 -wi-a- 800.00M // 该 lv 必须是 Unmount 的状态,否则无法 fsck
lvol2 vg_1 owi-a- 40.00M
lvol3 vg_1 mwi-a- 80.00M lvol3_mlog 100.00
lvol4 vg_1 swi-a- 40.00M lvol2 57.99
lvol0 vg_2 owi-a- 40.00M
lvol1 vg_2 swi-a- 40.00M lvol0 0.04
lvol2 vg_2 -wi-a- 1.00G
[root@mail ~]#
-)2、用 dd 命令做 lv 级别的备份
[root@mail ~]# dd if=/dev/vg_1/lvol1 of=lvol1.iso
1638400+0 records in
1638400+0 records out
[root@mail ~]#
[root@mail ~]# ll -h lvol1.iso
-rw-r--r-- 1 root root 800M Jun 17 21:49 lvol1.iso // ISO 文件的大小也是 800MB
[root@mail ~]#
-)3、用 e2fsck 修复。在真正修复之前,先用 -n 参数观察一下。
[root@mail ~]# e2fsck -n /dev/vg_1/lvol1
e2fsck 1.35 (28-Feb-2004)
Couldn't find ext2 superblock, trying backup blocks...
Resize inode not valid. Recreate? no
test