SDB:禁用 btrfsmaintenance
目录
情景
希望禁用自动驱动器维护,而采用手动维护。
过程
禁用定期维护功能
在 /etc/sysconfig/btrfsmaintenance
中,你可以通过将以下内容设置为 "none" 来禁用 balance 和 scrub :
BTRFS_BALANCE_PERIOD="none"
BTRFS_SCRUB_PERIOD="none"
在 tumbleweed 和 leap 15.x 中,有一个名为 btrfsmaintenance-refresh.service
的 systemd 单元会在 /etc/sysconfig/btrfsmaintenance
发生更改时(通过 systemd 通路单元 btrfsmaintenance-refresh.path
)被调用。这个单元会自动刷新 systemd timers/corn 事务。
fstrim.timer
正如 /etc/sysconfig/btrfsmaintenance
所提到的那样,有一个不属于 btrfsmaintenance ,名为 fstrim.timer
的部分。要禁用它,执行:
# systemctl disable fstrim.timer # systemctl stop fstrim.timer
卸载 btrfsmaintenance
如果你不需要使用位于 /usr/share/btrfsmaintenance
的 btrfsmaintenance 脚本,你可以直接卸载它:
zypper rm btrfsmaintenance
为了防止它被再次安装:
zypper al btrfsmaintenance
执行手动维护
Balance
"如果有很多已分配但未使用的数据或元数据块,平衡可以回收一些已分配的空间。这是在单设备文件系统上运行 balance 的主要原因。"
使用 openSUSE 默认的分区和默认的 btrfsmaintenance 设置,btrfs-balance.sh 相当于:
btrfs filesystem df / btrfs balance start -dusage=0 / btrfs balance start -v -dusage=5 / btrfs balance start -v -dusage=10 / btrfs balance start -musage=0 / btrfs balance start -v -musage=3 / btrfs filesystem df /
你可以在 /root/bin
目录中添加一个名为 balance 的文件,再赋予它可执行权限:
chmod +x /root/bin/balance
Scrub
"btrfs scrub用于刷新btrfs文件系统,它将从所有设备中读取所有数据和元数据块,并验证校验和。如果有一个正确的副本,它将自动修复损坏的块。"
如果没有 RAID 镜像你的数据,从而提供 "正确的拷贝",刷新命令除了告诉你有一个问题之外,什么也做不了。
在默认设置下,btrfs-scrub.sh 相当于。
btrfs scrub start -Bd /
Trim
/usr/lib/systemd/system/fstrim.service
调用
fstrim -Av
这将 "修剪所有在 /etc/fstab
中提到的、支持丢弃操作的设备上挂载的文件系统"。
"对于大多数桌面和服务器系统来说,合适的修剪频率是每周一次。"