Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
LINUX-NFS-MOUNT-HANGS Linux / DevOps

Гайд: Траблшутинг размонтирования и зависания томов NFS: параметры монтирования soft/hard, intr, noresvport

Обновлено: 21.08.2026  ·  Официальная база знаний

Архитектура протокола Network File System (NFS) и причины блокировок

Сетевая файловая система NFS (Network File System v3/v4) транслирует системные вызовы VFS (open, read, write, stat) через сетевой RPC-протокол (Remote Procedure Call). Если удаленный NFS-сервер (NAS/SAN) перестает отвечать, сетевой коммутатор теряет пакеты или NAT-шлюз сбрасывает TCP-сессию, клиентская операционная система Linux сталкивается с глухими зависаниями потоков:

  • Процессы зависают в D-state (Uninterruptible Sleep): Системные команды df -h, ls /mnt/nfs или скрипты мониторинга блокируются намертво и не могут быть завершены даже через kill -9;
  • Load Average сервера взлетает до сотен: Каждый процесс, попытавшийся обратиться к зависшему NFS-каталогу, увеличивает счетчик нагрузки системы;
  • Ошибки в dmesg: nfs: server nfs-storage not responding, still trying или nfs: server nfs-storage OK.

Бизнес-риски

Полная парализация работы веб-кластеров, использующих общий NFS-каталог для аплоадов/медиафайлов, зависание резервного копирования.

Сравнение режимов монтирования NFS: Hard vs Soft

Параметр монтированияПоведение при обрыве сети к NFS-серверуРекомендация по применению
hard (дефолт)Клиент отправляет RPC-запросы бесконечно, полностью замораживая процесс до восстановления связи. Исключает потерю данных.Рекомендуется для критических данных (БД, транзакционные хранилища).
softПосле retrans неудачных попыток (таймаут timeo) запрос завершается с ошибкой ввода-вывода (EIO).Для некритичных данных (кэши статики, логи). Опасно повреждением файлов при записи!

Регламент аварийного восстановления и надежной настройки NFS

Сценарий 1: Аварийное принудительное «ленивое» размонтирование зависшей точки (Lazy Unmount)

Если процесс висит наглухо и обычный umount /mnt/nfs выдает «target is busy» или зависает:

# 1. Принудительное и ленивое размонтирование (Lazy Unmount):
sudo umount -f -l /mnt/nfs

# Флаг -f (force) принудительно прерывает активные RPC-запросы.
# Флаг -l (lazy) немедленно отсоединяет файловую систему от дерева VFS, очищая оставшиеся дескрипторы в фоне.

Сценарий 2: Завершение процессов, удерживающих зависший NFS-моунт

# 1. Поиск зависших процессов утилитой fuser:
sudo fuser -vm /mnt/nfs

# 2. Принудительное завершение всех процессов в точке монтирования:
sudo fuser -km /mnt/nfs

Сценарий 3: Настройка эталонных параметров монтирования в /etc/fstab

Сконфигурируйте надежные параметры монтирования для предотвращения зависаний:

# Рекомендуемая строка монтирования NFSv4 в /etc/fstab:
nfs-server.example.com:/exports/data  /mnt/nfs  nfs4  rw,hard,intr,noresvport,timeo=600,retrans=2,rsize=1048576,wsize=1048576,nofail,x-systemd.automount,_netdev  0  0

Разбор ключевых параметров:

  • noresvport: Указывает использовать непривилегированные TCP-порты при переподключении. Критически важно при перезапуске NFS-сервера через NAT или файрвол;
  • intr: Разрешает прерывать зависшие RPC-запросы сигналами от пользователя (Ctrl+C / SIGINT);
  • rsize=1048576,wsize=1048576: Размер блоков передачи 1 МБ для максимальной скорости на 10G/40G сетях;
  • x-systemd.automount: Монтирует каталог только при реальном первом обращении к нему, исключая зависание системы при старте;
  • _netdev: Гарантирует ожидание поднятия сети перед монтированием.

Типовые ошибки администраторов

  • Монтирование с параметром soft для операций записи: При кратковременном сетевом лаге клиент NFS с опцией soft прерывает запись на середине файла, вызывая скрытое необратимое повреждение документов и архивов.
  • Использование NFS v3 без блокировки портов rpcbind: В NFSv3 службы lockd, mountd и statd используют случайные динамические порты, которые регулярно блокируются межсетевыми экранами (iptables/UFW). Используйте протокол NFSv4 (работает строго по одному TCP-порту 2049).
NFS-каталоги зависают и блокируют веб-серверы при сбоях сети?
Эксперты ITSTM переведут сетевое хранилище на NFSv4.2 / CephFS, настроят отказоустойчивые multipath-маршруты и оптимизируют параметры RPC-буферов.
Практический опыт инженера: При монтировании NFS-хранилищ внутри контейнеров Docker или Kubernetes Pods всегда используйте automount через systemd или настройте livenessProbe с таймаутом, чтобы супервизор мог вовремя перезапустить зависший контейнер без деградации ноды.

Частые вопросы (FAQ)

Почему df -h зависает намертво при недоступности хотя бы одного NFS шара?

Команда df выполняет системный вызов statfs() на абсолютно всех смонтированных файловых системах по очереди. Если один NFS-сервер недоступен, statfs() зависает в очереди ядра. Используйте df -l (только локальные диски).

Как проверить версию протокола NFS на клиенте?

Выполните команду nfsstat -m или cat /proc/mounts | grep nfs.

Что означает ошибка 'NFS: server requires secure port'?

NFS-сервер требует исходящих запросов только с привилегированных портов (<1024). На сервере добавьте опцию insecure в /etc/exports или уберите noresvport на клиенте.

Как принудительно сбросить кэш атрибутов NFS на клиенте?

Используйте параметры монтирования actimeo=0 или noac (отключает локальный кэш метаданных, заставляя клиент каждый раз запрашивать актуальный размер файла с сервера).