Простой мониторинг software raid (mdraid) на предмет отказавших дисков

При эксплуатации серверов под Linux часто сталкиваюсь с применением софт рейда mdraid в режиме зеркала (raid 1) из двух дисков. Реже — более извращенные soft-raid5 и пр. Однако, почти нигде не настроен какой либо мониторинг данных рейдов и ряд знакомых уже сталкивался с тем, что узнавали о проблемах на сервере только тогда, когда посыпался последний винчестер.

Не всегда есть время или возможность заниматься установкой полноценного мониторинга на сервера, однако простейшую защиту от множественного сбоя дисков предусмотреть стоит. Тем более, что решается она в несколько строк. Структура предлагаемого решения имеет всего один скрипт и вызов его из cron раз в 30 минут (можно реже, но нагрузки он не дает, поэтому лучше пусть проверяет часто). Конечно, скрипт написан в однострочном формате и его без проблем можно запихнуть в сам crontab, но я не рекомендую это делать чтобы при каждом изменении скрипта не приходилось залезать в crontab, да и при внесении туда других записей меньше шансов сломать скрипт.

Итак, сначала нужно узнать сколько и с какими именами у нас есть raid разделов:

[root@serv admin]# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1] sda3[0]
200348160 blocks super 1.0 [2/2] [UU]

md1 : active raid1 sdb2[1] sda2[0]
524224 blocks super 1.0 [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
33554304 blocks super 1.0 [2/2] [UU]

unused devices: <none>
[root@serv admin]#

В конкретном случае имеются три тома — md0, md1, md2.

Далее создаем сам скрипт мониторинга и указываем номера томов для мониторинга (выделил жирным). В моём случае получился следующий скрипт:

[root@server admin]# cat /root/checkraid.sh
#!/bin/bash
for i in 0 1 2; do if [ $(mdadm -D /dev/md$i | grep -e ‘Failed Devices : [1-9]’ -c) -gt 0 ]; then echo -e «mdstat:\n$(cat /proc/mdstat)\n»| mail -r server@example.com -s «!!!RAID FAIL at server1.example.com!!!» admin1@example.com, admin2@example.com; fi; done

[root@server admin]#

Не забываем добавить права на исполнение данному скрипту:

[root@server admin]# chmod +x /root/checkraid.sh

Ну и, конечно же, добавляем на регулярное выполнение в crontab через режим редактирования от пользователя root командой crontab -e. Строчка для добавления будет выглядеть следующим образом:

*/30 * * * * /root/checkraid.sh > /dev/null 2>&1

На этом всё, рекомендую только не забыть проверить доставку писем с сервера на вашу почту. Сделать это можно командой:

[root@server admin]# echo «test ok» | mail -r server@example.com -s «!!!RAID FAIL at server1.example.com!!!» admin1@example.com, admin2@example.com

Спасибо за внимание и не забывайте про бекапы!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *