Linux 8 мин чтения

NFS mount failed: как исправить ошибку монтирования NFS в Linux

Пошаговое руководство по устранению ошибок монтирования NFS: проверка службы, порта,exportfs, permission denied и общие проблемы.

NFSmountLinuxсетьсервер

Симптомы

  • mount.nfs: access denied by server
  • mount.nfs: connection timed out
  • NFS mount failed: mount error: no route to host
  • Stale file handle при обращении к NFS
  • Permission denied на смонтированной директории

Возможные причины

  • Служба rpcbind/portmap не запущена
  • Экспорт не настроен или неправильныйexportfs
  • Firewall блокирует порты 111 и 2049
  • Неправильные опции монтирования в fstab
  • Сервер NFS недоступен
  • Клиент не авторизован в /etc/exports

Пошаговое решение

1

Проверьте службу rpcbind

На клиенте и сервере выполните systemctl status rpcbind (или portmap на старых системах). Rpcbind необходим для обнаружения NFS-серверов. Если не запущен: sudo systemctl start rpcbind && sudo systemctl enable rpcbind. Без rpcbind монтирование не работает даже если NFS-сервер полностью настроен.

Команда
systemctl status rpcbind
2

Проверьте доступность сервера

Выполните ping nfs-сервера для проверки сетевой связности. Затем showmount -e nfs-сервер — покажет доступные экспорты. Если showmount зависает — firewall блокирует порт 111. Проверьте telnet nfs-сервер 2049 — если таймаут, NFS-сервер не доступен или firewall закрывает порт. На сервере: sudo netstat -tlnp | grep -E '(111|2049)'.

Команда
showmount -e nfs-server
3

Настройте /etc/exports на сервере

Откройте /etc/exports на NFS-сервере. Формат: /path/to/share client_ip(rw,sync,no_subtree_check,no_root_squash). Клиент должен быть указан в exports. После изменения выполнитеsudo exportfs -ra для перезагрузки экспорта. Проверьте: exportfs -v. Для доступа с любого IP: *(rw,sync,no_subtree_check) — не рекомендуется в production.

Команда
sudo exportfs -ra
4

Проверьте firewall

NFS использует порты 111 (rpcbind) и 2049 (nfs). Разрешите их: sudo ufw allow 111/tcp && sudo ufw allow 2049/tcp. Для UDP: sudo ufw allow 111/udp && sudo ufw allow 2049/udp. На сервере: sudo iptables -A INPUT -p tcp --dport 2049 -j ACCEPT. Проверьте правила: sudo iptables -L -n | grep 2049.

Команда
sudo ufw allow 111/tcp && sudo ufw allow 2049/tcp
5

Выполните монтирование

Базовая команда: sudo mount -t nfs nfs-сервер:/path/to/share /mnt/nfs. С опциями: sudo mount -t nfs -o rw,soft,timeo=100 nfs-сервер:/export /mnt/nfs. Soft mode не зависает при недоступности сервера. Timeo задаёт таймаут в десятых долях секунды. Проверьте: df -h | grep nfs. Для permanentного монтирования добавьте в /etc/fstab.

Команда
sudo mount -t nfs nfs-server:/export /mnt/nfs
6

Настройте /etc/fstab

Для автоматического монтирования при загрузке добавьте строку в /etc/fstab: nfs-сервер:/export /mnt/nfs nfs defaults,soft,timeo=100,_netdev 0 0. Флаг _netdev указывает, что это сетевой device и монтирование должно ждать сети. Проверьте синтаксис: sudo mount -a. Если fstab содержит ошибку, система может не загрузиться — будьте осторожны.

Команда
sudo mount -a
7

Исправьте stale file handle

Ошибка Stale file handle возникает, когда файл был удалён на сервере после монтирования. Решение: отмонтируйте и смонтируйте заново: sudo umount /mnt/nfs && sudo mount -t nfs nfs-сервер:/export /mnt/nfs. Если umount не работает (busy): sudo umount -l /mnt/nfs (lazy unmount). На сервере пересоздайтеexport с теми же параметрами.

Команда
sudo umount -l /mnt/nfs && sudo mount -t nfs nfs-server:/export /mnt/nfs

NFS (Network File System) позволяет разделять директории по сети. Ошибка монтирования NFS чаще всего связана с неправильной настройкойexports, firewall или службыrpcbind. Всегда проверяйте связность и доступность сервера перед монтированием.

Порты NFS и их назначение

Порт 111 — rpcbind (portmap), используется для обнаружения NFS-сервера. Порт 2049 — основной порт NFS. Дополнительные порты: 32765-32767 (statd, lockd) в legacy режиме. В modern NFS v4 используется только порт 2049, что упрощает настройку firewall.

Диагностика проблемы загрузки

При проблемах с загрузкойLinuxсначала检查 system logs. Выполните journalctl -xb для просмотра логов последней загрузки. Обратите внимание на строки с [FAILED] или [ERROR]. Проверьте, какие службы не запустились: systemctl —failed. Это покажет точную причину незагрузки.

Восстановление через Live USB

Если система не загружается вообще, загрузитесь с Live USB. Смонтируйте корневой раздел: sudo mount /dev/sdaX /mnt. Проверьте файловую систему: sudo fsck /dev/sdaX. Переустановите загрузчик: sudo grub-install —root-directory=/mnt /dev/sda. Это восстановит GRUB после неудачного обновления.

Проверка конфигурации

Проверьте конфигурационные файлы: /etc/fstab (монтирование разделов), /etc/default/grub (параметры ядра), /etc/systemd/system.conf (systemd). Убедитесь, что UUID разделов в fstab совпадают с реальными: sudo blkid. Неправильный UUID — частая причина незагрузки после обновления или замены диска.

Исправление через chroot

Если нужен доступ к системе для исправления: sudo mount /dev/sdaX /mnt, sudo mount —bind /dev /mnt/dev, sudo mount —bind /proc /mnt/proc, sudo chroot /mnt. Теперь вы внутри системы и можете исправлять конфигурацию, переустанавливать пакеты или обновлятьinitramfs: update-initramfs -u.

Откат обновления

Если проблема возникла после обновления ядра или пакетов, загрузитесь с предыдущего ядра в меню GRUB. Затем выполните: sudo apt install —reinstall linux-image-$(uname -r) или sudo dnf downgrade kernel. Для автоматического отката: sudo apt-mark hold имя-пакета — запретит обновление этого пакета.

Источники

  1. stackoverflow.com — проверено 02.06.2026
  2. ubuntu.com — проверено 02.06.2026
  3. unix.stackexchange.com — проверено 02.06.2026
  4. linux.die.net — проверено 02.06.2026