サービスがshutdown.targetと競合しないことの意味

サービスがshutdown.targetと競合しないことの意味

<要約>
現在の Debian 10 Buster とカーネル ntfsd; systemd v241 をベースに NFSv4 のみのファイル サーバーをチューニングしています。nfs-kernel-serverディストリビューションのパッケージの systemd スクリプトは、少し奇妙に感じます。nfs-server.service自体を含むいくつかのサービス定義ファイルには 設定が付属しておりDefaultDependencies=no、systemd.service(5) によると、ユニットは依存関係を自動的に取得しませんConflicts=shutdown.target

[ ] [s]サービス ユニットは、タイプとに対するDefaultDependencies=yes依存関係 [...] を持ちます。これにより、通常のサービス ユニット [...] がシステムのシャットダウン前に正常に終了することが保証されます。Conflicts=Before=shutdown.target

他のsystemdのパッケージで見たものとは異なり、これらはどちらも明示的に提供されていません。コマンド

systemctl show nfs-server.service | egrep '^(Want|Requ|Bind|Bound|Before|After|Confl)'

これは事実であることを確認している。そのような依存関係は存在しない。マニュアルは次のように続けている。

早期起動または遅いシステムシャットダウンに関係するサービスのみ、このオプションを無効にする必要があります。

NFS サーバーはまさにその通りではありません。ネットワークが完全に起動するまでサービスを開始できず、システムのシャットダウンが始まるとすぐに新しい要求の受け入れを停止し、負荷がかかって機能しなくなる可能性があります。

これはパッケージ内の同様の設定を持つ単一のサービスではありませんが、これが私にとって最も心配なことです。私はクラウド設定で単一目的の VM を展開しており、ファイル サーバーには信じられないほどの量の RAM (64-128G) があり、htop(1) が示すように、すべてファイルシステム キャッシュでいっぱいになっている可能性があります。また、これはファイル ストレージ マシンであるため、特にエクスポートされたファイルシステムの ext4 マウント オプションと ¹ でパフォーマンスのために信頼性を少し犠牲にしていることを考えると、マニュアルにあるように、サーバーが「システム シャットダウンの前に正常に終了する」ことをどれほど望んでいるかを表現する言葉が見つかりませんdata=writebacknobarrier<
/要約>

だから私のこの質問を一文にまとめると次のようになります。

システムが実際にシャットダウンすると、Conflicts=Before=の依存関係を持たない systemd サービスはどうなりますか?shutdown.target


¹ これは、クラウド プロバイダーの SLA と一連のパフォーマンス テストの結果に基づいて評価された、十分に検討されたエンジニアリングのトレードオフであり、質問の本質とはまったく関係がありません。

関連情報