コンテキスト
NASとクライアントサーバーという2つのサーバーがあります。どちらもコンパクトなマシン(Raspberry、OLinuXino)で、同じ電源ストリップに接続されています(電源ボタン付き)。
クライアントサーバーは、起動時にNASからNFSボリュームをマウントします。
質問
マルチタブをオンにすると、両方のサーバーが同時に起動します。ただし、クライアントがNFSボリュームをマウントしようとすると、NASではまだ使用できません。
だから手動でインストールする必要があり、自動的にインストールしたいと思います。
私はfstabを使ってDebian Wheezyディストリビューションにボリュームをマウントします。
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を使用してディレクトリがインストールされていることを確認してください。
作成中のbashスクリプト内インストールの場合は、Gilesの回答を使用してsudoersファイルを変更して、cronスクリプトをsudoとして実行できるようにします。パスワードを要求せずにルートで特定のプログラムをどのように実行できますか?。これは設定に応じてオプションのステップです。
クローンジョブを設定します。あなたは2つが欲しいでしょう。まず、定期的にインストールするかどうかを確認し、そうでない場合はインストールすることです。これにより、どちらかが独立して失敗した場合、再びオンラインになります。 2番目は起動後にcronを使用する必要があります。この回答が役に立ちます@ rebootの1分後にCrontab操作が開始されます。
サーバー側から:スクリプトをNFSサービス自体に接続できます。完了時にしばらく待機してから実行するようにサービススクリプトを編集できます。 Bashスクリプトは次の形式に従うことができます。
sleep 60 && my_mount_script.sh
systemdを使用すると待つことができますsystemdは、他のプロセスを再起動/終了または終了する前にコマンドが完了するのを待ちます。これで nfs.service が起動します。交換には、前の部分を削除し、その後のサービス名をnfs.serviceに変更することが含まれます。