
文脈
私は 2 台のサーバーを持っています: NAS とクライアント サーバーです。どちらも小型マシン (Raspberry、OLinuXino) で、同じ電源タップ (電源ボタン付き) に接続されています。
クライアント サーバーは起動時に NAS から NFS ボリュームをマウントします。
問題
電源タップをオンにすると、両方のサーバーが同時に起動します。ただし、クライアントが NFS ボリュームをマウントしようとする時点では、NAS からボリュームはまだ利用できません。
そのため、手動でマウントする必要があり、これを自動化したいと考えています。
Debian Wheezy ディストリビューションにボリュームをマウントするには fstab を使用します。
nas.local:/media/myshare /media/myshare nfs defaults 0 0
どう解決するか
そこで、ssh コマンドを呼び出してクライアントに「NFS ボリュームをマウントしてください。準備完了です!」と伝えるスクリプトを NAS に追加できると考えました。
ssh -i idFile login@clientServer 'sudo mount -a'
NAS 側からのようなものです。
質問
そのようなスクリプトを配置するのに最適な場所はどこでしょうか?
NFS フック? コールバックのようなものですか?
追加の質問
それとも、これを行う別のより良い方法がありますか?
答え1
いくつかの理由から、障害から保護しようとします。ボリュームがマウントされているかどうかを確認し、マウントされていない場合はマウントする cron ジョブでこれを実現できます。
使用私は回答を使用してスクリプトを作成しますbash でディレクトリがマウントされているかどうかを確認する [closed]
作成しているbashスクリプトのマウントについては、Gilesの回答を使用してsudoersファイルを変更し、cronスクリプトがsudoとして実行できるようにします。パスワードプロンプトなしで特定のプログラムを root として実行するにはどうすればよいですか?設定によっては、この手順はオプションになる場合があります。
cronジョブを設定します。2つ必要になります。1つ目は、定期的にマウントをチェックし、マウントされていない場合はマウントすることです。こうすることで、どちらかが単独で失敗した場合はオンラインに戻ります。2つ目は、起動後にcronを使用する必要があります。この回答が役立ちます。Crontab ジョブは @reboot の 1 分後に開始されます
サーバー側から: NFS サービス自体にスクリプトを添付できます。サービス スクリプトを編集して、完了後に少しスリープしてから実行するようにできます。bash スクリプトは次の形式になります。
sleep 60 && my_mount_script.sh
systemdを使用すると待つことができますsystemd は、再起動/シャットダウンまたは他のプロセスの終了の前にコマンドが完了するまで待機します。nfs.service を起動します。置き換えには、Before セクションを削除し、after サービス名を nfs.service に変更することが含まれます。