Data scrubbing is an error correction technique that uses a background task to periodically inspect main memory or storage for errors, then corrects detected errors using redundant data in the form of different checksums or copies of data. Data scrubbing reduces the likelihood that single correctable errors will accumulate, leading to reduced risks of uncorrectable errors. Data integrity is a high-priority concern in writing, reading, storage, transmission, or processing of the computer data in computer operating systems and in computer storage and data transmission systems. However, only a few of the currently existing and used provide sufficient protection against data corruption. To address this issue, data scrubbing provides routine checks of all inconsistencies in data and, in general, prevention of hardware or software failure. This "scrubbing" feature occurs commonly in memory, disk arrays, s, or FPGAs as a mechanism of error detection and correction. RAIDbioctl and mdadm With data scrubbing, a RAID controller may periodically read all hard disk drives in a RAID array and check for defective blocks before applications might actually access them. This reduces the probability of silent data corruption and data loss due to bit-level errors. In Dell PowerEdge RAID environments, a feature called "patrol read" can perform data scrubbing and preventive maintenance. In OpenBSD, the bioctl(8) utility allows the system administrator to control these patrol reads through the BIOCPATROL ioctl on the /dev/bio pseudo-device; as of 2019, this functionality is supported in some device drivers for LSI Logic and Dell controllers — this includes mfi(4) since OpenBSD 5.8 (2015) and mfii(4) since OpenBSD 6.4 (2018). In FreeBSD and DragonFly BSD, patrol can be controlled through a RAID controller-specific utility mfiutil(8) since FreeBSD 8.0 (2009) and 7.3 (2010). The implementation from FreeBSD was used by the OpenBSD developers for adding patrol support to their generic bio(4) framework and the bioctl utility, without a need for a separate controller-specific utility.
Nicolas Jean Philippe Guex, Murielle Bochud, Cristian Carmeli, Aurélien Thomas, Tiziana Caputo
David Atienza Alonso, Andreas Peter Burg, Miguel Peon Quiros, Andrea Bonetti, Martino Ruggiero, Benoît Walter Denkinger, Flavio Ponzina, Soumya Subhra Basu, Szabolcs Balási
Marguerite Marie Nathalie Delcourt