![Postfix 服务原本正在运行,但重启后显示“无法启动 postfix.service:单元 var.mount 被屏蔽”。](https://linux22.com/image/790386/Postfix%20%E6%9C%8D%E5%8A%A1%E5%8E%9F%E6%9C%AC%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E9%87%8D%E5%90%AF%E5%90%8E%E6%98%BE%E7%A4%BA%E2%80%9C%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8%20postfix.service%EF%BC%9A%E5%8D%95%E5%85%83%20var.mount%20%E8%A2%AB%E5%B1%8F%E8%94%BD%E2%80%9D%E3%80%82.png)
在此服务器系统上,为了保证可靠性和寿命,我们一直在卸载高写入负载的 SSD 系统“磁盘” /
,并且遵循一个策略,我们转向了一个新的策略,一切似乎都正常。
然而,我们发现我们犯了一个错误,忘记删除 中的符号链接/
。该链接的目的是避免必须重新启动并提供分区,我们后来已经这样做了。因此,该链接指向树的新磁盘空间/var
。新策略仅使用 的挂载点/var
。我们重新启动后,一切似乎都正常。但如果不删除符号链接,那就很奇怪了:一切似乎都正常工作,但如果删除realpath
中的符号链接/var
,它似乎在错误的磁盘上?!
因此,我们删除了symlink
并重新启动,并删除了符号链接,这时事情就出错了。
预期安装的邮件文件/var
已经完全更新,这令人惊讶。因此,/var
用以前的位置(据说的位置)覆盖realpath
当前位置似乎是一个坏主意。但是,Postfix
无法启动!
它说:
Failed to start postfix.service: Unit var.mount is masked.
到目前为止,我们处于“系统瘫痪”的情况!
当然,我们的两个磁盘树仍然完好无损!
要求提供更多数据
我认为 var.mount 是一种服务 - 直到现在才知道,但是:
systemctl unmask var.mount
静默完成。后续尝试启动var.mount
或postfix.service
重复有关被屏蔽的原始错误消息。systemctl status var.mount
说:
systemctl status var.mount ● var.mount Loaded: masked (Reason: Unit var.mount is masked.) Active: active (mounted) since Sat 2023-10-28 12:06:09 PDT; 5h 19min ago Where: /var What: /dev/sda1 CPU: 2ms CGroup: /system.slice/var.mount
Notice: journal has been rotated since unit was started, output may be incomplete.
根据我在下面评论中的疑问,我进行了网络搜索,发现本文,因此我运行了以下命令:
# systemctl list-unit-files | grep masked
-.mount masked-runtime disabled
boot.mount masked-runtime disabled
...所有挂载都采用与 boot.mount 完全相同的形式,只是其他挂载名称中的斜杠被破折号代替。
到目前为止,取消屏蔽的尝试都没有成功,但我只使用 systemctl 的 unmask 命令......
...仍在深入研究!
非常欢迎建议!
答案1
我在网上搜索了“ masked-runtime
”,结果找到了... (鼓声)systemctl
手册页?!哇哦,谁会想到 MAN 页面上会有答案呢?
这让我了解了这个systemctl
选项--runtime
,当我在挂载点上的 unmask 命令上使用它时,我就能以postfix
通常的方式启动!好极了!
# systemctl unmask var.mount --runtime
从那里开始,我只是以postfix
通常的方式开始 - 使用另一个systemctl
命令!
现在,postfix
不开心是因为dovecot
不开心,但是现在至少这个问题已经解决了!