У меня есть одна машина, которая экспортирует два каталога, каждый на одном физическом жестком диске.
Когда файлы перемещаются между этими двумя общими ресурсами, проходят ли данные полностью по сети? Если да, то есть ли способ заставить передачу вести себя больше как mv
на удаленной машине?
Копирование на стороне сервера NFS это предлагаемое расширение для NFSv4.2.
Хотя первоначальная поддержка превратилась в Ядро Linux 3.11, вы могли бы немного подождать этого.
Если вы инициируете передачу на клиентском хосте, то да, все данные передаются по проводам. ЕСЛИ вы инициируете на сервере nfs, независимо от того, используете ли вы пути к локальным каталогам или точки монтирования, он не попадает в провод. Вы можете убедиться в этом сами, запустив tcpdump в обоих случаях. netstat может немного помочь вам увидеть это, но tcpdump покажет вам фактическое количество трафика.
Причина этого в том, что mv ничего не знает о NFS, он использует системные вызовы в вашем локальном ядре, а ядро не знает, что точки монтирования A и B экспортируются с одного и того же сервера. Он обрабатывает данные одинаково.
Единственный способ добиться желаемого поведения - это ввести команду оболочки на удаленном сервере для выполнения передачи туда.
Это зависит от того, из какой системы и из какого приложения вы выполняете переход.
Если вы делаете это через машину, на которой находятся эти общие ресурсы, она будет передаваться локально через ОС. Пример: ssh на сервер и использование команды MV или открытие файлового браузера и передача файлов из одного файлового браузера в другой (при условии, что оба файловых браузера открыты для ресурсов на одном сервере).
Причина этого, если вы используете два файловых браузера в удаленном сеансе, заключается в том, что все, что вы делаете на своей стороне, сначала переводится на стороне сервера. Сервер просматривает запрос и определяет кратчайший путь к месту назначения, и, поскольку он видит себя в качестве источника и назначения, трафик никогда не покидает сервер (за пределами обновленной информации отслеживания, которую вы видите для передачи файлов).
Если вы делаете это через сложный удаленный сеанс через несколько компьютеров, где вы принудительно туннелируете трафик, то передача будет происходить через сетевое соединение.