PC LVM修复(2)

 

图 1. Linux LVM 架构图

 

磁盘损坏
  对于普通 PC 而言,多块磁盘的主要目的是扩充存储容量,一般不会采用 RAID 方案来应对磁盘损坏。一旦发生磁盘损坏的情况,用户在承受损坏硬盘上面的所有数据丢失之痛的时候,最不愿看到的就是剩下的磁盘也没法访问的情况。好在 LVM 的开发者充分考虑了这一点,为 LVM 提供了恢复机制。

  当 root 分区不是创建在 LVM 上时,情况就如同普通的磁盘损坏一样,只需要更换磁盘,重装系统,然后将原来的 LVM 分区重新挂载就可以,和挂载其它类型的文件系统并没有什么区别,在此不作赘述。当 root 分区创建在 LVM 上时,我们还需要分两种情况来处理—— root 分区所在的磁盘损坏和非 root 分区所在的磁盘损坏。

  非 root 分区磁盘损坏
  用 Disk-A 和 Disk-B 创建 System VG,root 分区和交换分区存在于 Disk-A 上,Disk-A 和 Disk-B 上创建了多个 LV 用于存放用户数据。当用户在某次重起后,发现系统无法起动,经检查发现 Disk-B 损坏,用户希望能够启动系统,恢复 Disk-A 上的数据。
  移除损坏磁盘 Disk-B 后,系统无法启动,系统输出如下:

清单 18. 磁盘损坏后状态

   
   
… .. Reading all physical volumes. This may take a while … Couldn' t find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy ' . Couldn' t find all physical volumes for volume group system. Couldn' t find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy' . Couldn' t find all physical volumes for volume group system. Volume group “system” not found Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy' . Couldn't find all physical volumes for volume group system. Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy' . Couldn't find all physical volumes for volume group system. .not found -- exiting to / bin / sh

分析输出可知,该问题是磁盘 Disk-B 损坏导致的。究其原因,是 root 分区创建于 LVM 上,当硬盘丢失时,导致 LVM 的发生不一致,导致 root 分区无法被正常读取,进而系统无法正常启动。如果能够恢复 LVM 的一致性,恢复 root 分区的正常读取,就可以恢复 Disk-A 上的数据。

  由于此时系统已经不能正常启动,需要用光盘启动进入到紧急恢复模式,用 root 用户登录:

清单 19. 紧急恢复登陆

  
  
Rescue Login: root Rescue:~ #

  执行如下命令检查当前状态:

清单 20. 检查磁盘及文件系统状况

   
   
Rescue:~ # lvscan Reading all physical volumes. This may take a while … Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. Couldn't find all physical volumes for volume group system. Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. Couldn't find all physical volumes for volume group system. Volume group “system” not found Rescue:~ # pvscan Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. PV / dev / sda2 VG system lvm2 [ 7.93 GB / 0 free] PV unknown VG system lvm2 [ 2.00 GB / 2.00 GB free] Total: 2 [ 9.92 GB] / in use: 2 [ 9.92 GB] / in no VG: 0 [ 0 ]

由上面输出可以知道,由于磁盘缺失,系统无法正确识别 system 卷组,但是系统可以正确识别出硬盘,也可以检测到硬盘的缺失。当系统挂载的是普通文件系统的时候,我们可以通过紧急恢复模式下直接挂载文件系统的方法来进行数据恢复,然而这种方法在 LVM 下行不通,因为所有的逻辑卷都是 LVM 管理的,当卷组不能被正确识别的时候,所有的 LV 也不能被处理。因此我们要做的就是删除卷组中的缺失物理盘,恢复卷组的一致性。

  LVM 提供 vgreduce 来执行从卷组中删除物理卷的操作,并且提供”— removemissing”来删除卷组中所有缺失的物理卷。

清单 21. 删除缺失的物理卷

   
   
Rescue:~ # vgreduce – removemissing system Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. Couldn't find all physical volumes for volume group system. Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. Couldn't find all physical volumes for volume group system. Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. Couldn't find device with uuid 'wWnmiu - IdIw - K1P6 - u10C - A4j1 - LQSZ - c08RDy'. Wrote out consistent volume group system Rescue:~ # vgscan Reading all physical volumes. This may take a while … Found volume group “system” using metadata type lvm2 Rescue:~ # pvscan PV / dev / sda2 VG system lvm2 [ 7.93 GB / 0 free] Total: 1 [ 7.93 GB] / in use: 1 [ 7.93 GB] / in no VG: 0 [ 0 ]

通过删除缺失的硬盘,此时系统已经可以正确识别卷组。但是经历过如此劫难,LV 还需要额外的步骤才能正常工作。执行 lvscan,我们可以发现 root 和 swap 两个逻辑卷都处于 inactive 状态,需要手动执行 lvchange 命令激活,才能使它正常工作。

清单 22. 激活修复后的卷

   
   
Rescue:~ # lvscan inactive ' / dev / system / root'[ 7.38 GB] inherit inactive ' / dev / system / swap'[ 560.00 MB] inherit Rescue:~ # lvchange – ay /dev/system ACTIVE ' / dev / system / root'[ 7.38 GB] inherit ACTIVE ' / dev / system / swap'[ 560.00 MB] inherit

到此,大功告成,重起,系统启动,除了损坏的磁盘已经一去不复返以外,系统又恢复正常了。

  root 分区磁盘损坏

  当 root 分区磁盘发生损坏的时候,唯一的选择只能是另外找一台机器,把没有损坏的磁盘装上去。开机后执行 `fdisk – l`,输出显示硬盘不包含有效分区表,不能够正确读取。执行 LVM 的相关检查,可以注意到错误信息与非 root 分区输出的一致。执行非 root 分区磁盘损坏的操作步骤,就可以让卷组恢复正常。将恢复后的卷组挂载后,就可以执行正常读写了。

总结
  对于运行在普通 PC 上的 LVM,通常缺少有计划的备份和硬件冗余来应对灾难,因而在灾难发生时,往往需要承受严重的数据损失。本文介绍了 LVM 上可能发生的灾难,结合实例演示了如何进行灾难恢复,在 LVM 遇到灾难时,可以尽可能恢复数据,减少损失。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值