Linux ext4 文件系统损坏后的修复步骤

OpenStack 中把 volume detach 掉后,重新 attach 回来会有一定概率导致分区无法挂载。本文记录手动修复 ext4 文件系统的完整步骤,以下均以 /dev/vdb 为例。

问题现象

手动 mount 一下后会发现报错 filesystem 无法识别。表象可能是 lsblkdf 显示的磁盘大小不一致。主动指定为 ext4 后再次 mount,仍然会失败,这个时候就需要手动恢复一下 filesystem 了。

修复步骤

1. 先取消挂载

1
# umount /dev/vdb

如果失败,则修改 /etc/fstab 里的记录,注释掉挂载,然后重启 OS。

2. 用 fsck 检查磁盘

1
2
3
4
5
6
7
8
# e2fsck /dev/vdb
e2fsck 1.41.12 (17-May-2010)
Pass 1:Checking inodes, blocks, and sizes
Pass 2:Checking directory structure
Pass 3:Checking directory connectivity
Pass 4:Checking reference counts
Pass 5:Checking group summary information
ext4-1:11/131072 files (0.0% non-contiguous),27050/524128 blocks

3. 用 resize2fs 重新恢复一次磁盘 filesystem

1
2
3
4
# resize2fs /dev/vdb
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vdb to 524128 (1k) blocks.
The filesystem on /dev/vdb is now 524128 blocks long.

4. 再次 mount 回来,检查文件

1
# mount /dev/vdb /data0

总结

e2fsck 修复元数据,resize2fs 对齐块大小,最后重新挂载即可。OpenStack volume 反复 attach/detach 后遇到 mount 失败,按这个流程走一遍通常能救回来。

Notice: 正常情况下,这里会有一个基于utteranc.es的留言系统,如果看不到,可能要想想办法才能看到。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2012 - 2026 tiaobug.com All Rights Reserved.

鲁ICP备2024124237号-1