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 при завершении работы.

Другие вопросы по тегам