checkarray will run parity checks across all your redundant arrays. By
default, it is configured to run on the first Sunday of each month, at 01:06
in the morning. This is realised by asking cron to wake up every Sunday with
/etc/cron.d/mdadm, but then only running the script when the day of the month
is less than or equal to 7. See #380425.
Cron will try to run the check at "idle I/O priority" (see ionice(1)), so that
the check does not overload the system too much. Note that this will only
work if all the component devices of the array employ the (default) "cfq" I/O
scheduler. See the kernel documentation for information on how to verify
and modify the scheduler. checkarray does not verify this for you.
If you manually invoke checkarray, it runs with default I/O priority. Should
you need to run a check at a higher (or lower) I/O priority, then have a look
at the --idle, --slow, --fast, and --realtime options.
'check' is a read-only operation, even though the kernel logs may suggest
otherwise (e.g. /proc/mdstat and several kernel messages will mention
"resync"). Please also see question 21 of the FAQ.
If, however, while reading, a read error occurs, the check will trigger the
normal response to read errors which is to generate the 'correct' data and try
to write that out - so it is possible that a 'check' will trigger a write.
However in the absence of read errors it is read-only.
You can cancel a running array check with the -x option to checkarray.
-- martin f. krafft <email@example.com> Thu, 02 Sep 2010 10:27:29 +0200