文件系统一致性检查器 (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 未正确卸载并且某些数据可能已损坏:删除脏位和无操作。