SDB:修复 btrfsmaintenance-refresh
症状
- 在启动过程中,systemd 因为 btrfsmaintenance-refresh.service 错误地创建了新的计时器而重新加载。
- 已经挂载的分区又无缘无故地被卸载了。
修改 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 不会 在启动过程中运行!