Linux扩容失败,启动报错的解决方法
我之前写过一篇Linux如何扩展根目录。这一篇,我想在原来扩展的目录基础之上,重新扩容。
由于Linux主分区只支持4个分区,而我已经使用了3个。我想能不能把扩展的/dev/sda3
先删除,然后重新添加一个更大一点的/dev/sda3
分区。
操作如下
1 | fdisk /dev/sda |
我这么一顿操作之后,只看到了fdisk -l
下,我的分区容量变了,但是pvcreate
以及vgextend
命令都不奏效。我想着重启一下看看,谁知道系统进不去了,只能进入紧急模式,紧急模式下报错
buffer io error on dev dm-2, logical block XXXXX, async page read
我想被我给搞砸了,已经扩展的正在投入使用中的分区,不可以随便删除,更不能删了之后,随意指定大小。好在我还有一个备份版本,我打开备份版本,记录下原来/dev/sda3
的扇区起始位置,以及扇区结束位置。
那怎么才能修复这个问题呢?我在网上找到一个方法。
由于我的分区格式为ext4,所以要使用命令fsck.ex4来修复出错的目录分区。我的出错的目录分区是我的根目录分区/dev/mapping/VolGroup_root
,执行命令
1 | fsck.ex4 -y /dev/mapping/VolGroup_root |
-y
参数就是用来修复磁盘的参数,但问题是它还是报了Error。正在我不知道怎么办的时候,我尝试着执行exit
退出命令,直到我完全退出系统,重启系统后,我发现,我没有再次进入紧急模式,而是另一种类似于安全模式的模式。
这个模式下,我可以正常使用一些常用的命令,比如fdisk
。于是我想试试恢复到之前的扇区大小,再次执行fdisk
命令
1 | fdisk /dev/sda |
重启,看到有一行报错,心想估计不行,没想到重启后竟然进入了正常登录页。整个过程中唯一可以庆幸的是我还有一份备份,可以让我查看原扩展分区的扇区位置大小,如果没有记录下原扇区位置大小,我想我很难恢复回去。估计每次都只能进入安全模式了。
暂时没有找到更好的方法,网上也没找到类似于和我一样的情况,这也是我个人的突然奇想吧。
总结
已存在的扩展分区还是不要随意删除的好,如果要删除也不应该先从fdisk
中直接修改大小。估计要先按照Linux扩展目录的步骤,倒着来,先解除扩展绑定,再修改大小。反正我没再试过,我的做法是创建了一个新的分区/dev/sda4
来扩展,反正4个主分区用光算数,总比我进不了系统的好。