web-dev-qa-db-ja.com

EC2-サービスが開始する前にマウントしたい

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スクリプトをどこに記述できるか知りたいです。

前もって感謝します。

2
ashiina

お気づきかもしれませんが、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)によってマウントが実行されます。

2
zorlem

Chkconfigに実行する順序を指示できますinit.dスクリプト内、スクリプト内のコメントを介して。

マウント/アンマウントするinit.dスクリプトを記述し、起動時にMySQLとRedisの前に、シャットダウン時にMySQLとRedisの後に実行します。

1
ceejayoz