最好使用 512kb 块还是更小或更大的块将硬盘重新格式化为 exFAT?

最好使用 512kb 块还是更小或更大的块将硬盘重新格式化为 exFAT?

我可以将全新的 2TB WD Passport 硬盘重新格式化为 exFAT,并可选择多种“分配单元大小”:

128kb
256kb
512kb
1024kb
4096kb
16384kb
32768kb

如果此驱动器主要用于在 Windows 7 上使用 Media Center 录制 HDTV 节目,哪一个最好?谢谢。

这与问题相关: 为了兼容 Mac,最好将我们的外部硬盘重新格式化为 exFAT 吗?

答案1

你应该首先了解什么

分配单元大小 (AUS)

方法。

它是磁盘上最小的数据块。您的实际数据在保存到磁盘时将被分成该大小的单元。例如,如果您有一个大小为512 千字节你有128 千字节分配单元大小,您的文件将保存在4 个单位在磁盘中(512KB/128KB)。

如果你的文件大小是500 KB你有128KB 澳大利亚,您的文件将仍保存在 4 个单位中在磁盘上,因为如上所述,128KB 是分配单元的最小大小。384KB 将分配到 3 个单元中,剩余的 116KB 将分配到最后一个单元中,该单元中的 12KB 将为空。您可以在 Windows 上的文件属性对话框中观察此行为;您的文件大小和此文件实际占用磁盘上的多少空间是两个不同的概念。操作系统在低级磁盘读取操作中仅读取分配单元大小的数据。

话虽如此,使用较大的 AUS 会显著降低可用空间利用率,因为没有完全使用最后一个分配单元。而副作用是,由于同样的问题,存储在磁盘上的文件数量会减少:最后一个 AU 没有被充分利用。但这里有一个权衡:使用较大的 AUS 会显著提高磁盘读取性能。操作系统一次读取可以读取更多数据。想象一下,如果操作系统只需要进行几次磁盘读取就可以完全读取一个 GB 大小的文件!

使用较小的 AUS 可以提高可用空间利用率,但会降低磁盘读取性能。反过来想想使用较大的 AUS,会出现同一类问题和改进,但方向相反...

那么,结论是什么?如果你要在磁盘上存储大型(我的意思是大!)文件,更高的 AUS 将显著提高读取性能,同时减少文件数量和可用空间

您应该使用哪个 AUS?这取决于您的平均文件大小。您还可以根据文件大小计算可用空间利用率。

答案2

鉴于高清录制文件较大,较大的分配单元(16384 或 32768 KB)将提供更好的性能。闲置空间(由于分配单元未充分利用而浪费的空间 - 文件存储在必须作为整体使用的分配单元中)的影响将受到文件数量较少的限制。另一方面,如果您有许多较小的文件,请使用较小的分配单元来减少浪费的空间。

答案3

对于包含大量小文件的文件系统,使用8 千字节簇大小。对于只有大文件的文件系统(如媒体),请使用128 千字节集群。如果不确定,请使用8 千字节集群大小。对于大于 128 KiB 的集群,速度提升可以忽略不计(参见下面一组图中左上角的图),但如果你使用更大的集群,磁盘使用量可能会非常大。

例如:就我的情况而言,有大量小文件(超过 100 万个文件,共计 74 GB):

  1. 8 KiB 簇大小-->82 GB 存储空间用完了我的 74 GB 数据。
    1. 338 兆写入速度
  2. 128 KiB 簇大小-->194 GB 存储空间用完了我同样的 74 GB 数据
    1. 390 兆写入速度
  3. 32 MiB 集群大小-->32768 GB(32.8 TB)(不!不是错误)的存储空间用完了我的 74 GB 数据。
    1. 428 兆写入速度

Microsoft 的集群大小默认值也最大为 128 KiB。请参阅我回答末尾的表格(来自 Microsoft)。

研究一下我精心制作的这些图表。左上角的图表趋势适用于无论您有多少小文件,因为我通过将 5.3 GB 的文件 rsync 到 exFAT 外部 SSD 来进行这些测试,但其他三个图表因我拥有的小文件数量而加剧。右下角的对数线性趋势适用于所有人,但其斜率以及 y 轴值取决于您有多少小文件。

在此处输入图片描述

如果感兴趣的话,我的网站上有一篇完整的文章:https://gabrielstaples.com/exfat-clusters/

完整的 Python matplotlib/numpy 绘图代码在这里:https://github.com/ElectricRCAircraftGuy/eRCaGuy_hello_world/blob/master/stack_exchange/format_exFAT_PLOTS.py


我不是在回答原帖者关于“录制高清电视节目”的问题。我是在为拥有大量小文件(包括进行全盘备份)的人回答,因为他们肯定也会进入这个页面。


如果你有很多小文件,我会选择尽可能最小的分配单元。这可以避免小文件浪费空间。例如:在 exFAT 上使用 4 KiB 分配单元大小而不是 128 KiB。

我刚刚备份了74 GB将 Apple APFS 文件系统中的数据复制到具有 exFAT 文件系统的外部 SSD 上128 KB 分配单元大小(在 Linux Ubuntu 中使用 Gnome Disks 格式化为 exFAT 时,这显然是默认设置),而在外部驱动器上,原为 74 GBAPFS 文件系统上的数据现在占用了194 国标在 exFAT 文件系统上!太疯狂了!2.62x占用更多空间,毫无意义!

这是因为我有成千上万个小文件,例如,只有几百个字节在使用 APFS 文件系统的旧驱动器上,这些将占用单个512 字节集群,而在具有 exFAT 文件系统的新外部驱动器上,这些相同的 90 字节文件占用了惊人的128 千字节簇,即128KiB * 1024 bytes/KiB / 512 bytes=大256倍exFAT 驱动器上存储小文件所需的存储空间。例如,将 128 KiB 分配单元减少到仅 4 KiB,将占用 128/4 =空间减少 32 倍!

也可以看看

  1. 我的答案:Unix 和 Linux:从 Linux 创建和格式化 exFAT 分区mkexfatfs- 我展示了带有 的 Linux Ubuntu 20.04和带有 的 Linux Ubuntu 22.04的命令mkfs.exfat

  2. 关于如何确定任何文件系统的簇大小的回答是:服务器故障:如何找到集群大小任何文件系统,无论是 NTFS、Apple APFS、ext4、ext3、FAT、exFAT 等。

  3. [真的很有用]Support.Microsoft.com:NTFS、FAT 和 exFAT 的默认簇大小

    exFAT 的默认簇大小

    下表描述了 exFAT 的默认簇大小。

    卷大小 Windows 7、Windows Server 2008 R2、Windows Server 2008、
    Windows Vista、Windows Server 2003、Windows XP
    7 MB 至 256 MB 4 千字节
    256 MB–32 GB 32 千字节
    32 GB 至 256 TB 128 千字节
    > 256 TB 不支持

答案4

基本上,您打算保存的文件越大,您可能需要使用的每个分配单元大小就越大 - 但不要太大或太小!我认为 DragonLord 解释得很好。

因此,如果浪费空间让您感到烦恼,那么您可能需要考虑使用其他文件系统。也许像 EXT4 这样的文件系统。问题是 Microsoft OS(实际上是 Windows)除了 FAT(vFAT、FAT32 等)或 NTFS 之外,无法很好地处理任何其他文件系统。如果您最终得到大于 4Gig 的文件,您可能会诅咒您可能正在使用的任何 FAT 类型系统。因此,我建议使用具有推荐分配单元大小(我相信是 4K)的 NTFS 文件系统。这样,如果您最终得到大于 4Gig 的文件,您仍然可以存储您的巨型文件,至少直到您可以将它们分解或将它们转码为更小的文件。(我假设我们谈论的是巨大的多媒体文件,这就是我提到“转码”的原因,因为我似乎总是在转码时找到使文件变小的方法,尤其是如果它们是使用 MCE 录制的。)

我认为使用 FAT(vFAT、FAT32、FAT16 等)的唯一原因是其他操作系统可以读取/写入存储设备上的文件。FAT 几乎被普遍接受。否则,我不建议使用 FAT(除非设备的容量为 4Gig 或更少)——至少对于 Windows 使用 NTFS。即使它位于同一物理驱动器上,您也可以随时使用不同的文件系统创建另一个分区。希望这对您有所帮助。

相关内容