环境 平台:pSeries
软件版本:AIX 5L
问题 如何修正文件系统超块中毁坏的幻数?
解答 如果毁坏了文件系统的超级块,则不能访问该文件系统。下面介绍修复由毁坏的幻数引起的超级块错误的方法。
在以下情况中,假定 /home/myfs 是逻辑卷 /dev/lv02 上的 JFS 文件系统。
1. 使用以下命令卸下您猜测可能遭到毁坏的 /home/myfs 文件系统:
umount /home/myfs
2. 要确认对文件系统的毁坏,请对文件系统运行 fsck 命令。例如:
fsck -p /dev/lv02
如果是对超级块毁坏,则 fsck 命令返回以下消息之一:
fsck:不是 AIXV5 文件系统
或
不是识别的文件系统类型
3. 通过 root 用户权限,使用 od 命令显示文件系统的超级块,如下例中所示:
od -x -N 64 /dev/lv02 +0x1000
此处 -x 标志显示十六进制格式的输出,-N 标志指示系统格式化偏移参数(+)中不多于 64 个的输入字节,这指定了文件中开始文件输出的位置。以下是输出示例:
0001000 1234 0234 0000 0000 0000 4000 0000 000a
0001010 0001 8000 1000 0000 2f6c 7633 0000 6c76
0001020 3300 0000 000a 0003 0100 0000 2f28 0383
0001030 0000 0001 0000 0200 0000 2000 0000 0000
0001040
在上述输出中,请注意 0x1000(1234 0234)处毁坏的幻值。如果创建文件系统时接受了所有缺省值,则幻数应该为 0x43218765。如果覆盖了任何缺省值,则幻数应该为 0x65872143。
4. 使用 od 命令来检查第二个超级块的 magic number 是否正确。以下是示例命令及其输出:
$ od -x -N 64 /dev/lv02 +0x1f000
001f000 6587 2143 0000 0000 0000 4000 0000 000a
001f010 0001 8000 1000 0000 2f6c 7633 0000 6c76
001f020 3300 0000 000a 0003 0100 0000 2f28 0383
001f030 0000 0001 0000 0200 0000 2000 0000 0000
001f040
请注意 0x1f000 处的正确幻值。
5. 将第二个超级块复制到主超块。以下是示例命令和输出:
$ dd count=1 bs=4k skip=31 seek=1 if=/dev/lv02 of=/dev/lv02
dd: 1+0 records in.
dd: 1+0 records out.
6. 使用 fsck 命令来清除由使用第二个超块引起的不一致文件。例如:
fsck /dev/lv02 2>&1 | tee /tmp/fsck.errs