我在一台拥有 2GB RAM 的 HP Elitbook 6930 上使用 Debian 6。我复制了两个 AVI 文件,总共 1.5 GB,并注意到数据复制的速度为 4MB/秒。当我将相同的 AVI 文件复制到我的 Western Digital Passport 25G USB 插件驱动器时,数据传输速度为 11+MB/秒。如果我将驱动器插入不同的 USB 端口,此速度会有所不同。有趣的是,在工作时,我还在我的虚拟 xp 上下载了一个 16MB 的 IE8 exe,在 Oracle Sun Virtual Box 中运行,它在一秒钟内就下载并保存了。我们办公室有高速网络。:-)
为什么以及如何会出现这种数据速度差异?
答案1
有很多因素会影响文件传输的速度。我建议您阅读以下 wiki 文章,以便更好地了解当文件从一个设备通过计算机总线/(输入/输出)硬件传输到另一个设备时会发生什么。这个答案主要是理论上的。解释和示例是为了帮助您理解一些非常复杂的概念,但从技术上来说并非 100% 正确。
了解公交车
计算机总线是数据传输的实际线路。不同的总线(如通用串行总线 (USB) 和以太网)使用不同的协议、通过不同的控制器芯片或集成电路 (IC) 传输数据。在不同的计算机上,它们将使用不同配置的不同 IC,这将影响传输速度。一些较便宜的系统将依赖于 CPU,而其他系统将具有专用控制器,仅用于处理数据传输。现在大多数计算机上的 USB 都有自己的控制器芯片,并且能够从 CPU 卸载大量处理工作。USB 可能有多个设备使用相同的通信通道。例如,您的鼠标和硬盘驱动器可以共享同一组连接到控制器电路的电线,这意味着每次移动鼠标时都会中断硬盘驱动器。
为了加快速度,大多数总线都具有允许它们使用(直接内存接口)DMI 的逻辑。这意味着总线将被赋予一部分 RAM 来缓冲/缓存数据。因此,通过网络下载的 16MB 数据可以在实际写入硬盘之前进行缓冲。而传输的 1.5 GB 大文件将填满缓冲区。因此,传输的第一部分将非常快,直到缓冲区已满,之后它将恢复到设备的实际传输速度。现在您将看到磁盘宣传其缓冲区大小。如 32mb 等等。因此,虽然 USB2 宣传的传输速率为 480mb/s,但磁盘的缓冲区为 32mb,一旦它已满,我们就会回到设备的实际传输速度。
了解硬盘
硬盘是机械设备,受设备实际移动到磁盘盘片部分的速度影响。维基百科文章硬盘速度会很好地解释这一点。磁盘臂/磁头必须从其静止位置移动到文件数据实际所在的位置,然后根据您正在执行的操作进行读取或写入。读取速度更快,因为检测磁盘某部分的状态的工作量比实际更改该部分的工作量要少。文件越分散,即在磁盘上分布得越广,机械部件移动到位进行读取或写入所需的时间就越长。您会注意到 ESATA 的宣传总线速度约为 3GB/s。您的磁盘机械和电路逻辑是两个独立的部分。因此,虽然 32MB 的磁盘缓冲区将在 3GB/s 的统计总线速度下填满。机械部件需要更长的时间来完成工作,即使在最高端的机械磁盘上,您的传输速度也只能在 15mb/s - 30mb/s 之间。
了解文件系统。
现在,操作系统上的文件系统与磁盘上的文件系统相比要复杂一些。您需要考虑操作系统的虚拟内存了解文件是如何创建、读取和写入的。这是您在拔出磁盘之前需要卸载/弹出磁盘的原因之一,因为某些文件可能尚未完成传输,并且仍在后台继续传输。如果您在传输完成之前执行此操作,则可能会损坏您正在传输的文件,甚至更糟的是文件系统。虚拟内存本质上是一个巨大的缓存/缓冲区,操作系统使用它来将最近使用的数据保存在可快速访问的 RAM 中。
磁盘文件系统(如 NTFS / ext#(1,2,3,4))是操作系统能够将计算机可理解的地址转换为以下地址的方式,例如CHS(气缸盖扇区)转换为人类可理解的文件名或数据。这需要操作系统进行工作,以便查看哪些 CHS 可用以及数据在哪里。这就是碎片产生的原因。如果磁盘上有许多空闲区域,磁盘的机械部件将需要很长时间才能找到它们并执行写入操作,因为写入比读取花费的时间更长。
通常在传输过程中,您受到写入设备的传输速率限制,而不是读取设备的传输速率限制。较大的文件需要更长的时间,因为需要找到更多的可用空间,而且很可能并非所有空间都是连续的(没有碎片)。现在,如果您将文件从一个分区移动到另一个分区,就传输而言,这是最糟糕的情况。想象一下,一旦缓冲区已满,磁盘臂就会移动到一个地址进行读取,然后移动到另一个地址进行写入。这会真正减慢您的传输速度。
结论
我无法确切地看到您的系统是如何设置的,但我希望您能够看到简单的复制和粘贴操作涉及多少内容。影响读写速度的两个最大因素是磁盘的机制和文件系统状态。如果不进行碎片整理,NTFS / FAT 32 会更慢。Linux(ext3,4)确实有可以提供帮助的碎片整理软件,但在分配连续区域方面往往比 Windows 更好。Linux ext# 仍然不完美,您可以通过碎片整理来提高速度,但我怀疑您实际上会注意到差异。
答案2
“机械部件需要更长的时间才能完成工作,即使是最高端的机械磁盘,传输速度也只能达到 15mb/s - 30mb/s 之间。”
以上说法不正确!现代台式机/笔记本电脑硬盘的持续连续传输速率超过 100MB/s(兆字节/秒)。如今,即使是 5400RPM 硬盘的传输速率也超过 100MB/s。
随机查找和传输保存的数据或要写入硬盘上随机位置的数据将会慢得多。确实是 15-30MB/s,但通常还是快一点。
几年后,随着数据密度进一步增加,您将看到大多数新型台式机/笔记本电脑驱动器能够实现超过 200MB/s 的持续连续传输速率。