为什么小型 NTFS 分区的可用空间不会随着分区大小的增加而可预测地增加?

为什么小型 NTFS 分区的可用空间不会随着分区大小的增加而可预测地增加?

我一直在使用 Truecrypt 创建小型 NTFS 分区(<16 MiB),我发现在 12 MiB 左右时,可用空间量不但没有增加,反而减少了。似乎 NTFS 文件系统正在使用某些东西,但是什么呢?

NTFS

Total |  File    | Free
 4 MB |  3.74 MB |  1.01 MB
 8 MB |  7.74 MB |  4.01 MB
 9 MB |  8.74 MB |  4.95 MB
12 MB | 11.74 MB |  1.95 MB
15 MB | 14.74 MB |  4.95 MB
16 MB | 15.74 MB |  5.95 MB
17 MB | 16.74 MB |  6.95 MB
32 MB | 31.74 MB | 21.9  MB
  • 总计 - 我的分区的大小
  • 文件 - 安装时分区的大小(Truecrypt 开销?)
  • 免费 - 可供使用的免费空间

在 12 MiB 标记处,可用空间量从 4.95 MiB 下降到 1.95 MiB。这很奇怪,而且违反直觉。为什么?

编辑:所有测试的簇大小均为 512 KB。

答案1

NTFS 使用根文件夹中的一些特殊文件和文件夹来存储元数据。您可以找到它们的列表这里。如果分区大小太小,其中一些可能不可用,而对于那些存在的,它们的大小可能不会根据分区大小线性缩放,或者大小是固定的

例如,$UpCase存储不区分大小写的文件名查找的大写字符列表,并且无论分区大小如何,它的大小始终相同,因为 Unicode 中的字符数是固定的(对于特定的 Unicode 版本)。$MFT主文件表这是 NTFS 中最重要的东西,对于不大于 32MB 的分区,其大小默认始终为 256KB。$MFT但如果分区中的文件太多,则以后可能会增加大小

这些文件是隐藏的,所以你需要一些特殊的取证工具,例如ntfstool进行分析。无论如何,我已经创建了像你这样的分区,并使用威兹树展示你所看到的东西

4-8-9-12-15-16-17-32MB NTFS 分区

如您所见,对于 4-8-9-12-15-16-17-32MB NTFS 分区,所有前 10 个文件的大小始终相同,除了$Bitmap(因为它标记了分区中的空闲簇,簇的数量与分区大小成比例)。在所有情况下,它们的总大小约为 2.4MB。但是,文件夹中$Extend\$RmMetadata\$TxfLog有几个特殊标记,存在明显差异:

  • $TxfLog对于 4MB 分区,没有事务型 NTFS因为剩余空间太小,无法使用
  • 当分区大小增加到 8 或 9MB 时,$TxfLog.blf会出现一个小的分区。因此,可用空间在 8MB 时会略有减少
  • 当分区大小为 12MB 或更大时,将出现 2 个 TxfLog 容器文件。可用空间在 12MB 时突然减少,但此后它始终线性增加至 32MB,因为两个TxfLogContainer*文件的大小相同

加密分区中的大小并不完全相同,但行为是相同的

4 MB  |  3.74 MB | 1.01 MB ← No $TxfLog
8 MB  |  7.74 MB | 4.01 MB ← $TxfLog.blf
9 MB  |  8.74 MB | 4.95 MB
12 MB | 11.74 MB | 1.95 MB ← TxfLogContainer00000000000000000001/00000000000000000002
15 MB | 14.74 MB | 4.95 MB
16 MB | 15.74 MB | 5.95 MB
17 MB | 16.74 MB | 6.95 MB
32 MB | 31.74 MB | 21.9 MB

如果您的浏览器不支持 APNG,您可以在此处单独查看屏幕截图:

相关内容