Про монтирование шары CIFS в fstab я уже писал. Здесь всё просто. При загрузке шара монтируется в указанную директорию, все счастливы.
А теперь ложка дёгтя. Перезагружаем сервер, с которого примонтирована шара, а чего бы его и не перезагрузить, вот хочется перезагрузить, сил нет терпеть. И все примонтированные к этому серверу шары на 100500 серверах отваливаются. Бинго! Теперь нужно зайти на все 100500 серверов и смонтировать шару обратно. После неожиданной перезагрузки сервера мы не останемся без работы.
Это не дело. Нам необходимо автоматически монтировать шары, если они отвалились.
Во-первых, есть пакет autofs. Я сначала про него хотел написать, но по какой-то причине через autofs я не смог примонтировать SMB шару через cifs под доменной учётной записью. Через три часа мучений я бросил это дело и в два клика настроил автоматическое монтирование шары с помощью systemd.
Итак, у нас имеется файлик /etc/fstab, в котором при загрузке монтируется SMB шара. Работаю в Red Hat. У кого ещё не смонтировано — монтируйте.
Установка пакета для работы CIFS
CentOS:
yum install cifs-utils
Ubuntu:
apt-get install cifs-utils
Монтирование CIFS через fstab
Создаём файл для хранения логина и пароля. Лучше скрытый.
vim /root/.cifs_bck
Содержимое:
username=v.pupkin password=MySecretPassw0rd domain=ilab.local
Добавляем строку в /etc/fstab:
//10.12.69.11/bck-db /backup/dl2 cifs defaults,uid=oracle,gid=oinstall,credentials=/root/.cifs_bck,file_mode=0600,dir_mode=0700,rw 0 0
Здесь:
- //10.12.69.11/bck-db — путь к монтируемой папке
- /backup/dl2 — локальная папка для монтирования
- cifs — тип файловой системы
- uid=oracle,gid=oinstall — под каким пользователем и группой монтировать
- credentials=/root/.cifs_bck — путь к файлу с логином, доменом и паролем
- rw — чтение/запись
- file_mode=0600,dir_mode=0700 — права на файлы и папки
- 0 — индикатор резервной копии (0 — не используется)
- 0 — порядок проверки раздела (0 — не проверять)
Запись сохранена в fstab. Проверим, что имеется папка /backup/dl2.
ll /backup/dl2
Если папки нет, создадим её.
mkdir /backup/dl2
Монтируем:
mount /backup/dl2
Всё смонтировалось, вижу свой тестовый файлик с названием "123". Демонтируем.
umount /backup/dl2
Автоматическое монтирование CIFS через fstab
Будем автоматически монтировать шару с помощью systemd. Для для этого нам понадобится... systemd. Для systemd можно вручную создавать точки монтирования и настраивать для них так нужное нам автоматическое монтирование, но мы этого делать не будем.
У systemd есть специальный генератор для fstab.
man systemd-fstab-generator
Он парсит файл /etc/fstab и сам создаёт необходимые точки монтирования, достаточно только добавить некоторые параметры:
- x-systemd.automoun — автоматически монтировать через systemd
- x-systemd.device-timeout=60 — таймаут, полезно увеличить для SMB шар AD
- _netdev — монтировать после старта сети
man systemd.mount
Получаем модифицированную строку для fstab:
//10.12.69.11/bck-db /backup/dl2 cifs defaults,x-systemd.automount,x-systemd.device-timeout=60,_netdev,uid=oracle,gid=oinstall,credentials=/root/.cifs_bck,file_mode=0600,dir_mode=0700,rw 0 0
Сохраняем изменённый fstab. Монтируем.
systemctl daemon-reload
systemctl start backup-dl2.automount
systemctl status backup-dl2.automount
Название точек монтирования в systemd формируются по названию директории монтирования. При этом слеши меняются на дефисы. А дефисы на "\x2d". Пробелы на "\x20".
Повторил все те же самые действия на втором сервере и подумал, надо бы протестировать, отмонтировать шару и попытаться обратиться к ней.
Всё отработало нормально.
Команды в помощь
systemctl list-units --all --type=mount
systemctl list-units --all --type=automount
Если монтирование не срабатывает, можно так:
systemctl daemon-reload
systemctl start backup-dl2.mount
systemctl stop backup-dl2.mount
systemctl start backup-dl2.automount
systemctl start backup-dl2.mount