data scrubbing is presented to me as a way to mitigate what is refered to as bit rot (on mass storage).The rationale is that data on hard disks can decay/rot and hence get corrupted, and to prevent this hard disk producers, have the discs internally add some additional correction data for each block writen. A bit rot occurs when the data and its acompanying correction/protection data (some sort of error correction code ECC) is unable to correct the data found on a drive.Now, my understanding/information at present is that, over time data (and its added correction info) is lost gradually. This means the longer you wait, the more bit-rot happens internally until cascadingly a point is reached in which no correction is possible (that is the internal added corrected data, does not offer enough info for repair anymore). The data scrubbing seems to help mitigate the bit rot. I imagine it to be idealy internally a reading of all the data of the drive and a checking of the data with the additional error correction data. If while the test the drive encounteres a problem it can correct the error. Also all internally bit-rot bytes (that do not yet couse a real URE) can be set back i a better state.This all being said, how would I trigger the device to do such a data scrubbing? Is it smartctl, or hdparm?With smartctl there are 3 types of test: conveyence, short, long/extended. That only one that really makes sense to me is long, as it obviously would take time to read all the data of the drive to enable a potential repair.A question that targets this with respect to a RAID 1 found here: bit rot detection and correction with mdadmI want to know how to do it, when there is no RAID there, just a plain SATA drive.
how to do data scrubbing (i.e. mass storage bit rot mitigation) in linux/unix?
sata;smartctl