обзор
Такие программы, как «mdadm» (для управления программным RAID-массивом) и «Палимпсест-дисковая утилита» (используемая на Ubuntu LiveCD), используют информацию S.M.A.R.T, чтобы сообщить вам, когда диск близок к неудаче или сбой. Однако на безголовом сервере (без GUI) нет службы, которая сообщит вам о ожидающей обреченности, пока не стало слишком поздно. Более того, как вы узнали об этом без ручного входа на сервер?
Этот сценарий, когда он запускается один раз в день с помощью cron, будет предупреждать, если какой-либо из жестких дисков системы с жесткими дисками достиг предела, который преднамеренно ниже, чем порог «диск является плохим», и отправляет предупреждение администратору машины.
Предпосылки и предположения
- Вы уже установили поддержку электронной почты для сервера, используя руководство «Как настроить оповещения по электронной почте в Linux».
- Вы используете систему на базе Debian.
- Вы не используете аппаратный RAID-контроллер *.
- Вы увидите, что я использую VIM в качестве редактора, это только потому, что я привык к этому … вы можете использовать любой другой редактор, который вам нужен.
* Потому что очень возможно, что аппаратный RAID-контроллер блокирует доступ системы к этой информации.
Настроить
Установите пакет «smartmontools», который считывает информацию S.M.A.R.T с контроллера жесткого диска и представляет его нам.
sudo aptitude install smartmontools
Создайте сценарий монитора:
sudo vim /root/smart-monitor.sh
Сделайте это довольным:
#!/bin/bash ########Email function######## email_admin_func() { echo 'To: [email protected]' > $temp_email_file echo 'From: [email protected]' >> $temp_email_file echo 'Subject: S.M.A.R.T monitor Threshold breached' >> $temp_email_file echo '' >> $temp_email_file echo -e $1 >> $temp_email_file /usr/sbin/ssmtp -t < $temp_email_file echo 'Sent an Email to the Admin' }
smartc_func() { /usr/sbin/smartctl -A /dev/$1 | grep Reallocated_Sector_Ct |tr -s ' '|cut -d' ' -f11 }
########End of Functions########
########Set working parameter######## temp_email_file=/tmp/smart_monitor.txt allowed_threshold=5 #set the amount of bad sectors your willing to live with, recommended 5.
########Engine######## for i in sda sdb; do # Add or subtract disk names from this list as appropriate for your setup. if [ '`smartc_func $i`' -ge $allowed_threshold ]; then echo Emailing the Administrator email_admin_func 'One of the HDs on '`hostname`', has reached the upper threshold limit!!! nThe threshold was set to:$allowed_threshold and the $i disk status was: '`smartc_func $i`'' fi done
Ключевыми моментами являются:
- Функция электронной почты. Установите соответствующую информацию, такую как имя компьютера и адрес электронной почты администратора.
- Допустимый порог. Установите этот параметр в соответствии с тем, что, по вашему мнению, является подходящим, я использовал 5, потому что ограничение, установленное для жестких дисков класса «сервер», было 10. (I'v нашел порог для дисков «потребительского класса» до 140).
- Установите устройства, которые вы хотите контролировать, путем настройки перечисления имен дисков в цикле «для». В настоящее время два диска (sda & sdb) включены, поэтому настройте настройки. Вы можете включить все свои диски или просто некоторые, если вам нужно * исключить диск по какой-либо причине.
* В моей первоначальной настройке первый диск был флеш-накопителем, поэтому чтение его информации, если это вообще возможно, не очень полезно.
Сделайте исполняемый файл сценария:
sudo chmod +x /root/smart-monitor.sh
Настройка выполнена.
Запланировать запуск сценария автоматически
Мы хотим, чтобы сценарий запускался автоматически, поэтому мы создадим для него новое задание Cron. Как указано в «Как настроить оповещения по электронной почте в Linux», это приводит к тому, что если сам сценарий встречает ошибку, cron автоматически сообщит нам по электронной почте, как только это произойдет.
Откройте планировщик заданий cron:
sudo crontab -e
Добавьте это к своему содержанию:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Это позволит запустить скрипт каждое утро в 7 утра.
Весь ваш сектор принадлежит нам:)