EC2 - хотите смонтировать до запуска сервиса
Я использую AWS EC2 и добавил дополнительный том EBS. В настоящее время он монтируется как новое устройство.
MySQL & Redis DB хранит свои данные на новом томе EBS, и они регистрируются в chkconfig
, Поэтому мне нужно, чтобы объем был установлен ДО chkconfig
служба запускается.
Но я не хочу добавлять его в мой /etc/fstab
, как сказано на форуме ниже. https://forums.aws.amazon.com/message.jspa?messageID=304528
Итак, я добавил mount /dev/xvdf /data
в моем /etc/rc.d/rc.local
и я перезагрузил свою систему.
Но видимо chkconfig
услуги запускаются ДО /etc/rc.d/rc.local
и поэтому запуск MySQL & Redis завершился неудачно.
Я хочу знать, где я могу написать сценарий инициализации, который называется ДО chkconfig
служба запускается.
Заранее спасибо.
2 ответа
Как вы могли заметить, rc.local обычно является последним скриптом, который выполняется во время процесса загрузки. Об этом говорится в комментариях к сценарию.
Судя по упоминанию chkconfig
в вашем вопросе, я полагаю, вы используете CentOS, Linux на основе RHEL от Amazon или другую производную Red Hat (или Fedora). Если это так, то вы можете просто игнорировать то, что Синди @AWS сказала в этой теме.
Монтирование локальных файловых систем в RHEL выполняется скриптом /etc/rc.sysinit, который монтирует все файловые системы, которые не являются NFS, CIFS (SMB) или какой-либо другой сетевой файловой системой. Это делается путем выполнения следующей строки в скрипте:
action $"Mounting local filesystems: " mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev
Эта строка выполняет mount и дает указание попробовать подключить все устройства, которые не соответствуют ни одному из nfs, nfs4, smbfs, ncpfs, cifs, gfs или gfs2 в качестве типа файловой системы. В дополнение к этому он игнорирует все устройства с _netdev в их опциях в fstab.
Когда mount пытается смонтировать любую файловую систему, которая не существует, она не блокируется, но завершается неудачно со следующим сообщением об ошибке:
# mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs,gfs2 -O no_netdev`
mount: special device /dev/fhsd does not exist
В моем случае /dev/fhsd - это строка в fstab, которая выглядит следующим образом:
/dev/fhsd / mnt ext4 по умолчанию 0 0
Как вы можете видеть, этот сбой не блокирует процесс монтирования, и ОС не будет блокировать ожидание устройства, просто произойдет сбой.
Есть другой сценарий, который заботится о монтировании сетевых файловых систем в /etc/init.d/netfs, и все файловые системы, в параметрах которых есть _netdev, обрабатываются им.
Существует проблема с отсутствующими устройствами в Ubuntu, и вам нужно добавить nobootwait
(также см. этот вопрос о nobootwait и nofail в Unix.SE), чтобы указать, что процесс загрузки ОС не должен завершиться сбоем, если устройство отсутствует, но в Ubuntu монтирование выполняется mountall(1).
Вы можете сказать chkconfig, какой заказ выполнить init.d
сценариев, через комментарий в сценарии.
Напишите сценарий init.d для монтирования / размонтирования, чтобы он выполнялся перед MySQL и Redis при загрузке, а также после MySQL и Redis при завершении работы.