导航

记一次动态修改lv导致错误记录

发布时间:9 months ago 更新时间:2 months ago
随记

概述

拯救我的代码和笔记

本次问题出现的原因主要是因为我在一个正在运行任务的Linux平台上对 LVM 分区进行了一次lvreduce

我想将挂载到 /home 目录上的lv卷分出一点空间给 /,但是我直接使用了 lvreduce -L 40G /dev/mapper/vg-home

正常的流程应该是

  1. umount 需要被进行动态扩展的逻辑卷卸载(unmount)
  2. 使用 e2fsck 去检查lv是否有错误
  3. resize2fs 去通告文件系统更改lv的大小(文件系统中的大小)
  4. lvreduce 减少lv的容量(物理设备中的大小)。需要注意的是,这里虽然是 lv(Logic Volume) 但是操作系统是将它视为一个真正存在的物理设备来看待的

导致问题的原因,主要是因为正在被使用的设备无法使用 resize2fs 去动态修改它的文件系统大小,当我使用 resize2fs 时出现了如下错误:

alt text

所以我选择关机重启,但是当我重新进入系统后,提示如下:

alt text

很明显是我上面对lv进行一个 reduce 出现了问题

解决

在上面的末尾,看到已经进不去系统了,那没办法了只有通过单用户模式(救援模式)进入系统进行操作了。

单用户模式

在机器启动时,会出现一个boot页面,在该页面按下 e 键,即可进入引导载入配置

然后我们在这个页面找到vmlinuz这一行

alt text

更改后续的 rorw init=/bin/bash

修复磁盘

进去后使用 resize2fs 命令,调整fs的大小。出现提示Please run ‘e2fsck -f /dev/nvme0n1p7’ first。让我先试用 e2fsck 去修复一下磁盘。

使用 e2fsck /dev,出现提示 The filesystem size (according to the superblock) is 32907264 blocks The physical size of the device is 22641408 blocks Either the superblock or the partition table is likely to be corrupt! Abort? yes

alt text

根据提示来看是文件系统大小和物理设备大小不一致。

那么我们就需要先同步,知道了问题,使用 e2fsck-f 选项去进行修复,第一个问题提示“Either the superblock or the partition table is likely to be corrupt! Abort?,我们回答n。后面的所有问题均回答 y。这样磁盘就修复完成了。

然后使用 resize2fs -f /dev 命令去重置一下文件系统的大小,最后重启即可。

几经波折,虽然最后能够成功进入系统,但文件内容还是丢失了。

引用

单用户模式

e2fsck

修改lv大小