SystemdDoctor
служба не работает nfs монтирование

NFS: Stale file handle

Сообщение Stale file handle означает, что клиент держит идентификатор файла, который сервер больше не признаёт: каталог переэкспортировали, файл удалили и создали заново, или сервер перезапустили с другими настройками.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Каталог переэкспортирован на сервере

    Применение нового описания ресурсов меняет идентификаторы. Клиенты с открытыми файлами получают отказ.

  2. Файл удалён и создан заново на сервере

    Процесс, держащий прежний файл открытым, обращается к тому, чего больше нет.

  3. Сервер перезапущен без сохранения состояния

    После перезапуска сервер может не признать прежние идентификаторы, если экспорт настроен без постоянного идентификатора.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Текущие сетевые монтирования.

findmnt -t nfs4,nfs -o TARGET,SOURCE,OPTIONS

Сообщения ядра о состоянии клиента NFS.

journalctl -k -b --no-pager | grep -i nfs | tail -10

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Каталог переэкспортирован на сервере
Почему происходит
Применение нового описания ресурсов меняет идентификаторы. Клиенты с открытыми файлами получают отказ.
Как проверить
Посмотрите монтирование и попробуйте перемонтировать.
findmnt -t nfs4,nfs -o TARGET,SOURCE
sudo ls /mnt/share 2>&1 | head -3
Как исправить
Перемонтируйте каталог на клиенте. Чтобы это не повторялось, задайте на сервере постоянный идентификатор экспорта.
sudo umount -l /mnt/share && sudo mount /mnt/share
2. Файл удалён и создан заново на сервере
Почему происходит
Процесс, держащий прежний файл открытым, обращается к тому, чего больше нет.
Как проверить
Посмотрите, кто держит файл.
sudo fuser -vm /mnt/share 2>&1 | head
Как исправить
Перезапустите службу, которая держит файл: она откроет новый.
3. Сервер перезапущен без сохранения состояния
Почему происходит
После перезапуска сервер может не признать прежние идентификаторы, если экспорт настроен без постоянного идентификатора.
Как проверить
Посмотрите настройки экспорта на сервере.
sudo exportfs -v 2>/dev/null | head
Как исправить
Задайте постоянный идентификатор экспорта: тогда перезапуск сервера не будет ломать клиентов.

Пример вывода

Каталог переэкспортирован, клиент держит прежний идентификатор. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

myapp[1200]: error: open /mnt/share/data.db: stale file handle
kernel: nfs: server nfs.example.internal error: fileid changed

Связанные ошибки

Где встречается чаще всего

Источники

  • exports(5)
    Параметр fsid и постоянные идентификаторы экспорта.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено применением нового описания ресурсов при открытых файлах на клиенте.
    собственная проверка, systemd 255
    сверено 15 сентября 2026