Насколько я понимаю, клиенты NFSv4 должны немедленно подключиться к службе NFSv4 на сервере, полностью пропуская взаимодействия службы rpcbind portmapper и mountd, но я вижу, что мой клиент RHEL6 всегда сначала связывается со службой rpcbind, чтобы получить порт mountd, получая список экспортировать из mountd, а затем, наконец, подключиться к службе NFSv4. Наблюдается с помощью tcpdump.

По всем признакам (вывод команды монтирования и проверка TCP), когда операция монтирования завершена, клиент и сервер используют NFSv4.

Это происходит даже тогда, когда я делаю все, с чем сталкивался, пытаясь принудительно установить на клиенте только NFSv4. Примеры:

  • Установка Nfsvers = 4 в /etc/nfsmount.conf
  • Явный монтаж с опцией vers = 4
  • Явно установите порт NFS. (через команду монтирования и в nfsmount.conf)

Я совершенно не в своей тарелке или что-то не так? Это проблема для меня, потому что клиент NFS настаивает на том, чтобы иметь возможность достичь rpcbind на сервере через UDP, прежде чем он смонтирует любой экспорт NFSv4, и я получаю загадочную потерю пакетов UDP (да, я работаю с сетевым парнем над этот фронт), из-за которого крепления время от времени полностью выходят из строя или просто требуют много времени для завершения.

Я взглянул на источник libtirpc и кое-что увидел в нем, всегда использующем UDP для подключения к RPC portmapper, но я хочу полностью исключить portmapper и mountd сервис из уравнения.

Я попытался отменить регистрацию службы сопоставления портов UDP на сервере NFS с помощью "rpcinfo -d", но это привело к сбою всех монтирований NFS, нацеленных на этот сервер (опять же клиенты настаивают на том, чтобы сервер rpcbind прослушивал порт 111 UDP). Я также безуспешно пытался возиться с / etc / netconfig.

Кто-нибудь сталкивался с таким поведением или знал достаточно о NFSv4, чтобы сказать мне, что у меня нереалистичные ожидания?

answer

Я проследил это до autofs. Он был настроен на использование /etc/auto.net для получения списка экспорта с помощью команды showmount. Команда showmount отвечала за доступ к rpcbind и mountd до того, как монтирование NFS когда-либо происходило, поэтому попытки изменить параметры монтирования не имели никакого эффекта.

Я отредактировал /etc/auto.net, и моя проблема исправлена.

Примечание: использование параметров «-hosts» в auto.master, как я видел в разных местах, также приводило к доступам через rpcbind и mountd. В итоге я просто установил auto.net в корень всех серверов NFSv4, что, как я понимаю, нормально, если все мои хосты являются NFSv4.