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

`e2fsck -n` + 如何知道是否需要运行 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

你使用e2fsck,所以我假设我们在谈论ext?文件系统。命令

tune2fs -l /dev/sdXX

将告诉您文件系统的明显状态(可以挂载,这是安全的)。您将获得(除其他信息外)

Filesystem state:   clean

或者其他的clean。因为grep如果匹配失败则返回 false,所以你的基本尝试可以是这样的:

tune2fs -l /dev/sdXX | grep "^Filesystem state:[ ]*clean$" || { commands; to; fix; the; filesystem; }

上述操作仅在文件系统事先检测到其不干净状态时才有效。有时您无论如何都想检查问题(这就是为什么期望的行为是每 N 次挂载一次或当经过多少天时)。如果我理解正确,您正试图通过分析 的输出fsck来了解是否应该。e2fsck -y /dev/sdXXe2fsck -n /dev/sdXX

我说不要分析输出。检查退出状态。参见man 8 e2fsck学习:

返回的退出代码e2fsck是以下条件的总和:
0- 无错误
1- 文件系统错误已更正
2- 文件系统错误已更正,应重新启动系统
4- 文件系统错误未更正
8- 操作错误
16- 使用或语法错误
32-e2fsck根据用户请求取消
128- 共享库错误

e2fsck -n /dev/sdXX如果文件系统似乎清楚;所以这是检测电流的另一种方法明显的状态,就像我们对 所做的那样tune2fs。无论如何,要检查,您需要-f选项。然后你想知道退出状态是否包括4.bash可以使用以下方法完成:

e2fsck -nf /dev/sdXX  # this is safe even if the filesystem is mounted
status=$?
[ $(( $status & 4 )) -eq 4 ] && { commands; to; fix; the; filesystem; }

快速解释:

  • $?是最后一个命令的退出状态(e2fsck在本例中)。我将其保存到单独的变量中,以便可以对其进行多次测试。在这个只有一个测试的简单示例中,这不是必需的,但总体而言是一种很好的做法。根本原因是:这些行之后$status仍包含的退出状态e2fsck并且可以重复使用,而(新的)$?与无关e2fsck
  • $(( ... ))进行 shell 算术运算
  • 其中&按位与,
  • then[ ... -eq 4 ]实际上就是test检查结果是否正确的命令4
  • 如果测试成功,{ ... }则将执行该块。

错误可能不在文件系统本身,而是在更深层次的设备中。我认为这超出了这个问题的范围,但只是为了在你需要的时候为你指明正确的方向,这些是有用的命令(注意sdX,不是sdXX):

  • smartctl -t long /dev/sdX
  • badblocks -n -b 512 /dev/sdX

在使用它们之前请先阅读它们的手册页。

答案2

首先检查它是否是日志文件系统。

“日志文件系统是一种文件系统,它通过在称为“日志”的数据结构(通常是循环日志)中记录此类更改的意图来跟踪尚未提交到文件系统主要部分的更改。如果发生系统崩溃或电源故障,此类文件系统可以更快地恢复在线状态,并且损坏的可能性较低。”

然后您可以尝试 Gparted 来检查一致性并看看该工具能为您做什么。

相关内容