AWS EC2を使用しており、EBSボリュームを追加しました。現在、新しいデバイスとしてマウントされています。
MySQLとRedisDBは、データを新しいEBSボリュームに保存し、chkconfig
に登録されます。したがって、chkconfig
サービスを開始する前にボリュームをマウントする必要があります。
ただし、以下のフォーラムで説明されているように、/etc/fstab
に追加したくありません。 https://forums.aws.Amazon.com/message.jspa?messageID=304528#304528
そこで、mount /dev/xvdf /data
に/etc/rc.d/rc.local
を追加し、システムを再起動しました。
しかし、どうやらchkconfig
サービスは/etc/rc.d/rc.local
の前に起動するため、MySQL&Redisの起動は失敗します。
chkconfig
サービスが開始する前に、呼び出されるinitスクリプトをどこに記述できるか知りたいです。
前もって感謝します。
お気づきかもしれませんが、rc.localは通常、ブートプロセス中に実行される最後のスクリプトです。これは、スクリプトのコメントに記載されています。
質問でのchkconfig
の言及から判断すると、CentOS、AmazonのRHELベースのLinux、または別のRed Hat(またはFedora)派生物のいずれかを実行していると思います。その場合は、Cindy @AWSがそのスレッドで言ったことを単に無視することができます。
RHELでのローカルファイルシステムのマウントは、NFS、CIFS(SMB)、またはその他のネットワークベースのファイルシステムではないすべてのファイルシステムをマウントする/etc/rc.sysinitスクリプトによって実行されます。これは、スクリプトで次の行を実行することによって実行されます。
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のいずれにも一致しないすべてのデバイスをマウントするように指示します。それに加えて、fstabのオプションに_netdevが含まれるすべてのデバイスを無視します。
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/mntext4のデフォルト00
この失敗がマウントプロセスをブロックしておらず、OSがデバイスの待機をブロックしていないことがわかるように、単に失敗します。
/etc/init.d/netfsにネットワークベースのファイルシステムのマウントを処理する別のスクリプトがあり、オプションに_netdevが含まれるすべてのファイルシステムがスクリプトによって処理されます。
Ubuntuでデバイスが見つからないという問題があり、指定するために nobootwait
(Unix.SEでは nobootwait and nofail に関するこの質問も参照)を追加する必要がありますデバイスが見つからなくてもOSのブートプロセスが失敗することはありませんが、Ubuntuではmountall(1)によってマウントが実行されます。
Chkconfigに実行する順序を指示できますinit.d
スクリプト内、スクリプト内のコメントを介して。
マウント/アンマウントするinit.dスクリプトを記述し、起動時にMySQLとRedisの前に、シャットダウン時にMySQLとRedisの後に実行します。