为什么在一个分区中复制文件比将文件复制到另一个分区快得多?

为什么在一个分区中复制文件比将文件复制到另一个分区快得多?

为什么在一个分区中复制文件比复制到另一个分区要快得多?

答案1

我不认为在同一个分区上复制会更快。如果你指的是“移动”,那么看看 Daniel Schwartz 的回答,他完美地解释了发生了什么。

但是,如果您指的是真正的复制操作,只要操作在同一磁盘上进行,我预计性能差异不会很大。由于磁头放置操作会消耗硬盘驱动器的时间(显然不会消耗 SSD 的时间),因此可能会存在一些差异,但我预计这种影响不会很大。也许由于操作系统的缓存策略不同,也存在一些差异,但这种影响,我预计不会很大。

从一个磁盘复制到另一个磁盘时,差别很大。如果控制器速度很快,这比在同一磁盘上复制要快得多,因为任一驱动器只需读取或写入,而不必同时执行两个操作(由于硬盘和控制器缓存,此规则的一个例外可能是小数据)。

请注意,操作系统可以创建文件链接。在这种情况下,数据不会被复制,而只会创建对数据的新引用(文件也不会占用两倍的空间)。这非常快。但是,如果您使用资源管理器或标准 shell 命令复制文件,则文件将被复制而不是链接。

答案2

只有在将数据复制到同一硬盘驱动器或从同一硬盘驱动器复制数据时,才会出现此问题。数据被读取、缓存并写回,但在开始写入之前,必须将读/写头移至空闲空间。将源和目标放在不同的分区上可确保相应的磁盘扇区在物理上相距较远。读/写头将不断来回移动。通常您可以听到这种声音。

磁头移动时,数据无法传输。如果源和目标位于同一分区,则通常意味着磁头移动时间更短,因此文件传输效率更高。

答案3

我们来比较一下这两个操作。首先,将文件从一个分区复制到另一个分区:

  1. 源头打开了。

  2. 目的地已打开/创建。

  3. 为目的地分配空间。

  4. 文件数据的每个字节都从源读取并写入目标。

  5. 目标文件已关闭。

  6. 源文件句柄设置为关闭时取消链接。

  7. 源文件句柄已关闭,取消文件链接。

  8. 由于这(通常)是对源文件数据的最后一次引用,因此必须释放源文件数据。

现在,将文件从一个文件夹复制到同一分区上的另一个文件夹。

  1. 源头打开了。

  2. 在目标目录中创建指向源文件的新硬链接。

  3. 源文件的句柄设置为关闭时取消链接。

  4. 源句柄已关闭,取消链接。源文件仍链接到目标目录,因此不需要更改可用空间。

请注意,步骤较少,并且所有步骤都不需要触碰任何文件数据,甚至是可用空间映射。

相关内容