You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

系统首次重启时逻辑卷卸载失败及/var/log数据丢失问题排查与解决咨询

系统首次重启时逻辑卷卸载失败及/var/log数据丢失问题排查与解决咨询

我遇到了一个奇怪的系统问题:在我的系统中,多个逻辑卷是在systemd启动完成后才创建、挂载并添加到/etc/fstab中的。

  • 系统首次重启时,关机过程中会出现大量卸载失败的情况
  • 但在后续的重启中,这个问题完全消失了

我猜测首次和后续重启的行为差异,可能是因为只有首次重启时,systemd-fstab-generator没有生成对应的*.mount片段。目前我最关心的是解决/var/log的卸载失败问题,因为这已经导致了数据丢失。

已尝试的操作

我给systemd-journal-flush.service添加了override配置:

[Unit]
PartOf=var.mount var-log.mount

[Service]
ExecStop=/usr/local/bin/debugger.sh

同时写了一个调试脚本/usr/local/bin/debugger.sh,用来检查是否有打开的文件描述符:

#!/bin/sh

date > /root/out
echo "=============" >> /root/out
fuser -m /var/log >> /root/out
echo "=============" >> /root/out
lsof | grep /var/log >> /root/out
echo "===============" >> /root/out
ps aux  >> /root/out

故障现象

即使做了上述修改,首次重启时卸载仍然失败,后续重启正常。关机时的错误日志如下:

[FAILED] Failed unmounting /var/crash/kernel.
[FAILED] Failed unmounting /var/lib/systemd/coredump.
[FAILED] Failed unmounting /var/log/audit.
[FAILED] Failed unmounting /var/sonic.
[FAILED] Failed unmounting /var/tmp.
[  OK  ] Stopped target Swap.
Unmounting /mnt/sftp...
Unmounting /var/crash...
[FAILED] Failed unmounting /var/crash.
[  OK  ] Stopped Flush Journal to Persistent Storage.
Unmounting /var/log...
[FAILED] Failed unmounting /var/log.

调试结果

从调试脚本的输出来看:

  • lsof和fuser检查/var/log的结果都是空的,没有发现任何进程在使用这个挂载点
  • ps输出里没有明显可疑的进程,但有一个处于**D状态(不可中断睡眠)**的umount进程:
    root      119120  0.0  0.0   6136   876 ?        D    16:02   0:00 /bin/umount /mnt/sftp -c
    

我的疑问

  • 当在运行时添加/etc/fstab条目时,我是不是漏掉了什么优雅处理的步骤?有没有特定的方法可以通知systemd生成对应的*.mount和systemd-fsck@*片段?
  • 如果没有进程在使用挂载点,还有什么原因会导致卸载失败?该如何进一步调试?
  • 有没有办法解决数据丢失的问题?比如添加一个服务来执行延迟卸载(lazy umount)或者强制卸载是否可行?

备注:内容来源于stack exchange,提问作者m.divya.mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:23:01