Postfix服务重启后无法启动,提示var.mount被屏蔽,/var挂载调整后故障求助
我们服务器为了提升SSD系统盘的可靠性和寿命,一直在转移高写入负载。之前用了一种策略,后来换成直接挂载分区的新方案,一开始看起来一切正常。
但后来发现我们犯了个错误:忘记删除根目录下的一个符号链接了。这个链接原本是为了不用重启就能给/var提供新磁盘空间而设置的,后来我们已经完成了分区挂载的操作。这个符号链接指向新磁盘的/var目录,而新策略是直接用挂载点来挂载/var。
第一次重启后看似没问题,但用realpath查/var的时候发现它居然指向错误的磁盘!于是我们删除了这个符号链接并再次重启,结果问题就来了:
原本挂载的/var下的邮件文件是完全最新的,这倒是挺意外的。但如果把当前/var覆盖回之前realpath显示的位置,感觉肯定会出问题。更关键的是,Postfix根本启动不了,报错:
Failed to start postfix.service: Unit var.mount is masked.
我们尝试过解除屏蔽,也查了相关的问题,但到现在服务器还是处于故障状态!不过好在新旧两个磁盘的目录结构都完整保留着。
补充信息
之前不知道var.mount是个服务,执行systemctl unmask var.mount后没有任何输出,但之后尝试启动var.mount或者postfix.service时,还是会提示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、boot.mount等,都是把路径的斜杠换成短横线)都显示为masked-runtime disabled状态。目前只试过用systemctl的unmask命令来解除屏蔽,但完全没用,还在继续排查中!
非常需要大家的建议!
备注:内容来源于stack exchange,提问作者Richard T

