Postfix 服务原本正在运行,但重启后显示“无法启动 postfix.service:单元 var.mount 被屏蔽”。

Postfix 服务原本正在运行,但重启后显示“无法启动 postfix.service:单元 var.mount 被屏蔽”。

在此服务器系统上,为了保证可靠性和寿命,我们一直在卸载高写入负载的 SSD 系统“磁盘” /,并且遵循一个策略,我们转向了一个新的策略,一切似乎都正常。

然而,我们发现我们犯了一个错误,忘记删除 中的符号链接/。该链接的目的是避免必须重新启动并提供分区,我们后来已经这样做了。因此,该链接指向树的新磁盘空间/var。新策略仅使用 的挂载点/var。我们重新启动后,一切似乎都正常。但如果不删除符号链接,那就很奇怪了:一切似乎都正常工作,但如果删除realpath中的符号链接/var,它似乎在错误的磁盘上?!

因此,我们删除了symlink并重新启动,并删除了符号链接,这时事情就出错了。

预期安装的邮件文件/var已经完全更新,这令人惊讶。因此,/var用以前的位置(据说的位置)覆盖realpath当前位置似乎是一个坏主意。但是,Postfix无法启动!

它说:

Failed to start postfix.service: Unit var.mount is masked.

我尝试过揭露真相,也阅读并考虑了这个问题这个,也。

到目前为止,我们处于“系统瘫痪”的情况!

当然,我们的两个磁盘树仍然完好无损!

要求提供更多数据

我认为 var.mount 是一种服务 - 直到现在才知道,但是:

  1. systemctl unmask var.mount静默完成。后续尝试启动var.mountpostfix.service重复有关被屏蔽的原始错误消息。

  2. 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不开心,但是现在至少这个问题已经解决了!

相关内容