SDB:禁用 btrfsmaintenance
情况
希望禁用自动驱动器维护,而选择手动维护。
流程
禁用计划维护
在 /etc/sysconfig/btrfsmaintenance 中,您可以将以下内容设置为“none”以禁用平衡和擦除:
BTRFS_BALANCE_PERIOD="none"
BTRFS_SCRUB_PERIOD="none"
对于 Leap 15+ 和 Tumbleweed,有一个 systemd 单元 btrfsmaintenance-refresh.service,它会在更改 /etc/sysconfig/btrfsmaintenance 时被调用(通过 systemd 路径单元 btrfsmaintenance-refresh.path)。此单元会自动刷新 systemd 定时器/cron 作业。
fstrim.timer
如 /etc/sysconfig/btrfsmaintenance 中所述,还有 fstrim.timer,它不是 btrfsmaintenance 的一部分。要禁用它:
# systemctl disable fstrim.timer # systemctl stop fstrim.timer
卸载 btrfsmaintenance
如果您不想使用位于 /usr/share/btrfsmaintenance 的 btrfsmaintenance 脚本,您可以简单地卸载:
zypper rm btrfsmaintenance
为了防止它被重新安装:
zypper al btrfsmaintenance
执行手动维护
平衡
"如果有很多已分配但未使用的的数据或元数据块,平衡可能会回收一部分已分配的空间。这是在单个设备文件系统上运行平衡的主要原因。"
使用默认的 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 /
您可以将其添加到名为“balance”的文件中,位于 /root/bin 目录中,并运行以下命令使其可执行:
chmod +x /root/bin/balance
擦除
"btrfs scrub 用于擦除 btrfs 文件系统,它将读取所有设备上的所有数据和元数据块并验证校验和。如果可用正确的副本,它将自动修复损坏的块。"
如果没有 RAID 镜像您的数据,从而提供该“正确副本”,擦除命令除了告诉您存在问题之外,什么也做不了。
使用默认设置,btrfs-scrub.sh 等效于:
btrfs scrub start -Bd /
修剪
/usr/lib/systemd/system/fstrim.service 调用:
fstrim -Av
这将“修剪 /etc/fstab 中提及的,且设备支持 discard 操作的所有已挂载的文件系统”。
"对于大多数桌面和服务器系统,每周一次的修剪频率就足够了。"