後でサーバーが準備されるまでCIFS共有を自動的にマウントするにはどうすればよいですか?

後でサーバーが準備されるまでCIFS共有を自動的にマウントするにはどうすればよいですか?

私のホームネットワークには2つのサーバーがあります。

  • Linuxサーバー。 (現在はsystemdを使用してDebianを実行していますが、これにはDebianに関連するものはないと思います。)
  • NASサーバー。 (ネットワーク接続ストレージ。)

停電後、両方のサーバーの電源が同時にオンになります。しかし、LinuxサーバーはNASサーバーよりも速く起動します。。 Linuxサーバーはネットワークにアクセスでき、CIFS共有をマウントしようとしますが、NASサーバーがまだ準備されていないため失敗します。

NASサーバーの起動に時間がかかる場合でも、Linuxサーバーが自動的にCIFSマウントをマウントできるようにするにはどうすればよいですか? (いくら?仮定しましょうカップル分。 )

現在の構成

Linuxサーバーには次の行/etc/fstab(匿名)があります。

//192.168.XX.XX/Foobar  /mnt/Foobar  cifs  credentials=/etc/fstab-cifs-credentials,rw,uid=1000,gid=1000,nobrl  0  0

また、実行中であり、systemdネットワークsudo systemctl show mnt-Foobar.mount依存関係が自動的に構成されていることも示しています。


Wants=network-online.target
After=system.slice network.target systemd-journald.socket network-online.target remote-fs-pre.target -.mount

journalctlまたは、次のように表示されるエラーメッセージsudo systemctl status mnt-Foobar.mount

mount[544]: mount error(113): could not connect to 192.168.XX.XXUnable to find suitable address.

手動でトリガーしたり、NAS サーバーを起動した後に Linux サーバーを再起動すると、マウントが正常に動作します。

何が必要ですか

完全に放棄する前に、各試行間に少し遅れてインストールを数回やり直すことができるソリューションが必要です。

または、継続的にインストールを再試行するソリューションです。

あるいは、サーバーがまだ準備されていなくても、サーバーが最終的に準備されると信じてマウントが成功したと見なすソリューションです。 (サーバーが準備されていない場合は、数分間すべてのアクセスがブロックされます。)

または、ネットワークファイルシステムをマウントする前に固定のランダム遅延を導入するソリューションです。

ボーナス:サービスの依存関係

NASに保存されているファイルを使用するDockerサービスがいくつかあります。このタイプのDockerサービスには、/mnt/FoobarDockerコンテナからボリュームへのマッピングがあります。したがって、すべてのCIFSマウントが準備されたら、dockerサービスを開始する必要があります。

これらのサービス依存関係を設定することは、別の質問のトピックです。ただし、この問題に対する解決策はDockerの起動依存関係とうまく機能するはずです。

解決策

現在の解決策は、LinuxサーバーにSSHを手動で接続してから再起動するか、共有を手動でマウントすることです。 (そして手動でDockerサービスを再起動してください。)確かに理想的ではなく、あまりにも多くのサーバー管理が必要です。

ベストアンサー1

次のようにfstabに "x-systemd.automount"を追加します。

//192.168.XX.XX/Foobar  /mnt/Foobar  cifs  credentials=/etc/fstab-cifs-credentials,rw,uid=1000,gid=1000,nobrl,x-systemd.automount  0  0

Systemdはすべてを処理します。

おすすめ記事