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