我有一台机器导出两个目录,每个在一个物理硬盘上。
当文件在这两个共享之间移动时,数据是否完全在networking上传输? 如果是这样,有没有办法让转移更像远程机器上的mv ?
如果您在客户端主机上启动传输,那么是的,所有数据都会传输线路。 如果您在nfs服务器上启动,无论您使用本地目录path还是挂载点,它都不会触及导线。 在这两种情况下,你都可以看到自己运行tcpdump。 netstat可能会帮助你一点,但tcpdump会告诉你实际的stream量。
原因是,因为mv不知道有关NFS的任何信息,它会在本地内核上使用系统调用,而内核不知道安装点A和B都是从同一台服务器上导出的。 它将数据视为相同。
获得所需行为的唯一方法是在远程服务器上发出一个shell命令,以便在那里进行传输。
NFS服务器端副本是NFSv4.2的一个build议的扩展。
虽然最初的支持已经进入了Linux 3.11内核 ,但您可能会等待一段时间。
这取决于你正在做什么系统和应用程序。
如果您是通过这些共享机器所在的机器进行操作,则会通过操作系统在本地进行传输。 例如:ssh到服务器,使用MV命令或打开一个文件浏览器,并将文件从一个文件浏览器传送到下一个文件浏览器(只要两个文件浏览器都打开到同一服务器上的资源)。
这样做的原因是,如果您在远程会话中使用两个文件浏览器,则是因为无论您如何执行,都会先在服务器端进行翻译。 服务器查看请求并确定到目标的最短path,并且由于它将自身看作源和目标,所以stream量永远不会离开服务器(在您为文件传输而看到的更新的跟踪信息之外)。
如果您是通过一些复杂的远程会话,通过几台计算机进行强制隧道传输,那么传输将通过networking连接进行。