ядро: nfs: nfsserver сервер не отвечает, время ожидания истекло

Вопрос или проблема

У нас есть клиент NFS, который выводит в сообщения следующую ошибку:

kernel: nfs: server nfsserver not responding, timed out

она выводится примерно каждую минуту. Обычно я предполагаю, что возникли проблемы с коммуникацией или блокировкой портов.

Но вот что интересно, смонтированная NFS-общая папка работает как ожидалось, мы можем читать/записывать из нее с ожидаемой пропускной способностью!

Оба сервера и клиента работают на RHEL7, клиент монтирует ее с следующими параметрами:

rw,vers=4.1,user,auto

timeo и retrans установлены по умолчанию (600 и 2). У нас много клиентов, которые подключаются к этому NFS-серверу, и только один из них испытывает эту проблему, все клиенты монтируют общий ресурс с теми же параметрами и из разных сетей.

Запустите dmesg -T

Возможно, вы увидите запись в логе вида

nfs: server name.of.server.or.ip not responding, timed out

Попробуйте пинговать name.of.server.or.ip и наладить его или исправить маршрут к нему.

Проверьте монтирования, выполните ‘mount |grep nfs’

Возможно, вы увидите что-то такое: (мой акцент на hard)

name.of.server.or.ip:/mnt/pool-1/thing on /thing type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,**hard**,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.26.24.18,local_lock=none,addr=10.26.2.10)

Под учетной записью root попробуйте umount /thing, если (КОГДА) эта команда зависнет, то Ctrl-C и также посмотрите https://unix.stackexchange.com/questions/722712/nfs-causes-linux-system-to-hang-doing-ls-or-df-for-example

Попробуйте следующее (это тоже, скорее всего, не сработает, Ctrl-C для отмены):

mount -o remount /nfs/mountpoint

Если это не удалось, то можно принудительно размонтировать. ОБРАТИТЕ ВНИМАНИЕ, что это может вызвать повреждение – однако риск тот же, что и при перезагрузке.

umount -f /nfs/mountpoint

Это должно сработать. Теперь проблема была вызвана жестким монтажом nfs. Отредактируйте /etc/fstab и измените точки монтирования nfs, добавив в них soft. Без soft жесткое монтирование — это установка по умолчанию, которая вызывает подвисание диска.

vi /etc/fstab
name.of.server.or.ip::/mnt/pool-1/thing /thing  nfs soft,bg,defaults 0 0

ИЛИ просто закомментируйте неработающие монтирования nfs в fstab.

Ответ или решение

Ваша задача связана с ошибкой, которая возникает на клиенте NFS и регистрируется в системных журналах как:

kernel: nfs: server nfsserver not responding, timed out

Сначала рассмотрим теоретическую часть вопроса. NFS (Network File System) — это протокол сетевого доступа к файловым системам, который позволяет клиентам монтировать удаленные файловые системы как локальные. Этот механизм позволяет приложениям работать с удаленными файлами как с обычными файлами на локальном компьютере. Однако, несмотря на удобство использования, NFS может сталкиваться с проблемами задержек и таймаута, особенно в средах с ненадежной сетью или неправильно настроенными сетевыми параметрами.

Ошибка «server not responding, timed out» обычно указывает на проблемы с коммуникацией между NFS клиентом и сервером. Это может быть вызвано несколькими проблемами: перегрузкой сети, потерей пакетов, блокировкой портов файерволом, или проблемами с маршрутизацией. Однако в вашем случае, несмотря на регулярные сообщения об ошибке, NFS-ресурс продолжает функционировать корректно, что свидетельствует о нормальном R/W (чтение/запись) доступе с ожидаемой пропускной способностью. Данный факт усложняет диагностику.

Теперь перейдем к примеру того, как подобная ошибка может быть решена. Первая рекомендация — провести проверку сетевого подключения. Вы можете использовать утилиту ping для проверки доступности сервера, что может выявить нестабильность соединения. Если ping показывает стабильное соединение, проблема, вероятно, кроется в конфигурации клиента или сервера NFS.

На уровне конфигурации полезно проверить параметры монтирования, используемые для подключения NFS. В вашем случае параметры включают:

rw,vers=4.1,user,auto

Важно также учесть, что стандартные значения для timeo (600) и retrans (2) могут не всегда быть оптимальны. Параметр timeo определяет таймаут для операций RPC (в десятых долях секунды), а retrans — число повторных попыток перед отказом. Возможно, имеет смысл настроить более агрессивные параметры попыток соединения, особенно в сетях с высокой латентностью.

Еще одна важная деталь — использование «жесткого» (hard) или «мягкого» (soft) монтирования. По умолчанию используется жесткое монтирование, что делает систему более устойчивой, но в то же время подверженной зависаниям в случае потери соединения. В таком режиме любая операция ввода-вывода будет приостановлена до восстановления соединения. Это и объясняет отсутствие видимых нарушений в работе; клиент просто ждет восстановления соединения.

В контексте решения вы можете рассмотреть изменение типа монтирования на «мягкий» (soft). Это сократит время ожидания операций ввода/вывода при задержках в сети, однако увеличивает риск потери данных при серьезных проблемах с доступом.

Вот пример строки /etc/fstab с параметром soft:

name.of.server.or.ip:/mnt/pool-1/thing /thing nfs soft,bg,defaults 0 0

Таким образом, изменение параметра монтирования может помочь сократить время, в течение которого система считает сервер недоступным.

Кроме того, важно проверить журналы как на стороне клиента, так и на стороне сервера, чтобы выявить любые аномалии или дополнительные ошибки. Используйте dmesg -T для просмотра системных сообщений, которые могут дать более полное представление о проблеме.

В качестве заключения, каждое сетевое окружение уникально и требует своего подхода. Регулярные тестирования и настройки сети, а также мониторинг производительности могут помочь предотвратить подобные проблемы в будущем. Надеемся, что представленные рекомендации и примеры помогут вам в решение проблемы и улучшении стабильности работы вашего NFS-сервиса.

Оцените материал
Добавить комментарий

Капча загружается...