扇区和集群有什么区别?

Nar*_*esh 10 memory

我浏览了维基百科和其他网站,这是我获得的信息。

Sector:最小可寻址单元(主要为 512 字节)
Cluster:最小分配单元(等于 1 个或多个扇区,簇数取决于文件系统)。

让我们在下面的例子中说:扇区 = 512 字节,集群 =8 扇区 = 4096 字节。现在,我很难弄清楚,当我尝试创建文件时,文件系统做了什么?它是否将 4096 字节视为最小写入/读取单位或 512 字节?

如果答案是 4096 字节: 当磁盘驱动器制造商提供 512 字节作为最小可寻址单位时,为什么文件系统将簇视为最小单位?我的意思是,这样做有什么好处?

rdt*_*tsc 8

将集群/分配单元/块作为最小单元的文件系统的优势在于,对每个扇区的整个磁盘进行寻址将需要更多的位来索引它。较大的位数会使其变慢,因为有更多的地址和要跟踪的内容。对于设备的每次访问,使用 48 位 (2^48 = 2.8e14) 寻址(和索引!)位置的效率要高得多,而不是 64 位或更多位 (2^64 = 1.8e16)。

但是是的,集群大小或分配单元大小(windows)或块大小(Linux)可根据定义的文件系统进行调整,这是操作系统通常可以访问以存储文件数据的最小大小。“定义文件系统”意味着格式化磁盘(或该格式的规范),因此意味着擦除磁盘上的所有数据。因此,在集群大小为 4kiB 的磁盘上,一个 1 字节的文件确实会像您的示例一样占用整个 4k 集群。是的,操作系统可以写入该集群中的某些特定扇区,但文件仍将使用该集群的相同扇区(文件大小始终是集群大小的倍数,无论其中包含什么数据。)簇大小,意味着重新格式化磁盘,这就是必须擦除所有数据的原因。

顺便说一句,较小的簇大小可以更有效地存储小文件。但是,由于集群数量增加,磁盘整体运行速度会变慢。当您的 PC 长时间坐在磁盘上磨削时,这是因为它正在尝试读取或写入如此多的小块,而它们的绝对数量会减慢一切。

例如:100,000 个 768 字节的文件,存储在具有 1kiB 集群的磁盘上:

  • 768kB 字节的实际文件数据

  • 使用了 1.024MB 的磁盘,因为每个文件使用了 1024 字节的磁盘。

  • 空间效率 = 0.768/1.024 = 75%(还不错……)

同样,较大的集群更适用于文件较少、文件较大的磁盘,例如电影、图像和音频。由于集群较少,磁盘通常更快。但是要小心在上面放很多小文件:

例如:100,000 个 768 字节的文件,存储在具有 64kiB 集群的磁盘上:

  • 768kB 字节的实际文件数据

  • 使用了 6.55GB 的磁盘,因为每个文件使用 65535 字节的磁盘。

  • 空间效率 = 0.768/6553.5 = 0.00017% !!!

具有混合内容的磁盘(例如操作系统)通常具有中小型集群/块大小,因为大多数文件的大小都是中小型的。最终结果是空间利用率和速度之间的折衷。

磁盘本身更喜欢 32kB 到 256kB 的块,因为这允许它们每秒传输最多的数据。

这都与传统的机械旋转盘式磁存储硬盘有关。SSD 或固态硬盘正在迅速取代传统硬盘,并拥有更快的读/写/寻道速度。那么,如今的 SSD 上的集群大小很重要吗?好吧,我想说它对普通用户来说不那么重要,但这只是因为 SSD(和现代计算机)已经快得多了。当 SSD 的速度已经比磁性硬盘快 5 倍时,谁会注意到 SSD 的速度下降了 10%?

对 SSD 上的集群大小影响更大的是吞吐量。您可能会发现(通过格式化和基准测试)对于该 SSD ,某个集群大小比其他集群好得多。例如,某些 SSD 针对 8kiB 或 4kiB 传输进行了优化。这与内部电子设备准备根据请求传输的数据块大小有关。将操作系统尝试使用的内容(集群大小)与该 SSD 的最佳大小匹配 = 最快的传输速度。

然而,集群大小对于 SSD 上的文件“开销”原因仍然很重要。

我发现一个很好的 SSD 基准测试工具是适用于 Windows 的AS-SSD,以及适用于 Linux 的这些工具

  • 簇大小确实可以“轻松”调整,尽管它需要重新格式化卷。Windows 将其称为“分配单元大小”。 (2认同)