NFS mount failed: как исправить ошибку монтирования NFS в Linux
Пошаговое руководство по устранению ошибок монтирования NFS: проверка службы, порта,exportfs, permission denied и общие проблемы.
Симптомы
- 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
Пошаговое решение
Проверьте службу rpcbind
На клиенте и сервере выполните systemctl status rpcbind (или portmap на старых системах). Rpcbind необходим для обнаружения NFS-серверов. Если не запущен: sudo systemctl start rpcbind && sudo systemctl enable rpcbind. Без rpcbind монтирование не работает даже если NFS-сервер полностью настроен.
systemctl status rpcbind Проверьте доступность сервера
Выполните ping nfs-сервера для проверки сетевой связности. Затем showmount -e nfs-сервер — покажет доступные экспорты. Если showmount зависает — firewall блокирует порт 111. Проверьте telnet nfs-сервер 2049 — если таймаут, NFS-сервер не доступен или firewall закрывает порт. На сервере: sudo netstat -tlnp | grep -E '(111|2049)'.
showmount -e nfs-server Настройте /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 Проверьте 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 Выполните монтирование
Базовая команда: 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 Настройте /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 Исправьте 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 имя-пакета — запретит обновление этого пакета.
Источники
- stackoverflow.com — проверено 02.06.2026
- ubuntu.com — проверено 02.06.2026
- unix.stackexchange.com — проверено 02.06.2026
- linux.die.net — проверено 02.06.2026