I have a multi-TB btrfs
made up of virtual disk images that live on NetApp NFS filers. The data are redundant at the NetApp level, so the btrfs
is RAID-0.
In addition to providing redundancy, the NetApps do their own scrubbing for data integrity.
Because there is no redundancy at the btrfs
level, checksum failures aren't automatically correctable, but I can recover damaged files from backups.
Is there value in doing my own scrubbing, or should I rely on the lower layers and save I/O?
There's no value in using your own scrubbing- in fact, it could cause a lower cache hit ratio and reduce performance on production IO.
Everything that you would protect against is already better watched for by the Netapp OS.
Nope, there's no real value in scrubbing on Btrfs level in your setup. Scrubbing does only make sense if you got at least RAID1 up and running, because it's the mechanism for Btrfs to detect defect data on the HDD and to recover it. But in order to recover it the data needs to be there more than once, so scrubbing on RAID0 only detects errors, but will never be able to recover it. If you want to be able to use Btrfs self healing mechanisms coming with scrub you need at least therefore RAID1!
Scrubbing on RAID0 will detect errors, but unable to correct most of them. RAID0 should be only used for fast, throwaway data anyway and not for valuable data sets at all.
Also be aware that running virtual images on Btrfs is one of the use cases where Btrfs will degrade quite fast and fragment as hell, unless you are using nodatacow on the files. And of course using nodatacow kinda contradicts the choice of a COW file system at all.
Meaning: if you need a proven file system for virtual images only, you should choose between Ext4 or XFS instead and ditch Btrfs.