私のホームネットワークには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/Foobar
Dockerコンテナからボリュームへのマッピングがあります。したがって、すべての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はすべてを処理します。