📜  文件系统一致性检查器 (FSCK)

📅  最后修改于: 2022-05-13 01:56:11.530000             🧑  作者: Mango

文件系统一致性检查器 (FSCK)

文件系统不一致是操作系统中的一个主要问题。 FSCK 是采用的标准解决方案之一。

文件系统一致性检查器 (FSCK):
FSCK 是一种仍然被基于 Linux 的旧系统用于查找和修复不一致的方法。它不是一个完整的解决方案,可能仍然有指向垃圾数据的 inode。主要重点是使元数据在内部保持一致。

以下是 FSCK 为实现一致性而执行的检查:

  • 超级块检查:
    FSCK 执行健全性检查以查看文件大小是否大于分配的块数。在这种情况下,它会尝试找到可疑的超级块并使用替代副本。
  • 免费块检查:
    FSCK 还会扫描 inode 以确保 inode 中的块被标记为已分配。
  • 节点状态检查:
    FSCK 检查 inode 是否损坏。损坏的 inode 会被简单地清除。
  • Inode 链接检查:
    FSCK 计算指向 inode 的链接数,并修改 inode 计数。如果分配的 inode 没有引用它的目录或文件,FSCK 会将其移动到丢失和找到的目录。
  • 重复指针:
    FSCK 检查重复的指针。例如,如果两个 inode 有指向同一个数据块的指针,则可以删除其中一个 inode。
  • 坏块:
    坏指针只是指向超出范围的内存地址的指针。在这种情况下,FSCK 删除指针。
  • 目录检查:
    FSCK 确保目录格式正确,例如它们应该以“.”开头。和 ”..”。

FSCK的优点:

  • 它只需要很少的开销空间。

FSCK的缺点:



  • 一次又一次地扫描磁盘对于大磁盘大小来说很慢且不可行。
  • 它需要对文件系统有深入的了解和先验知识。随着文件系统的不断发展,很难跟踪每一个细微差别。

Linux 中的 fsck 命令:
Linux 中的 fsck 命令允许我们手动检查文件系统不一致。以下是该命令的示例用法。

sudo fsck /dev/sda2

上面的命令只是检查挂载在 /dev/sda2 分区上的文件系统。如果文件系统可能有一些不一致,fsck 会提示我们可能的操作。

fsck.fat 4.1 (2017-01-24) 

0x41:设置脏位。 Fs 未正确卸载并且某些数据可能已损坏:删除脏位和无操作。