![btrfs-transacti 每 30 秒写入磁盘一次](https://linux22.com/image/1530675/btrfs-transacti%20%E6%AF%8F%2030%20%E7%A7%92%E5%86%99%E5%85%A5%E7%A3%81%E7%9B%98%E4%B8%80%E6%AC%A1.png)
我在 RAID 1 中的 4 个 8 TB Seagate 硬盘上运行带有 btrfs 的 Ubuntu 16.04.2 LTS。即使系统未使用,每 30 秒 btrfs-transacti 也会出现在 iotop 中,速度约为 80 M/s,持续 15 秒。该系统每天仅用于存储一次备份,但全天都有磁盘活动。
我怎样才能找出导致这些写入峰值的原因以及如何阻止它?
答案1
我认为是 btrfs autodefrag。我也遇到过这种情况。这是一个必须在 fstab 中明确设置的选项,但许多人都会这样做并推荐它,尤其是在旋转式锈蚀硬盘上。SSD 并不真正关心写时复制产生的碎片。
然后,如果您的 /var/log 目录位于 btrfs 上,我相信您最终会经常对 systemd 日志文件进行碎片整理。
Fedora 有一件事但我不确定 Ubuntu 是否这样做,那就是它用 标记 /var/log/journal 目录及其所有子目录和文件chattr +C
。'C' 属性将其标记为非写时复制,这意味着 btrfs 读取和写入的方式与 ext4 或 xfs 类似。
使用“C”属性可以防止大量碎片或自动碎片整理写入,但也意味着文件不受校验和的保护。
尽管我不确定您的具体情况,但我猜测您的 /var/log/journal 位于 btrfs 上,设置了 autodefrag,但没有 C 属性。这可以解释一整天的持续写入以及 btrfs-transaction 线程中的大量使用。
答案2
在 Fedora 36 上,我使用了命令iotop -aP
。它向我展示了 Brave 即使在没有任何用户交互和 YouTube 内容的情况下也在进行连续写入。btrfs-transaction
和 Brave 写入似乎相关,因为数字保持接近并且同步更新。当我关闭 Brave 时,btrfs-transacition 数字没有上升……
在正常一天结束时,我的 SSD 使用量约为 5GB 读取和 30+GB 写入!!