Вопрос или проблема
Используя последнюю версию Ubuntu Server: Ubuntu 20.04.1 LTS, я смог успешно смонтировать SMB-общий том с локального роутера Fritz Box, используя эту команду:
mount -t cifs //fritz.box/fritz.nas/wd -o rw,vers=3,username=user,password=password,workgroup=WORKGROUP
Права точки монтирования:
drwxr-xr-x 2 root root
Права тестового файла, скопированного в диск после монтирования:
-rwxr-xr-x 1 root root 4 Aug 7 13:05 test.txt
Однако, когда я пытаюсь просмотреть содержимое файла:
test.txt: Stale file handle
Редактирование также выдает [Permission Denied]
Вывод DMESG после попытки прочитать файл:
[14540.364844] CIFS VFS: bogus file nlink value 0
Я пробовал различные разрешения, пользователей, параметры монтирования и разные версии CIFS, но все с тем же результатом.
Я не могу вернуться к SMBv1, так как общая папка его не поддерживает.
Общая папка монтируется на других системах (например, MacOSX) без проблем, и я могу читать/записывать.
В конце концов, я нашел эту страницу на немецком языке:
https://debianforum.de/forum/viewtopic.php?t=176154
Решение заключается в добавлении параметра noserverino:
mount -t cifs //fritz.box/fritz.nas/wd -o rw,noserverino,username=user,password=password,workgroup=WORKGROUP
Из man mount.cifs:
Клиент генерирует номера inode самостоятельно, вместо использования фактических номеров с сервера.
Полная команда монтирования в /etc/fstab с указанным пользователем:
//fritz.box/fritz.nas/wd /home/user/wd cifs rw,noserverino,username=user,password=password,uid=user,gid=user,workgroup=WORKGROUP 0 0
Убедитесь, что владелец точки монтирования установлен:
chown user:user /home/user/wd/
Извините, это довольно старая запись, но у меня такая же проблема: smb-общая папка из FritzBox 7530, raspberry pi монтирует общую папку и
raspberrypi kernel: [79003.461575] CIFS: VFS: bogus file nlink value 0
заполняет syslog.
У меня нет проблем с доступом к файлам в этой общей папке.
Просто много строк в логах.
Я пробовал приведенное выше решение, но оно не решает мою проблему.
Ответ или решение
Когда вы сталкиваетесь с ошибкой "Stale file handle" при монтировании сети CIFS/SMB, это может быть крайне неприятной проблемой, особенно в среде, где требуется надежный доступ к файлам. В данном случае речь идет о проблеме, возникающей при монтировании сетевого накопителя с роутера Fritz Box на сервере Ubuntu 20.04.1 LTS. Причиной данной ошибки может быть ряд факторов, и для ее устранения потребуется тщательный анализ и изменение конфигурации.
Теория
Основной причиной возникновения ошибки "Stale file handle" при работе с CIFS/SMB-сетевыми дисками является некорректная работа с инодами (inode). Иноды — это уникальные идентификаторы файлов в файловой системе. Обычно клиент CIFS использует иноды, предоставляемые сервером. Однако, если сервер (в данном случае Fritz Box) не поддерживает корректную работу с инодами по протоколу, то клиент не сможет получить корректный идентификатор, что и вызывает ошибку "Stale file handle".
Пример
В предоставленном примере была предпринята попытка монтировать сетевой ресурс с параметрами:
mount -t cifs //fritz.box/fritz.nas/wd -o rw,vers=3,username=user,password=password,workgroup=WORKGROUP
Несмотря на успешное монтирование, при доступе к файлам возникала ошибка "Stale file handle". Плюс, в системном журнале (dmesg) появлялось уведомление о "bogus file nlink value 0".
Применение
Чтобы исправить эту ошибку, было предложено использовать параметр noserverino
при монтировании:
mount -t cifs //fritz.box/fritz.nas/wd -o rw,noserverino,username=user,password=password,workgroup=WORKGROUP
Ключ noserverino
говорит клиенту CIFS самостоятельно генерировать иноды вместо использования серверных. Это может решить проблему, если сервер неправильно сообщает иноды или если сервер CIFS, как в случае с некоторыми моделями Fritz Box, не поддерживает иноды должным образом.
Кроме того, важно корректно настроить права доступа к точке монтирования и использовать правильные учетные данные:
chown user:user /home/user/wd/
В таком подходе важна настройка uid
и gid
для указания пользователя, который будет владеть смонтированной файловой системой. Это особенно важно, так как неправильно настроенные права доступа могут стать причиной "Permission Denied".
Другие аспекты
Однако, если эта стратегия не решает проблему, как упоминает пользователь Raspberry Pi в примере, следует учитывать дополнительные аспекты:
-
Версия SMB: Некоторые роутеры или сетевые устройства могут иметь ограниченную поддержку различных версий протокола SMB. Параметры
vers=2.0
илиvers=3.0
могут быть полезными, если сервер поддерживает эти версии. -
Обновление прошивки устройства: Fritz Box, как и многие другие сетевые устройства, периодически получает обновления прошивки, которые могут содержать исправления для проблем с поддержкой протоколов. Проверка и установка обновления прошивки может быть полезной.
-
Проверка системных журналов: dmesg и syslog могут предоставлять полезную информацию о причине ошибки. Просмотр подробных логов и поиск в них специфичных сообщений об ошибках может дать дополнительные подсказки.
-
Изоляция проблемы: Для исключения аппаратных неисправностей или специфичных для устройства проблем можно попробовать подключиться к сетевому ресурсу с другого устройства или операционной системы. Это поможет определить, является ли проблема специфичной для Ubuntu или Raspberry Pi.
-
Документация и Сообщество: Изучение документации по Fritz Box и обсуждений на форумах может открыть известные проблемы и пути их решения. Обращение к официальной поддержке может также предоставить дополнительные ресурсы.
Заключение
Вопросы, связанные с "Stale file handle" в среде CIFS/SMB, требуют комплексного подхода и могут отличаться в зависимости от аппаратного устройства. Понимание того, как работают иноды в контексте клиент-серверной архитектуры, ключ к решению подобных проблем. Применение рекомендаций, таких как использование noserverino
, может стать точкой отправления для устранения возникающей ошибки, но каждый случай требует индивидуального анализа и подхода.