Yleiskatsaus
Ohjelmat, kuten "mdadm" (ohjelmiston RAID-hallinta) ja "Palimpsest Disk Utility" (joita käytetään Ubuntu LiveCD -levyllä), käyttävät S.M.A.R.T-tietoja, jotka ilmoittavat, kun levy on epäonnistunut tai epäonnistui. Kuitenkin epäsymmetrisessä palvelimessa (ei graafista käyttöliittymää) ei ole palvelua, joka ilmoittaa sinulle vireillä olevasta tuomiosta ennen kuin on liian myöhäistä. Lisäksi, miten sinä tiedät siitä ilman kirjautumista manuaalisesti palvelimeen?
Tämä komentosarja, kun sitä käytetään kerran päivässä cron-ohjelmalla, ilmoittaa, jos jokin järjestelmän kiintolevyjen huonot sektorit ovat saavuttaneet rajan, joka on tarkoituksella pienempi kuin "levy on huono" kynnysarvo ja lähettää varoituksen koneen ylläpitäjälle.
Edellytykset ja oletukset
- Olet jo asettanut sähköpostipalvelimen tuen palvelimelle "Sähköpostiviestien määrittäminen Linuxissa" -oppaasta.
- Käytät Debian-pohjaista järjestelmää.
- Et käytä * laitteiston RAID-ohjainta.
- Näet, että käytän VIM: ää editorina, tämä on vain siksi, että olen tottunut siihen … voit käyttää mitä tahansa muuta editoria, jota haluat.
* Koska on hyvin mahdollista, että laitteiston RAID-ohjain estää järjestelmän pääsyn näihin tietoihin.
Perustaa
Asenna "smartmontools" -paketti, joka lukee S.M.A.R.T-tiedot kiintolevyohjaimesta ja esittelee sen meille.
sudo aptitude install smartmontools
Luo näyttökirjoitus:
sudo vim /root/smart-monitor.sh
Tee tämä sisältö:
#!/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
Tärkeitä huomautuksia ovat:
- Sähköposti-toiminto - Aseta tarvittavat tiedot, kuten koneen nimi ja järjestelmänvalvojan sähköposti.
- Sallittu kynnysarvo - Aseta tämä parametri mielestäsi sopivaksi. Käytän sitä 5, koska "server grade" kiintolevyille asetettu raja oli 10. (I'v löysi kynnyksen "kuluttaja-luokan" asemille olla jopa 140).
- Aseta laitteet, jotka haluat tarkkailla, säätämällä levyn nimiä "for" -luettelossa. Tällä hetkellä mukana on kaksi levyä (sda & sdb), joten säädä asetukset. Voit sisällyttää kaikki levyt tai vain jotkut, jos haluat * sulkea levyn jonkin syyn vuoksi.
* Alkuperäisessä asetuksessani ensimmäinen levy oli flash-asema, joten lukemalla sen tietoja jos ei lainkaan ole paljon hyötyä.
Tee käsikirjoitus suoritettavaksi:
sudo chmod +x /root/smart-monitor.sh
Asennus on tehty.
Ajoittaa komentosarjan suorittaminen automaattisesti
Haluamme tehdä komentosarjan käynnistyvän automaattisesti, jotta voimme luoda uuden Cron-työn. Kuten "Sähköpostiviestien määrittäminen Linuxissa" -oppaassa todetaan, tämä on se, että jos skripti itse havaitsee virheen, cron ilmoittaa meille automaattisesti sähköpostilla heti, kun se tapahtuu.
Avaa aikataulun aikataulu:
sudo crontab -e
Lisää tämä sisältöön:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Tämä asettaa käsikirjoituksen ajaa joka aamu klo 7.00.
Kaikki sektori kuuluvat meihin:)