Monitoring stanu HDD za pomocą smartd

Konrad Kowalski
  • Konrad Kowalski
  • 19/04/2016
  • Linux
  • 2 komentarze
HDD

Smartctl jest bardzo użytecznym i prostym w użytkowaniu narzędziem służącym do kontroli stanu dysków twardych. Kondycję dysków określa na podstawie danych otrzymanych ze S.M.A.R.T. Jedyną wadą jest konieczność używania polecenia manualnie bądź we własnych (trzeba je stworzyć) skryptach monitorujących i powiadamiających administratora na temat stanu HDD.

Smartd jest idealnym rozwiązaniem tego problemu. Program automatycznie monitoruje stan dysków twardych (w zdefiniowanym przez administratora interwale czasu) oraz wysyła powiadomienia mailowe gdy z monitorowanym dyskiem zaczynają występować problemy.

W Debianie i jego pochodnych smartd wchodzi w skład pakietu smartmontools. Aby go zainstalować należy wydać polecenie:

aptitude install smartmontools

W celu aktywowania smartd należy zmodyfikować plik /etc/default/smartmontools
W pliku należy odkomentować wpis:

start_smartd=yes

oraz

smartd_opts="--interval=1800"

Wartość 1800 sekund, nakazuje smartd sprawdzanie i ocenę kondycji dysków twardych co 30 min.
Końcowy plik powinien wyglądać mniej więcej tak:

# List of devices you want to explicitly enable S.M.A.R.T. for
# Not needed (and not recommended) if the device is monitored by smartd
#enable_smart="/dev/hda /dev/hdb"

# uncomment to start smartd on system startup
start_smartd=yes

# uncomment to pass additional options to smartd on startup
smartd_opts="--interval=1800"

Kolejnym etapem jest modyfikacja pliku /etc/smartd.conf

DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner

Domyślne ustawienie powoduje, że demon smartd wyszukuje wszystkie zainstalowane w systemie dyski i monitoruje ich stan. Dodatkowo wysyła powiadomienie mailowe do użytkownika root. Ja jednak zalecam zakomentowanie tej opcji. Najlepszym rozwiązaniem jest danie wpisów nakazujących monitorowanie stanu wskazanych przez nas dysków twardych.

Np.

/dev/sg2  -m hddalert@kowalsio.com -M exec /usr/share/smartmontools/smartd-runner
/dev/sg3  -m hddalert@kowalsio.com -M exec /usr/share/smartmontools/smartd-runner
/dev/sg4  -m hddalert@kowalsio.com -M exec /usr/share/smartmontools/smartd-runner
/dev/sg5  -m hddalert@kowalsio.com -M exec /usr/share/smartmontools/smartd-runner

Po dokonaniu zmian należy zrestartować usługę:

/etc/init.d/smartmontools restart
[ ok ] Restarting smartmontools (via systemctl): smartmontools.service.

Poniżej przedstawiony został wynik uruchomienia usługi w syslogu. Smartd rozpoczyna monitoring wskazanych dysków. Dodatkowo wykryty został problem z jednym HDD oraz wysłany alert informujący o tym fakcie administratora.

cat /var/log/syslog

Apr 19 09:19:37 xen2a smartd[3073]: smartd 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Apr 19 09:19:37 xen2a smartd[3073]: Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
Apr 19 09:19:37 xen2a smartd[3073]: Opened configuration file /etc/smartd.conf
Apr 19 09:19:37 xen2a smartd[3073]: Drive: /dev/sg2, implied '-a' Directive on line 23 of file /etc/smartd.conf
Apr 19 09:19:37 xen2a smartd[3073]: Drive: /dev/sg3, implied '-a' Directive on line 24 of file /etc/smartd.conf
Apr 19 09:19:37 xen2a smartd[3073]: Drive: /dev/sg4, implied '-a' Directive on line 25 of file /etc/smartd.conf
Apr 19 09:19:37 xen2a smartd[3073]: Drive: /dev/sg5, implied '-a' Directive on line 26 of file /etc/smartd.conf
Apr 19 09:19:37 xen2a smartd[3073]: Configuration file /etc/smartd.conf parsed.
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg2, type changed from 'scsi' to 'sat'
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg2 [SAT], opened
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg2 [SAT], WDC WD1000FYPS-01ZKB0, S/N:WD-WCASJ2120586, WWN:5-0014ee-2acd6597a, FW:02.01B01, 1.00 TB
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg2 [SAT], found in smartd database: Western Digital RE2-GP
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg2 [SAT], not capable of SMART Health Status check
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg2 [SAT], is SMART capable. Adding to "monitor" list.
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg3, type changed from 'scsi' to 'sat'
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg3 [SAT], opened
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg3 [SAT], WDC WD1000FYPS-01ZKB0, S/N:WD-WCASJ2126000, WWN:5-0014ee-2022b6bfe, FW:02.01B01, 1.00 TB
Apr 19 09:19:37 xen2a smartd[3073]: Device: /dev/sg3 [SAT], found in smartd database: Western Digital RE2-GP
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg3 [SAT], not capable of SMART Health Status check
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg3 [SAT], is SMART capable. Adding to "monitor" list.
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg4, type changed from 'scsi' to 'sat'
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg4 [SAT], opened
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg4 [SAT], WDC WD1000FYPS-01ZKB0, S/N:WD-WCASJ2120624, WWN:5-0014ee-2acd951e2, FW:02.01B01, 1.00 TB
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg4 [SAT], found in smartd database: Western Digital RE2-GP
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg4 [SAT], not capable of SMART Health Status check
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg4 [SAT], is SMART capable. Adding to "monitor" list.
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg5, type changed from 'scsi' to 'sat'
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg5 [SAT], opened
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg5 [SAT], WDC WD1000FYPS-01ZKB0, S/N:WD-WCASJ2120207, WWN:5-0014ee-2578283ab, FW:02.01B01, 1.00 TB
Apr 19 09:19:38 xen2a smartd[3073]: Device: /dev/sg5 [SAT], found in smartd database: Western Digital RE2-GP
Apr 19 09:19:39 xen2a smartd[3073]: Device: /dev/sg5 [SAT], not capable of SMART Health Status check
Apr 19 09:19:39 xen2a smartd[3073]: Device: /dev/sg5 [SAT], is SMART capable. Adding to "monitor" list.
Apr 19 09:19:39 xen2a smartd[3073]: Monitoring 4 ATA and 0 SCSI devices
Apr 19 09:19:39 xen2a smartd[3073]: Device: /dev/sg3 [SAT], 1 Currently unreadable (pending) sectors
Apr 19 09:19:39 xen2a smartd[3073]: Sending warning via /usr/share/smartmontools/smartd-runner to hddalert@kowalsio.com ...
Apr 19 09:19:39 xen2a smartd[3073]: Warning via /usr/share/smartmontools/smartd-runner to hddalert@kowalsio.com: successful
Apr 19 09:19:39 xen2a smartd[3073]: Device: /dev/sg2 [SAT], state written to /var/lib/smartmontools/smartd.WDC_WD1000FYPS_01ZKB0-WD_WCASJ2120586.ata.state
Apr 19 09:19:39 xen2a smartd[3073]: Device: /dev/sg3 [SAT], state written to /var/lib/smartmontools/smartd.WDC_WD1000FYPS_01ZKB0-WD_WCASJ2126000.ata.state
Apr 19 09:19:39 xen2a smartd[3073]: Device: /dev/sg4 [SAT], state written to /var/lib/smartmontools/smartd.WDC_WD1000FYPS_01ZKB0-WD_WCASJ2120624.ata.state
Apr 19 09:19:39 xen2a smartd[3073]: Device: /dev/sg5 [SAT], state written to /var/lib/smartmontools/smartd.WDC_WD1000FYPS_01ZKB0-WD_WCASJ2120207.ata.state

Wiadomość email wysłana do administratora wygląda tak:

This message was generated by the smartd daemon running on:

   host name:  xen2a
   DNS domain: kowalsio.com

The following warning/error was logged by the smartd daemon:

Device: /dev/sg3 [SAT], 1 Currently unreadable (pending) sectors

Device info:
WDC WD1000FYPS-01ZKB0, S/N:WD-WCASJ2126000, WWN:5-0014ee-2022b6bfe, FW:02.01B01, 1.00 TB

For details see host's SYSLOG.

You can also use the smartctl utility for further investigation.
Another message will be sent in 24 hours if the problem persists.

Po skonfigurowaniu usługi administrator systemu będzie na bieżąco informowany o występujących problemach z dyskami twardymi oraz będzie miał czas na odpowiednią reakcję.

2 komentarze

Możesz dodawać komentarze do tego artykułu.


  • Dzięki. Wstyd się przyznać, ale do tej pory monitorowałem ręcznie/zewnętrznymi skryptami. Kiedyś podchodziłem do konfiguracji smartd, ale wydało mi się ciut za skomplikowane w stosunku do tego, co robi. Plus, warto dodać, wymaga skonfigurowanej poczty wychodzącej w systemie. I chyba o to się rozbiłem, z powodu IPv6 i puli z dial-up – nie do końca stabilnie to działało z tego co pamiętam.

    Nawiasem, orientujesz się może czy smartd pozwala na podpięcie wykonania zewnętrznego skryptu w przypadku wystąpienia błędu? Patrzyłem, ale nie widzę.

    rozie. 1 rok temu Odpowiedz


    • Konrad Kowalski

      W przypadku powyższej konfiguracji można dodać nasz skrypt do katalogu /etc/smartmontools/run.d/. Opcja -M exec powoduje wykonanie skryptu /usr/share/smartmontools/smartd-runner, który z kolei przygotowuje tymczasowy raport i uruchamia wszystkie skrypty w katalogu /etc/smartmontools/run.d/ . W skryptach można używać pewnych zmiennych SMARTD, które ułatwią kontrolę działania skryptów np. SMARTD_FAILTYPE poda nam powód wystąpienia ostrzeżenia np. „Temperature”, oznaczający przekroczenie limitu temperatury dla dysku (więcej opcji opisano w dokumentacji man smartd.conf)

      Konrad Kowalski 1 rok temu Odpowiedz


Dodaj komentarz