Mdadm check - запланированные проверки
Сегодня заметил, что на одном из серверов, скопилось кучу запросов в БД. И это было странно, т.к. нагрузка на сайт была не значительная. Т.к. я недавно там восстанавливал один из дисков (Hetzner и замена диска), то первое о чем я подумал, что он продолжил сыпаться, однако проверив /proc/mdstat я заметил, что всего лишь идет проверка, которая и конкретно замедляет i/o операции диска..
Вот так выглядит эта картина:
Не особо веселая ситуация, т.к. я сам не запускал такой проверки, то предположил что команда проверки прописана где-то в системе. Быстрый взгляд в обычные места обитания, выявил такую команду в /etc/cron.d/mdadm
Разумеется, мне это очень мешает, поэтому я решил отключить такую еженедельную проверку, делается это так:
1 2 3 |
$ dpkg-reconfigure mdstat |
Далее меняем нужные параметры, в частности, проверка отключается тут:
После этого, я сново проверил /etc/cron.d/mdadm на предмет наличия команды запуска, к сожалению она осталась, поэтому я просто отредактировал файл и закомментировал её.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# cron.d/mdadm -- schedules periodic redundancy checks of MD devices # # Copyright © martin f. krafft <madduck@madduck.net> # distributed under the terms of the Artistic Licence 2.0 # # By default, run at 00:57 on every Sunday, but do nothing unless the day of # the month is less than or equal to 7. Thus, only run on the first Sunday of # each month. crontab(5) sucks, unfortunately, in this regard; therefore this # hack (see #380425). #20 1 1 * * root if [ -x /usr/share/mdadm/checkarray ]; then /usr/share/mdadm/checkarray --cron --all --i$ |
Разумеется после этих действий проверка которая уже запущена не остановится, а ждать возобновления нормальной работы 50 часов мне не хотелось, поэтому я попросту перезагрузил сервер. После чего, все заработало так, как и ожидалось.
--[добавлено 19 июня 2018]--
Список опций checkarray
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
$ /usr/share/mdadm/checkarray -h checkarray -- MD array (RAID) redundancy checker tool Copyright © martin f. krafft <madduck@debian.org> Released under the terms of the Artistic Licence 2.0 Usage: checkarray [options] [arrays] Valid options are: -a|--all check all assembled arrays (ignores arrays in command line). -s|--status print redundancy check status of devices. -x|--cancel queue a request to cancel a running redundancy check. -i|--idle perform check in a lowest scheduling class (idle) -l|--slow perform check in a lower-than-standard scheduling class -f|--fast perform check in higher-than-standard scheduling class --realtime perform check in real-time scheduling class (DANGEROUS!) -c|--cron honour AUTOCHECK setting in /etc/default/mdadm. -q|--quiet suppress informational messages (use twice to suppress error messages too). -h|--help show this output. -V|--version show version information. Examples: checkarray --all --idle checkarray --quiet /dev/md[123] checkarray -sa checkarray -x --all Devices can be specified in almost any format. The following are equivalent: /dev/md0, md0, /dev/md/0, /sys/block/md0 You can also control the status of a check with /proc/mdstat file. |
Описание работы checkarray ( /usr/share/doc/mdadm/README.checkarray)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
checkarray notes ================ 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[0] for information on how to verify and modify the scheduler. checkarray does not verify this for you. 0. http://www.kernel.org/doc/Documentation/block/switching-sched.txt 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 <madduck@debian.org> Thu, 02 Sep 2010 10:27:29 +0200 |
--[добавлено 08 июня 2020]--
Запустить / Остановить проверку CentOS можно так
1 2 3 4 5 |
$ echo "check" > /sys/block/md0/md/sync_action $ echo "idle" > /sys/block/md0/md/sync_action $ echo "frozen" > /sys/block/md0/md/sync_action |
- check = запуск проверки
- idle = остановка, однако возможен перезапуск.
- frozen = остановка и блокировка перезапуска. В этом режиме, проверка продолжиться с того же места при следующей перезагрузке.
Если нужно перезапустить при следующем запуске, с начала, то делаем так
1 2 3 4 |
$ echo none > /sys/block/md0/md/resync_start $ echo idle > /sys/block/md0/md/sync_action |
Отключить или изменить расписание можно тут
1 2 3 4 5 6 |
$ nano /etc/cron.d/raid-check # Run system wide raid-check once a week on Sunday at 1am by default # 0 1 * * Sun root /usr/sbin/raid-check |
Author: | Tags: /
| Rating:
6 comments.
Write a comment