下载/复制文件会同时促进碎片吗?


10

同时将多个文件写入硬盘分区是否会增加碎片?这些文件会隔行写入硬盘吗?

例子:

  • 从网络上同时下载多个文件
  • 将文件从各种来源复制到同一分区
  • 下载几个种子

各种操作系统之间有区别吗?为整个文件分配优先级是应用程序特定的功能吗?


好问题。我可以注意到,这取决于确切的文件系统驱动程序实现,该实现比OS窄。
whitequark 2010年

4
这将是一个复杂的答案...是的,它特定于操作系统和应用程序。有些应用程序分配空间,有些则没有。有时无法提前知道需要多少已分配空间,因此该类型的应用程序可能会产生更多碎片。也将是特定于文件系统的(您可能在Windows中使用fat32或NTFS)
Jarvin 2010年

Answers:


7

这在很大程度上取决于所使用的文件系统,在某种程度上取决于操作系统以及正在打开文件的程序。在创建新文件时,由应用程序请求正确的存储量,并且操作系统和文件系统功能会影响这些应用程序在不知道多少空间时遵循的打开和扩展行为索要。

如果程序要求操作系统提供4.2GB的文件,则操作系统将发现4.2GB的可用空间。否则它将为程序提供足够的自由空间片段来保存文件。这里有一些变量,这是简化的。

如果程序要求操作系统提供4KB的文件,则操作系统会提供该文件。如果程序一直要求新的连续4KB段(您正在下载文件,并且程序不知道它的大小),直到它获得4.2GB的空间,则操作系统会很乐意提供空间。这是文件系统和OS有所不同的情况。

例如,XFS是基于扩展区的,因此添加的空间将是连续的,直到不能扩展为止。此外,可以将XFS配置为预先分配具有一定空间的新文件,以进一步减少碎片(在虚拟机存储卷以及DVD ISO卷上有用)。

EXT2 / 3,NTFS和我相信Reiser将分配连续的,直到不能再分配为止。然后它将开始新的片段。每个片段的大小可能为4KB。

让我们来看看最坏的情况。将两个并行的4.2GB文件一次并行保存4KB,到同一目录中。“相同目录”是最坏情况的一部分,因为某些OS / FS组合尝试将文件放在同一目录中,彼此靠近。对于某些OS / FS组合,这将导致两个文件在磁盘上完全交织。对于其他尝试将新打开的文件保留在不同的空闲段中的其他应用程序,可能根本没有碎片,或者碎片很少。

在XFS上稍作改动(我认为ext4和btrfs也可以做到这一点)。在这种情况下,交错将不会是4KB,这将是您在装入卷时将您的分配大小值设置为的大小。将其设置为256MB,您将获得一个4.2GB的文件,其中包含17个片段,而不是超过一百万个。对于存储大文件(如媒体服务器)的卷很有用。对于存储大量小文件和一些大文件的卷而言,该功能没有用。

因此,Bittorrent客户端要么在开始新的下载时打开稀疏文件,要么在开始下载前分配总计的指定大小。

从同一分区的不同部分(甚至从其他分区,甚至从其他分区)复制文件时,复制过程从理论上讲知道复制的文件有多大,因此从一开始就要求操作系统提供适当大小的空间;无需为新文件追加分配。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.