是否有比 cp 更快的替代方案来复制大文件(~20 GB)?

是否有比 cp 更快的替代方案来复制大文件(~20 GB)?

我是一名研究生,我工作的小组维护着一个 Linux 集群。集群的每个节点都有自己的本地磁盘,但这些本地磁盘都比较小,并且没有配备自动备份功能。因此,该小组拥有一个具有许多 TB 存储空间的文件服务器。我是一个相对的Linux新手,所以我不确定文件服务器在速度、网络能力等方面的规格是什么。根据经验,我确实知道本地磁盘在I/O方面明显快于文件服务器。大约有十几个人使用文件服务器。

cp约 20 GB 文件从文件服务器复制到其中一个本地磁盘平均需要大约 11.5 分钟的实时时间(根据time)。我知道这个cp操作效率不是很高,因为 (1)time告诉我这样一个副本的系统时间只有 ~45 秒;因为 (2) 当我top在复制过程中检查时,%中央处理器相当低(通过检查,大致0-10%一般)。

使用将cp相同的约 20 GB 文件从本地磁盘上的一个文件夹复制到同一本地磁盘上的另一个文件夹所需的时间较短 - 实时约为 9 分钟(系统时间约为 51 秒,根据time)。显然,正如预期的那样,文件服务器比本地磁盘慢一些,但可能不会慢很多。我很惊讶从本地复制到同一个本地的速度不超过 9 分钟。

我需要将大约 200 个大文件(每个大约 20 GB)从文件服务器复制到本地磁盘之一。所以,我的问题是:cp在 Linux 中复制大文件是否有更快的替代方法? (或者cp我可以使用其中的任何标志来加快复制速度?)即使我可以以某种方式缩短复制时间一分钟,这也会有很大帮助。

我确信购买新的、更快的硬件磁盘,但我无法访问此类资源。我也不是系统管理员——我只是一个(新手)用户——所以我无权访问有关磁盘上负载的更详细信息。我确实知道,虽然每天大约有十几个人使用文件服务器,但我是唯一使用这个特定节点/本地磁盘的人。

答案1

%中央处理器应该复制时保持低电平。 CPU 告诉磁盘控制器“将 X-Y 扇区的数据抓取到 Z 处的内存缓冲区中”。然后它就去干别的事(或者睡觉,如果没有别的事的话)。当数据在内存中时,硬件会触发中断。然后CPU要复制几次,并告诉网卡“在内存位置A、B和C发送数据包”。然后又回去做其他事情。

你正在推动〜240mbps。在千兆位 LAN 上,您应该能够达到至少 800mbps,但是:

  1. 这是在使用文件服务器的每个人之间共享的(可能还有交换机之间的连接等)
  2. 这受到文件服务器处理写入的速度的限制,请记住其磁盘 I/O 带宽由使用它的每个人共享。
  3. 您没有指定如何访问文件服务器(NFS、CIFS (Samba)、AFS 等)。您可能需要调整您的网络安装,但对于最近的任何东西,默认值通常非常合理。

对于追踪瓶颈,iostat -kx 10这将是一个有用的命令。它将向您显示本地硬盘的利用率。如果您可以在文件服务器上运行它,它会告诉您文件服务器的繁忙程度。

一般的解决方案是加速这个瓶颈,当然你没有预算。但是,在一些特殊情况下,您可以找到更快的方法:

  • 如果文件是可压缩的,并且您有一个快速的 CPU,那么执行最小的即时压缩可能会更快。类似lzop或者也许gzip --fastest
  • 如果您只在这里或那里更改一些位,然后将文件发回,则仅发送增量会快得多。不幸的是,rsync这并没有真正的帮助,因为它需要读取两侧的文件才能找到增量。相反,您需要在更改文件时跟踪增量的东西......这里的大多数方法都是特定于应用程序的。但您可能可以使用设备映射器(参见全新的DM时代目标) 或 btrfs。
  • 如果您将相同的数据复制到多种的机器,您可以使用 udpcast 之类的东西将其一次性发送到所有机器。

而且,既然您注意到您不是系统管理员,我猜这意味着您有系统管理员。或者至少有人负责文件服务器和网络。您可能应该问他/她/他们,他们应该更熟悉您的设置的细节。您的系统管理员至少应该能够告诉您可以合理预期的传输速率。

答案2

这可能是一个更快的替代方案,并且您不会在两天内阻塞网络:拿一个或两个大 USB(USB 3,如果有的话)或 FireWire 磁盘,将其连接到服务器并将文件复制到磁盘。将磁盘携带到本地计算机。将文件复制到机器上。

答案3

如果您有直接 SSH(或 SFTP)访问权限(询问您的系统管理员),则可以使用scp压缩 ( -C):

scp -C you@server:/path/to/yourfile .

当然,只有当文件可压缩时这才有用,这将使用更多的 CPU 时间,因为它将使用加密(因为它是通过 SSH 进行的)和压缩。

答案4

你对效率的定义是倒退的。更有效的实施浪费较少的中央处理器时间。在本地副本上,平均吞吐量约为 74 MB/s(读 + 写),这与单个硬盘的吞吐量差不多。

相关内容