Довольно часто требуется смонтировать Windows-шару при старте сервера и настраивать ее переподключение при потере связи. В Linux такое решение является не самым стабильным и сейчас мы проведем несколько экспериментов и попробуем проработать несколько костылей которые позволят нам добиться стабильной работы такой связки даже в VPN-сетях.
Монтирование SMB-ресурса в fstab
Запись в fstab для монтирования сетевого ресурса выглядит следующим образом.
//10.212.1.1/data_vol/DATA_STORAGE/ /mnt/data_vol cifs user,rw,credentials=/etc/.smbclient,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=2.0 0 0
Вместо использования file_mode и dir_mode можно принудительно задать группу и пользователя от имени которых будет смонтирован сетевой ресурс. Так-же обратите внимание, что мы используем файл /etc/.smbclient в качестве хранилища авторизации.
username=smb
password=xxxSecretPasswordxxx
domain=BDS
Тестирование авто-монтирования
После проверки ряда методов монтирования сетевых дисков я выяснил, что старая опция _netdev больше не работает и для авто-монтирования сетевого ресурса теперь используется опция x-systemd.automount и она работает. А полностью строка подключения выглядит следующим образом.
//10.212.1.1/data_vol/DATA_STORAGE/ /mnt/data_vol cifs user,rw,x-systemd.automount,credentials=/etc/.smbclient,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=2.0 0 0
В списке смонтированных ресурсов мы можем увидеть необычную запись:
systemd-1 on /mnt/data_vol type autofs (rw,relatime,fd=54,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=19614)
В таком режиме нас вполне устраивает и осталось лишь проверить как смонтированный ресурс поведет себя при потере связи и для этого отключаем VPN-соединение.
# systemctl stop xl2tpd.service
После отключения VPN ресурс не размонтировался и так-же отображается в списке смонтированных, но при этом невозможно получить содержимое каталога (что логично).
# ls /mnt/data_vol
ls: cannot access '/mnt/data_vol': Host is down
Возвращаем VPN-подключение
# systemctl start xl2tpd.service
Сетевой ресурс переподключился
# ls /mnt/data_vol
backup
И именно это то поведение которое нас полностью устраивает.