如果我在 nfs 服务器上有两个目录,我想在这两个目录之间复制大量数据(几千个文件,而不是一个大块),有什么方法可以将其优化为“本地”副本在服务器上? NFS 是否会自动执行此操作,如果没有,是否有选项可以使其执行此操作,或者客户端是否会受到一些不可避免的影响?遗憾的是,无法通过 sshing 进入 nfs 服务器 - nfs 挂载是我对其的唯一访问权限。
不,不幸的是,NFS 不这样做。 协议中没有规定副本的来源可以了解有关目的地的任何信息,反之亦然。
如果没有 ssh 或类似的访问权限,除了将每个字节通过网络拖动到客户端,然后通过网络将其发送回服务器(一次一个块)之外,您无法执行任何操作。
如果您可以使用 tar 或 dd 或其他可以修改块大小的命令,您可能会获得一些加速。 但我不会打赌。
从 2024 年开始,情况似乎确实如此。我对一个 3GB 文件从 nfs 安装的驱动器到同一驱动器进行了计时,花费了 0.054 秒(服务器上的底层磁盘是 btrfs CoW 文件系统)。