exFAT 闪存驱动器上具有小文件的最佳分配单元大小

exFAT 闪存驱动器上具有小文件的最佳分配单元大小

我在 SCSI USB 连接的 SSD 上存储了大量文件,大小在 1 到 50KB 之间。allocation unit size格式化时最好选择什么exFAT

我想知道读/写速度最快的是哪个。我正在考虑 64K,虽然 32K 似乎更好。我希望有人能帮我找出最明智的做法!

答案1

我们可以使用ExFAT 规范推导出一个公式,告诉我们给定用途的最佳分配大小。

假设我们讨论的是大小为,以分配大小(簇大小)格式化C我们打算存储平均大小的文件年代(所有数字均以字节为单位。)

所有 FAT 文件系统(包括 ExFAT)都存储 2 份 FAT(文件分配表)副本,每份副本包含的条目数与磁盘上的簇数相同,每项占用 4 个字节。这是主要来源,因此,专用于(浪费)2 份 FAT 的空间约为:

F = 8 × V / C

此外,每个文件平均会浪费半个簇,所以我们需要知道磁盘上能容纳多少个文件。分配 2 个 FAT 副本后,剩余空间中可容纳的平均大小为 S 的文件数量大约等于:

N = (V - F) / S

因此,浪费的空间总量或文件系统开销等于:

W=F+N×C/2

  = 8V/C + (V - 8V/C) * C / 2S

  = CV/2S + 8V/C - 4V/S

最佳簇大小对应于最小浪费空间,因此我们计算 W 关于 C 的偏导数:

dW/dC = V/2S - 8V/C^2

并求解零点的导数,保留正数答案:

C = 4 × √S

令人惊讶的是(或不是*),最佳簇大小并不取决于卷的大小,而仅取决于文件的平均大小。

如果你可以预测将存储在设备上的文件的平均大小(只需取一个包含类似数据的现有目录,并将其大小除以其包含的文件数量),你就可以取平均文件大小的平方根并乘以 4以获得 ExFAT 驱动器的最佳簇大小。

(*) 仔细想想,这个结果是有道理的。如果你将卷加倍,同时保持簇大小不变,那么分配给 FAT 的空间和分配给文件的空间都会加倍。因此,浪费空间与使用空间的比率保持不变。

答案2

经过一些测试(感谢朋友)我得到了以下结果:

将其格式化并将exFAT分配大小设置为:

  • 默认值:磁盘大小为 5.8GB
  • 8192:磁盘大小为 4.26GB
  • 16K:磁盘上的大小为4.47GB

因此得出结论:当谈到小文件和 Android 项目相关文件时,8192(〜8K)显然获胜。

相关内容