On 20-03-2014 00:41, Sean Greenslade wrote:
Hi, folks. I've been noodling over this rather odd issue I've been having, and I thought I'd get a second opinion on things. I've got a server with four hard disks, set up in two (separate) BTRFS RAID1 mounts. I just recovered from a bout of SATA signalling issues (which BTRFS did a marvellous job of saving my data from), and I'd like to periodically fire off scrubs to ensure my data's OK. If I manually run a scrub:
---------------------------------------------------- $ sudo btrfs scrub start /media/data/ scrub started on /media/data/, fsid 490b8b7c-59c4-45dc-ac63-6a90f0966776 (pid=14434) ----------------------------------------------------
Then things work as they should:
---------------------------------------------------- $ sudo btrfs scrub status /media/data/ scrub status for 490b8b7c-59c4-45dc-ac63-6a90f0966776 scrub started at Wed Mar 19 20:27:14 2014, running for 40 seconds total bytes scrubbed: 12.70GiB with 0 errors
$ sudo btrfs scrub cancel /media/data/ scrub cancelled
$ sudo btrfs scrub status /media/data/ scrub status for 490b8b7c-59c4-45dc-ac63-6a90f0966776 scrub started at Wed Mar 19 20:27:14 2014 and was aborted after 89 seconds total bytes scrubbed: 28.17GiB with 0 errors ----------------------------------------------------
So far, so good. So I made a systemd unit to trigger the scrub:
---------------------------------------------------- $ cat /etc/systemd/system/diskscrub.service [Unit] Description=Disk scrub runner
[Service] Type=oneshot ExecStart=/usr/bin/btrfs scrub start /media/data ----------------------------------------------------
Now, this unit starts fine, and exits immediately as it should, being a oneshot service and given that the btrfs scrub command backgrounds itself (or something? I'm not exactly sure what it does, but it returns immediately). However, the scrub status does not work and the scrub cannot be canceled:
---------------------------------------------------- $ sudo systemctl start diskscrub
$ sudo systemctl status diskscrub diskscrub.service - Disk scrub runner Loaded: loaded (/etc/systemd/system/diskscrub.service; static) Active: inactive (dead)
Mar 19 20:33:38 rat systemd[1]: Starting Disk scrub runner... Mar 19 20:33:38 rat systemd[1]: Started Disk scrub runner. Mar 19 20:33:38 rat btrfs[15221]: scrub started on /media/data, fsid 490b8b7c-59c4-45dc-ac63-6a90f0966776 (pid=15222)
$ sudo btrfs scrub status /media/data/ scrub status for 490b8b7c-59c4-45dc-ac63-6a90f0966776 no stats available total bytes scrubbed: 0.00 with 0 errors
$ sudo btrfs scrub cancel /media/data/ ERROR: scrub cancel failed on /media/data/: not running ----------------------------------------------------
New scrubs cannot be started until the stale/invalid scrub states are deleted (rm -f /var/lib/btrfs/*).
So I'm stumped, here. Anyone have any clue as to what's happening?
Thanks,
--Sean
Just a guess but you might want to change the unit type to simple instead of oneshot. -- Mauro Santos