OpenStack 中把 volume detach 掉后,重新 attach 回来会有一定概率导致分区无法挂载。本文记录手动修复 ext4 文件系统的完整步骤,以下均以 /dev/vdb 为例。
问题现象
手动 mount 一下后会发现报错 filesystem 无法识别。表象可能是 lsblk 和 df 显示的磁盘大小不一致。主动指定为 ext4 后再次 mount,仍然会失败,这个时候就需要手动恢复一下 filesystem 了。
修复步骤
1. 先取消挂载
1 | # umount /dev/vdb |
如果失败,则修改 /etc/fstab 里的记录,注释掉挂载,然后重启 OS。
2. 用 fsck 检查磁盘
1 | # e2fsck /dev/vdb |
3. 用 resize2fs 重新恢复一次磁盘 filesystem
1 | # resize2fs /dev/vdb |
4. 再次 mount 回来,检查文件
1 | # mount /dev/vdb /data0 |
总结
e2fsck 修复元数据,resize2fs 对齐块大小,最后重新挂载即可。OpenStack volume 反复 attach/detach 后遇到 mount 失败,按这个流程走一遍通常能救回来。