我在远程驱动器上有大量数据(几 GB),这些数据是通过 nfs 透明安装的。我想将这些文件复制到它们所在的子目录中,这样所有内容都会保留在同一物理磁盘上。因此,我想避免不必要的网络往返。
看起来它cp files* subdir
做了一件幼稚的事情,将所有数据读入内存,然后将其写回。这是真的吗?是否有一个特殊的命令可以在磁盘物理连接的服务器上完全执行实际复制?
答案1
看起来 cp files* subdir 做了一件很简单的事情,将所有数据读入内存,然后将其写回。这是真的吗?
是的。
是否有一个特殊的命令,可以在磁盘物理连接的服务器上完全完成实际的复制?
不可以,除非您可以使用 ssh 登录到远程机器并在那里进行复制。
编辑目前正在开展一些工作,将“服务器端复制”添加到 NFS 协议版本 4.2(当前版本为 4.1)。例如,参见http://www.usenix.org/events/fast11/posters_files/Lentini.pdf。请注意,使用此功能需要 a) NFS 客户端和服务器支持它 b) 客户端操作系统的新系统调用(可能引用链接或 copyfile()?)c) 支持在常用实用程序(cp、rsync 等)中使用新的系统调用。我猜至少还需要几年时间,这些功能才会面世。