
Контекст
У меня два сервера: NAS и клиентский сервер. Они оба небольшие (Raspberry, OLinuXino) и подключены к одному и тому же удлинителю (на котором есть кнопка питания).
Клиентский сервер монтирует тома NFS из NAS при запуске.
Проблема
Когда я включаю удлинитель, оба сервера запускаются одновременно. Но в то время, когда клиент пытается смонтировать тома NFS, они еще не доступны из NAS.
Поэтому мне приходится монтировать их вручную, а я хочу автоматизировать этот процесс.
Я использую fstab для монтирования томов в дистрибутиве Debian Wheezy.
nas.local:/media/myshare /media/myshare nfs defaults 0 0
Как бы я это решил
Поэтому я подумал, что могу добавить скрипт на NAS, который вызывает команду ssh, чтобы сообщить клиенту: «Смонтируйте ваши тома NFS, они теперь готовы!».
Что-то вроде ssh -i idFile login@clientServer 'sudo mount -a'
со стороны NAS.
Вопрос
Где лучше всего разместить такой сценарий?
NFS-хук? Что-то вроде обратного вызова?
Дополнительный вопрос
Или есть другой и лучший способ сделать это?
решение1
Я бы попытался защититься от сбоев по нескольким причинам. Задание cron, которое проверяет, смонтирован ли том, а затем монтирует его, если нет, выполнило бы это.
Использовать Я бы создал сценарий, используя ответ изПроверьте, смонтирован ли каталог с помощью bash [закрыто]
Для монтирования в создаваемом вами скрипте bash используйте ответ Джайлса, чтобы изменить файл sudoers и разрешить запуск скрипта cron как sudo.Как запустить определенную программу от имени root без запроса пароля?. Это может быть необязательным шагом в зависимости от ваших настроек.
Настройте задание cron. Вам понадобится два. Первое — это регулярная проверка монтирования и монтирование, если его нет. Таким образом, если что-то из этого выйдет из строя независимо, оно снова включится. Второе задание должно использовать cron после загрузки. Этот ответ поможет вамЗапуск задания Crontab +1 мин после @reboot
Со стороны сервера: Вы можете прикрепить скрипт к самой службе NFS. Вы можете отредактировать скрипт службы для выполнения после короткого сна после завершения. Скрипт bash может иметь вид:
sleep 60 && my_mount_script.sh
Используя systemd, вы можете подождатьsystemd ждет завершения команды перед перезапуском/выключением или завершением других процессовдля запуска nfs.service. Замены будут включать удаление раздела Before и изменение имени after service на nfs.service