Apžvalga
Programos, pvz., "Mdadm" (programinės įrangos RAID valdymui) ir "Palimpsest Disk Utility" (naudojamos "Ubuntu LiveCD"), naudoja informaciją S.M.A.R.T, kad informuotų jus apie tai, ar diskas yra ar jo nepavyko. Tačiau begalviu serveriu (be GUI) nėra jokios paslaugos, kuri informuotų jus apie laukiamą bausmę prieš per vėlai. Be to, kaip jūs žinote apie tai be rankinio prisijungimo prie serverio?
Šis scenarijus, kai jis paleidžiamas vieną kartą per dieną su cron'u, įspės, ar bet kokia sistemos standžiųjų diskų klaidinga sritis skaičius pasiekė ribą, kuri sąmoningai mažesnė, nei "disko bloga" slenkstis, ir el. Paštu įspėja mašinos administratorių.
Būtinos sąlygos ir prielaidos
- Jūs jau nustatėte el. Pašto palaikymą serveryje, naudodamiesi vadove "Kaip nustatyti el. Pašto įspėjimus" Linux ".
- Jūs naudojate Debian'o sistemą.
- Jūs nenaudojate * aparatinės RAID valdiklio.
- Jūs pamatysite, kad man naudojama VIM kaip redaktoriaus programa, tai tik todėl, kad aš jam būdingas … galite naudoti bet kurį kitą norimą redaktorių.
* Kadangi labai įmanoma, kad aparatinės įrangos RAID valdiklis blokuoja sistemos prieigą prie šios informacijos.
Sąranka
Įdiekite "smartmontools" paketą, kuriame iš standžiojo disko valdiklio nuskaitoma informacija apie S.M.A.R.T ir pateikiama mums.
sudo aptitude install smartmontools
Sukurkite monitoriaus scenarijų:
sudo vim /root/smart-monitor.sh
Padaryti šį turinį:
#!/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
Pagrindiniai dalykai, į kuriuos reikia atkreipti dėmesį:
- El. Pašto funkcija - Nustatykite atitinkamą informaciją, pvz., Mašinisto pavadinimą ir administratoriaus el. Laišką.
- Leistina riba. Nustatykite šį parametrą, kad manote, kad yra tinkamas, aš naudoju 5, nes naudojamas "serverio klasės" kietųjų diskų, naudojamų "i'v", nustatytas limitas buvo 10. ("I've found the threshold for" consumer grade "drives to būti aukščiau kaip 140).
- Nustatykite įrenginius, kuriuos norite stebėti, sureguliuodami diskų pavadinimų skaičių "for" kilpoje. Šiuo metu yra du diskai (sda & sdb), todėl pritaikykite savo sąranką. Galite įtraukti visus savo diskus arba tik kai kuriuos, jei jums reikia * išskirti diską dėl kokios nors priežasties.
* Mano pradiniame diegime pirmasis diskas buvo "flash" įrenginys, todėl skaitydamas jo informaciją, jei viskas įmanoma, nėra daug naudos.
Padarykite vykdomąjį scenarijų:
sudo chmod +x /root/smart-monitor.sh
Sąranka baigta.
Suplanuokite scenarijų paleisti automatiškai
Mes norime, kad scenarijus būtų paleistas automatiškai, todėl sukursime naują Cron'o darbą. Kaip nurodyta "Kaip nustatyti el. Pašto įspėjimus" "Linux", nurodykite, kaip tai padaryti, tai, kad jei pats scenarijus patirs klaidą, cron automatiškai informuos mus el. Paštu, kai tik tai įvyks.
Atidarykite "cron" darbo planavimo įrankį:
sudo crontab -e
Pridėti į savo turinį:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Tai nustatys scenarijų, kuris paleidžiamas kiekvieną rytą 7 val.
Visas jūsų sektorius priklauso mums:)