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 中提到的、支持丢弃操作的设备上挂载的文件系统"。

"对于大多数桌面和服务器系统来说,合适的修剪频率是每周一次。"

另见

相关文章

外部链接