Moderne harddiske har en intern mekanisme kaldet S.M.A.R.T. hvorigennem det er muligt at vide, hvornår en harddisk skal svigte. Ville det ikke være rart af serveren at sende dig en e-mail inden en sådan fejl?
Oversigt
Programmer som "mdadm" (til RAID-software til software) og "Palimpsest Disk Utility" (brugt på Ubuntu LiveCD), brug S.M.A.R.T-oplysningerne til at informere dig, når disken er ved at gå eller mislykkes. Men på en hovedløs server (ingen GUI) er der ingen service, der informerer dig om den ventende undergang, før det er for sent. Desuden, hvordan ville du vide om det uden manuelt at logge ind på serveren?
Dette script, når det køres en gang om dagen med cron, advarer, hvis nogen af systemets harddiske dårlige sektorantal har nået en grænse, der bevidst er lavere end "disken er dårlig" tærskel, og e-mailer advarslen til maskinens administrator.
Forudsætninger og antagelser
- Du har allerede konfigureret e-mail-support til serveren ved hjælp af “ Sådan konfigureres e-mail-alarmer på Linux ”Guide.
- Du bruger et Debian-baseret system.
- Du bruger ikke en * hardware RAID-controller.
- Du vil se mig bruge VIM som redigeringsprogram, det er bare fordi jeg er vant til det ... du kan bruge en hvilken som helst anden editor, du gerne vil have.
* Fordi det er meget muligt, at RAID-controlleren til hardware blokerer systemets adgang til disse oplysninger.
Opsætning
Installer pakken “smartmontools”, der læser S.M.A.R.T-oplysningerne fra harddiskcontrolleren og præsenterer dem for os.
sudo aptitude installerer smartmontools
Opret skærmskriptet:
sudo vim /root/smart-monitor.sh
Gør dette til indhold:
#! / Bin / Bash
######## E-mail-funktion #########
email_admin_func ()
{
ekko "Til: [email protected]"> $ temp_email_file
ekko "Fra: [email protected]" >> $ temp_email_file
ekko "Emne: S.M.A.R.T-skærm Tærskel overtrådt" >> $ temp_email_file
ekko "" >> $ temp_email_file
ekko -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
ekko "Sendt en e-mail til administratoren"
}
smartc_func ()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cut -d '' -f11
}
########End of Functions########
######## Set arbejdsparameter ########
temp_email_file = / tmp / smart_monitor.txt
allow_threshold = 5 # indstil antallet af dårlige sektorer, du er villig til at leve med, anbefales 5.
######## Motor #########
for jeg i sda sdb; gør # Tilføj eller træk disknavne fra denne liste, alt efter hvad der er relevant for din opsætning.
hvis [[ "`smartc_func $i`" -ge $allowed_threshold ]]; derefter
ekko E-maile administratoren
email_admin_func "En af HD'erne på" "hostname" "har nået den øvre tærskelgrænse !!! nTærsklen blev indstillet til: $ allow_threshold og $ i diskstatus var:" `smartc_func $ i`" "
være
Færdig
De vigtigste punkter at bemærke er:
- E-mail-funktion - Indstil de relevante oplysninger som maskinens navn og administrator-e-mail.
- Tilladt tærskel - Indstil denne parameter til det, du synes er passende, jeg har brugt 5, fordi grænsen, der er indstillet til “server grade” harddiske, jeg har brugt, var 10. (jeg har fundet tærsklen for “forbruger grade” drev til være så høj som 140).
- Indstil de enheder, som du vil overvåge ved at justere optællingen af disknavne i "for" -sløjfen. I øjeblikket er to diske (sda & sdb) inkluderet, så juster efter din opsætning. Du kan medtage alle dine diske eller bare nogle, hvis du har brug for * at ekskludere en disk af en eller anden grund.
* i min oprindelige opsætning var den første disk et flashdrev, så at læse dens oplysninger, hvis det overhovedet er muligt, ikke er til stor nytte.
Gør scriptet eksekverbart:
sudo chmod + x /root/smart-monitor.sh
Opsætningen er færdig.
Planlæg scriptet, der skal køres automatisk
Vi ønsker at få scriptet til at køre automatisk, så vi opretter et nyt Cron-job til det.
Som anført i “
Sådan konfigureres e-mail-alarmer på Linux
”Guide resultatet af at gøre det, er at hvis selve scriptet støder på en fejl, vil cron automatisk informere os via e-mail, så snart det sker.
Åbn cron jobplanlægning:
sudo crontab -e
Føj dette til dets indhold:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Dette indstiller scriptet til at blive kørt hver morgen kl. 7.
Alle dine sektorer tilhører os :)