systemdが提供する多くの機能の中に、不当に忘れられているものがあります。 これは自動マウント機能です。 自動マウントを構成する場合、指定されたディレクトリは、最初のアクセス(より正確には、その時点で)が行われた後にのみマウントされます。
VPNを介したNFS
具体的な例:興味のあるディレクトリがあるリモートサーバーがあります。 このディレクトリをマシンにローカルに配置したい。 アクセスプロトコルはnfsです。 なぜなら 暗号化されていないため、サーバーへのvpnチャネルの使用は合理的なソリューションのように見えます。
同時に、私は外出先でそれをマウントし、しばらくしてからマウントを解除したいので、嘘のネットワークで鈍いnfsによる奇妙な困難を経験することはありません。 マウントタイムアウトは、lsのnfsタイムアウトよりもはるかに人道的なミスです。
仕組み
Systemdには、指定したディレクトリを自動的にマウントできる特別な種類の自動マウントユニットがあります。
重要:自動マウントユニットは「自動マウントのマウントユニット」ではなく、マウントパラメータを持つことはできません。 代わりに、それらは(ディレクトリにアクセスするとき)指定されたディレクトリのマウントユニットを呼び出すだけです。
したがって、構成では:
- マウントオプション、デバイス(またはNFSの場合はサーバー)はマウントユニットで指定されます
- 依存関係とインストールセクションは自動マウントユニットで指定されます
- automount-unitとmount-unitのバインドは、whereパラメーターによって発生します
同じことは、ユニット自体の構造にも見られます。 マウントユニットには[Mount]セクションがあり、そこには多くのパラメーターがあります。 自動マウントユニットにはそのようなセクションはなく、代わりに[Automount]セクションが必要です。このセクションには、Where、DirectoryMode、TimeoutIdleSecなどのいくつかのパラメーターしかありません。
実用例
/etc/systemd/system/media-nfs.mount
:
[単位]
説明= NFS共有
[マウント]
What = server.url.example.com:/ srv / nfs_share
どこ= / media / nfs
タイプ= nfs4
オプション= rw
DirectoryMode = 0755
/etc/systemd/system/media-nfs.automount
:
[単位]
説明= NFS共有
Requires=openvpn@vpn.service
必要= network-online.target
[自動マウント]
どこ= / media / nfs
TimeoutIdleSec = 301
[インストール]
WantedBy = graphic.target
観察:マウントユニットの場合は通常の状態がアクティブ(マウント)である一方、自動マウントの場合はサービス(アクティブ)がアクティブ(実行中)です。
自動マウントがまだ行われていない場合、ステータスは「アクティブ(待機中)」になります。
自動マウントを設定したら、(sudo)systemctl daemon-reloadを実行し、ls / media / nfsを実行する必要があります(上記の例の場合)-nfsのマウントから少し遅れて、リモートサーバー上のファイルの内容が表示されます。