为什么 fsck.vfat 会抛出“包含一个空闲簇 (8)。假设 EOF。”?

为什么 fsck.vfat 会抛出“包含一个空闲簇 (8)。假设 EOF。”?

我遇到了一个奇怪的边缘情况,安装的 VeraCrypt 卷在 Tails 上安装并变为只读。

运行后fsck.vfat发现名为“Monero”的文件夹出现集群错误。

尝试调试错误…你知道发生了什么吗?

谢谢您的帮助!

$ sudo fsck.vfat -r /dev/mapper/veracrypt1
[sudo] password for amnesia:
fsck.fat 4.1 (2017-01-24)
0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action
? 1
/Monero/Donations/Donations
  Contains a free cluster (8). Assuming EOF.
/Monero/Donations/Donations
  File size is 4448713 bytes, cluster chain length is 0 bytes.
  Truncating file to 0 bytes.
Reclaimed 4889 unused clusters (5006336 bytes).
Perform changes ? (y/n) n
/dev/mapper/veracrypt1: 22 files, 104/50728 clusters

答案1

在 VFAT 文件系统上,有一个名为 FAT(文件分配表)的表,该表指示磁盘的每个群集(多个块的组):

  • 集群是否空闲;
  • 当该簇属于某个文件时,该文件就是下一个簇。

这里,您有一个文件,其大小声明为 4448713 字节,根据其所属目录的信息,其第一个簇是第 8 个簇。但是,FAT 指示簇 8 是空闲的,这不一致。然后fsck.vfat建议您将文件截断为 0 大小,以使文件系统再次一致。

如果您在 Windows 正在闪存驱动器上写入某些内容时物理弹出闪存驱动器,则通常会出现这种行为:它有时间更新目录,但没有时间更新 FAT。

相关内容