SDB:修复 btrfsmaintenance-refresh

跳转至: 导航, 搜索

症状

  1. 在启动过程中,systemd 因为 btrfsmaintenance-refresh.service 错误地创建了新的计时器而重新加载。
  2. 已经挂载的分区又无缘无故地被卸载了。

修改 btrfsmaintenance-refresh.service

供应商版本错误地包含一个安装部分。禁用并创建一个修订的系统版本:

erlangen:~ # systemctl disable btrfsmaintenance-refresh.service
erlangen:~ # systemctl edit --full btrfsmaintenance-refresh.service

删除安装的部分并保存编辑的会话。

检查你的更改

erlangen:~ # systemctl cat btrfsmaintenance-refresh.service
# /etc/systemd/system/btrfsmaintenance-refresh.service
[Unit]
Description=Update cron periods from /etc/sysconfig/btrfsmaintenance

[Service]
ExecStart=/usr/share/btrfsmaintenance/btrfsmaintenance-refresh-cron.sh systemd-timer
Type=oneshot
erlangen:~ # 

检查单元文件的正确状态

注意:btrfsmaintenance-refresh.service 已加载,但当 btrfsmaintenance-refresh.path 加载并激活时,会停止活动。


erlangen:~ # systemctl list-units --all btrfsmaintenance-refresh.*
UNIT                             LOAD   ACTIVE   SUB     DESCRIPTION                                             
btrfsmaintenance-refresh.path    loaded active   waiting Watch /etc/default/btrfsmaintenance                     
btrfsmaintenance-refresh.service loaded inactive dead    Update cron periods from /etc/sysconfig/btrfsmaintenance

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

2 loaded units listed.
To show all installed unit files use 'systemctl list-unit-files'.
erlangen:~ # 

启用 btrfsmaintenance-refresh.path. 检查状态:

erlangen:~ # systemctl enable btrfsmaintenance-refresh.path
erlangen:~ # systemctl list-unit-files btrfsmaintenance-refresh.*
UNIT FILE                        STATE   VENDOR PRESET
btrfsmaintenance-refresh.path    enabled disabled     
btrfsmaintenance-refresh.service static  enabled      

2 unit files listed.
erlangen:~ # 

在启动过程中验证正确的操作

重启机器,然后查看日志:

erlangen:~ # journalctl -b -u btrfs* -o short-monotonic 
-- Logs begin at Sun 2020-03-29 16:41:11 CEST, end at Tue 2020-04-14 21:16:15 CEST. --
[    4.207500] erlangen systemd[1]: Started Watch /etc/sysconfig/btrfsmaintenance.
[   17.512069] erlangen systemd[1]: Started Balance block groups on a btrfs filesystem.
[   17.512182] erlangen systemd[1]: Started Defragment file data and/or directory metadata.
[   17.512293] erlangen systemd[1]: Started Scrub btrfs filesystem, verify block checksums.
erlangen:~ # 

注意: btrfsmaintenance-refresh.service 不会 在启动过程中运行!