< TL;DR >
\n我正在基于当前的 Debian 10 Buster 和内核 ntfsd 调整仅限 NFSv4 的文件服务器;系统 v241。该nfs-kernel-server
发行版中的软件包的 systemd 脚本让我觉得有点奇怪。根据 systemd.service(5),一些服务定义文件(包括其nfs-server.service
本身)附带设置DefaultDependencies=no
,以便该单元不会自动获取依赖项:Conflicts=shutdown.target
\n\n[使用
\nDefaultDependencies=yes
][s]服务单元将具有类型Conflicts=
和Before=
上的依赖性[...]shutdown.target
。这些确保在系统关闭之前正常服务单元被彻底终止。
与我在其他 systemd 自己的软件包中看到的不同,这些都没有明确提供。命令
\nsystemctl show nfs-server.service | egrep '^(Want|Requ|Bind|Bound|Before|After|Confl)'\n
Run Code Online (Sandbox Code Playgroud)\n证实这实际上是正确的:不存在这样的依赖关系。手册继续,
\n\n\n只有涉及早期启动或延迟系统关闭的服务才应禁用此选项。
\n
NFS 服务器恰恰不是这样,因为在网络完全启动之前它无法开始提供服务,并且一旦系统开始关闭,它就应该停止接受新请求并在负载下停止。
\n这不是软件包中具有类似设置的单个服务,但这一项是我最担心的。我正在云设置中推出单一用途的虚拟机,文件服务器可能拥有大量的 RAM (64-128G),所有这些都被文件系统缓存塞满了,如 htop(1) 所示。由于这是一台文件存储机器,我无法用言语来表达我多么希望服务器,引用手册, \xe2\x80\x9c 在系统关闭之前干净地终止,\xe2\x80\x9d 特别是鉴于我用导出文件系统的 ext4 挂载选项data=writeback
和\xc2\xb9牺牲了一点可靠性来换取性能nobarrier
。
\n</ TL;DR >
所以我的问题归结为一句话是:
\n当系统实际上关闭时,不具有Conflicts=
和Before=
依赖性的systemd 服务会发生什么情况?shutdown.target
\xc2\xb9 这是一个经过深思熟虑的工程权衡,根据云提供商的 SLA 和一系列性能测试的结果进行评估,并且与问题的本质完全无关。
\n 归档时间: |
|
查看次数: |
1164 次 |
最近记录: |