如何知道是否需要运行 e2fsck 来修复损坏的块?

如何知道是否需要运行 e2fsck 来修复损坏的块?

/deb/sdc 我们想要检查每台/dev/sdgRed Hat Linux 机器上的磁盘文件系统。

目标是找到需要的磁盘是什么e2fsck(等等e2fsck -y /dev/sdb

根据手册页

-n
以只读方式打开文件系统,并假设所有问题的答案均​​为“否”。允许以非交互方式使用。此选项不能与或选项e2fsck同时指定。-p-y

当我们运行命令时(示例)

 e2fsck -n /dev/sdXX

我们得到

e2fsck 1.42.9 (28-Dec-2013)
Warning!  /dev/sdc is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/sdc: clean, 94/1310720 files, 156685/5242880 blocks

那么我们需要从e2fsck -n输出中捕获什么,这需要我们运行e2fsck(无需-n)?

e2fsck 进程

init 1
umount /dev/sdXX
e2fsck -y /dev/sdXX  # (or e2fsck -C /dev/sdXX for full details) 
init 3

答案1

RHEL 启动脚本将fsck在每次启动时执行。为此目的重新启动与切换到单用户模式的过程具有相同的作用。

fsck如果启动因等待输入而挂起,则表明文件系统日志不干净。它会告诉您不干净,并提示您进行任何修复。

你可以强制检查touch /forcefsck 并重新启动。

编辑:您必须 umount 才能正确执行 fsck,如e2fsck手册页中所述。当您想要修复文件系统时,您还需要省略 -n“no”选项。

请注意,一般来说,在已挂载的文件系统上运行 e2fsck 是不安全的。唯一的例外是指定了 -n 选项,而未指定 -c、-l 或 -L 选项。但是,即使这样做是安全的,如果文件系统已挂载,e2fsck 打印的结果也是无效的。如果 e2fsck 询问您是否应该检查已挂载的文件系统,唯一正确的答案是“否”。

您无需重新启动即可执行此操作,这很方便。如果您的服务停机对您来说是个问题,请在修复此存储系统时将数据的副本放在不同的存储系统上。也称为制定业务连续性计划。

要在测试系统上查看真正不干净的 fsck:

  1. 备份您关心的任何数据。
  2. 使用以下方式启动写入工作负载(例如存储基准测试)fio
  3. 严重破坏系统。在 Linux 上,尝试echo 'c' > /proc/sysrq-trigger

相关内容