Автоматическое перемонтирование cifs/SMB после короткого прерывания сети
Сервер Windows предоставляет сетевой каталог, называемый данными, по протоколу CIFS/SMB. Папка данных монтируется на клиенте Linux с паролем и аутентификацией пользователя.
Иногда диск отключается, но через секунду снова становится доступным. Я не знаю точно, почему, но, похоже, это из-за сервера Windows или неисправного сетевого компонента.
Как я могу сделать автоматическое переподключение Linux как можно скорее?
4 ответа
Я бы порекомендовал монтировать его через autofs
, Это служба, которая будет монтировать каталог по требованию (например, если вы cd
в это или ls
это) и размонтировать его автоматически после определенного пользователем таймаута.
Установите
autofs
пакет для вашего дистрибутива (кстати, не забудьте включить ваш дистрибутив в ваши вопросы, так как детали ответа могут зависеть от него).Добавьте следующее в /etc/auto.master
/media/[my_server] /etc/auto.[my_server]
куда
/media/[my_server]
является точкой монтирования общего ресурса.Создайте файл /etc/autofs/auto.[my_server] с этой строкой:
[any_name] -fstype=cifs,[other_options] ://[remote_server]/[share_name]
Для получения дополнительной информации смотрите здесь и здесь.
Чтобы добавить к ответу autofs, я рекомендую сделать так, как описано здесь:
https://andrewaadland.me/2017-06-18-autofs-nfs-and-archlinux-key-not-found-in-map-sources/
То есть:
- Сделайте первое поле в
auto.master
всегда/-
. - Используйте полное имя монтирования в
/etc/autofs/auto.server
.
Итак, в моем случае/etc/autofs/auto.master
содержит:
/- /etc/autofs/auto.nas
И/etc/autofs/auto.nas
содержит:
/home/rkitover/nas -fstype=cifs,credentials=/home/rkitover/.nascredentials,uid=1000,gid=1000,iocharset=utf8 ://nas/rkitover
Это работает для меня!
Просто чтобы предложить другую точку зрения: текущее решение делает это с помощью systemd, как описано здесь:
https://anteru.net/blog/2019/automatic-mounts-using-systemd/
systemd + Монтирует со специальными символами
Поскольку в большинстве этих блогов, постов и тому подобного об этом не упоминается в достаточной для меня форме, я хочу отметить несколько ключевых моментов:
- Ключи типа
What=
иWhere=
иметь буквальные значения – без экранирования - Пути в файловой системе должны быть
systemd-escape
д- оболочка будет интерпретировать
\
, поэтому ОДИНАРНАЯ кавычка, чтобы избежать:'my\x20'
- оболочка будет интерпретировать
- Ты должен бежать
sudo systemctl daemon-reload
между изменениями имени/содержания -
sudo journalctl -xe ESCAPEME.mount
даст более качественные журналы, которыеstatus
Пример: /etc/systemd/system/ESCAPEME.mount
/etc/systemd/system/mnt-TrueNAS-TV\x20Shows.mount
:
[Unit]
Description=My CIFs Media Mounter
Requires=network-online.target
After=network-online.service
[Mount]
What=//192.168.1.200/TV Shows
Where=/mnt/TrueNAS/TV Shows
Options=username=my-user,password=my-secret
Type=cifs
[Install]
WantedBy=multi-user.target
Пример: /etc/systemd/system/ESCAPEME.automount
/etc/systemd/system/mnt-TrueNAS-TV\x20Shows.automount
:
[Unit]
Description=My CIFs Media Automount
[Automount]
Where=/mnt/TrueNAS/TV Shows
[Install]
WantedBy=multi-user.target
Больше информации
См. https://unix.stackexchange.com/questions/455094/auto-remount-cifs-share/740886#740886.