同时将多个文件写入硬盘分区是否会增加碎片?这些文件会隔行写入硬盘吗?
例子:
- 从网络上同时下载多个文件
- 将文件从各种来源复制到同一分区
- 下载几个种子
各种操作系统之间有区别吗?为整个文件分配优先级是应用程序特定的功能吗?
同时将多个文件写入硬盘分区是否会增加碎片?这些文件会隔行写入硬盘吗?
例子:
各种操作系统之间有区别吗?为整个文件分配优先级是应用程序特定的功能吗?
Answers:
这在很大程度上取决于所使用的文件系统,在某种程度上取决于操作系统以及正在打开文件的程序。在创建新文件时,由应用程序请求正确的存储量,并且操作系统和文件系统功能会影响这些应用程序在不知道多少空间时遵循的打开和扩展行为索要。
如果程序要求操作系统提供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客户端要么在开始新的下载时打开稀疏文件,要么在开始下载前分配总计的指定大小。
从同一分区的不同部分(甚至从其他分区,甚至从其他分区)复制文件时,复制过程从理论上讲知道复制的文件有多大,因此从一开始就要求操作系统提供适当大小的空间;无需为新文件追加分配。