私はArchのあるノートブックにNFSパーティションを自動的にマウントするためにsystemdを使用しています。
質問:
ドルフィンがシャットダウンしたときにNFS共有フォルダを開いてネットワークを変更すると、次回起動時に開かれません。
zshやその他のソフトウェアでも同じことが起こる場合があります。
この問題は、通常のネットワーク以外のネットワークに接続していて、VPN を使用していない場合、またはネットワークにまったく接続していない場合にのみ発生します。私のシステムがNFSサーバーにアクセスできる限り、すべてがスムーズに実行されます。
現在の解決策:
現在、私はサイレントインストールユニットを停止してアプリケーションを再起動してこの問題を解決しています。
関連ユニットファイルは次のとおりです。
/etc/systemd/system/pool1.automount
コンテンツ:
[Unit]
Description=Automount NFS pool1
Requires=NetworkManager.service
After=network-online.target
[Automount]
Where=/pool1
TimeoutIdleSec=10min
[Install]
WantedBy=multi-user.target
/etc/systemd/system/pool1.mount
コンテンツ:
[Unit]
Description=Mount NFS pool1
[Mount]
What=192.168.1.5:/pool1
Where=/pool1
Type=nfs
Options=soft,async
共有がある場合にのみ、共有をマウントするようにsystemdに指示するオプションがあると確信していますが、これに関する情報が見つかりませんでした。
NFSサーバーがない場合でも、遅延なくさまざまなネットワークをシームレスに処理できるソリューションを探しています。
修正する
TimeoutSec=5
そのセクションに追加しました[Mount]
が、唯一の違いは、イルカが5秒後にあきらめて自分で閉じるということです。
答え1
問題を再現できます。いくつかの問題があるようです。 NFS自体、systemd、およびネットワークスタックに問題があります。自動マウントは実際に一時的な条件のために設計されていません。おそらくもっとうまく機能するためにハッキングされるかもしれません。それでも…
無差別代入方法を示していますここ。デフォルトでは、自動マウントを使用せず、cronからサーバーを継続的にpingして、状態に応じてマウントまたはマウント解除します。
私の実験の別の方法を使用してインストールとアンインストールnetworkd-dispatcher
を自動化できます。イベントスクリプトはサーバーまたはネットワークを検出し、適切なアクションを実行します。
インストール用のfstab(または必要な方法)を作成します。少なくとも「noauto」に設定してください。
で次のスクリプトを作成します/etc/networkd-dispatcher/routable.d/10-nfs-pool1
。実行ファイルを表示します。
#!/bin/sh
if ping -q -c1 nfs-server >/dev/null; then
mount /pool1
else
umount -f -l /pool1
fi
このファイルをoff.dとno-carrier.dにコピーします。
ln -s ../routable.d/10-nfs-pool1 /etc/networkd-dispatcher/off.d/
ln -s ../routable.d/10-nfs-pool1 /etc/networkd-dispatcher/no-carrier.d/
残念ながら、上記の両方の方法を使用しない場合でも、インストールをアクティブに保ちます。自動マウントの問題は、マウント管理を手動で開始すると、自動マウントが無効になることです。自動マウントに使用できる機能はもっと多いようですが、理解できない場合があります。