Hi all,
I am thinking of turning on btrfs-scrub but wanted to limit IOReadBandwidthMax as per the wiki to not overheat my NVMe drive. I created /etc/systemd/system/btrfs-scrub@.d/override.conf with the following content:
[Service]
IOReadBandwidthMax='/dev/disk/by-uuid/<UUID from fstab> 1K'
I figured with such a low number I could make sure the read was slow and the temp shouldn’t climb that much, but it quickly climbs regardless of the number I put in there. My thoughts are one: I really don’t understand how IOReadBandwidthMax works and two I should use something different other than by-uuid?
BTW I’m testing this by running systemctl start btrfs-scrub@var-log which is one my subvolumes.
Also if I understand scrub correctly once I have this configured correctly I should only have to do the root subvolume which would be btrfs-scrub@- is that correct as well?
Best way to not overheat your drive is to run the scrub when the system is idle. I use btrfsmaintenance (in the AUR, Github site is here: https://github.com/kdave/btrfsmaintenance), schedule btrfs scrub and btrfs balance once per month, on all BTRFS-mounted devices. I’ve never had any errors reported related to drive temps getting out of hand.
After more reading and experimentation I finally have the working. First I had to create the drop-in for for the specific mount point, btrfs-scrub@- I also had the syntax for IOReadBandwidthMax incorrect, I was putting the entry in quotes and apparently you don’t need to add quotes. I also changed the reference from by-uuid to by-path and referenced the partition path.