概述
拯救我的代码和笔记
本次问题出现的原因主要是因为我在一个正在运行任务的Linux平台上对 LVM 分区进行了一次lvreduce
。
我想将挂载到 /home
目录上的lv卷分出一点空间给 /
,但是我直接使用了 lvreduce -L 40G /dev/mapper/vg-home
。
正常的流程应该是
umount
需要被进行动态扩展的逻辑卷卸载(unmount)- 使用
e2fsck
去检查lv是否有错误 resize2fs
去通告文件系统更改lv的大小(文件系统中的大小)lvreduce
减少lv的容量(物理设备中的大小)。需要注意的是,这里虽然是 lv(Logic Volume) 但是操作系统是将它视为一个真正存在的物理设备来看待的
导致问题的原因,主要是因为正在被使用的设备无法使用 resize2fs
去动态修改它的文件系统大小,当我使用 resize2fs
时出现了如下错误:
所以我选择关机重启,但是当我重新进入系统后,提示如下:
很明显是我上面对lv进行一个 reduce 出现了问题
解决
在上面的末尾,看到已经进不去系统了,那没办法了只有通过单用户模式(救援模式)进入系统进行操作了。
单用户模式
在机器启动时,会出现一个boot页面,在该页面按下 e
键,即可进入引导载入配置
然后我们在这个页面找到vmlinuz
这一行
更改后续的 ro
为 rw 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
根据提示来看是文件系统大小和物理设备大小不一致。
那么我们就需要先同步,知道了问题,使用 e2fsck
的 -f
选项去进行修复,第一个问题提示“Either the superblock or the partition table is likely to be corrupt! Abort?
,我们回答n
。后面的所有问题均回答 y
。这样磁盘就修复完成了。
然后使用 resize2fs -f /dev
命令去重置一下文件系统的大小,最后重启即可。
几经波折,虽然最后能够成功进入系统,但文件内容还是丢失了。