piątek, 5 grudnia 2014

Linux Smartmontools. Smartctl i smartd. Automatyczna diagnostyka dysków twardych

Wstęp


Narzędzie smartctl, jak sama nazwa tłumaczy (SMART - control), słuzy do kontrolowania, znajdującego się w większości nowoczesnych dysków twardych ATA/SATA i SCSI/SAS, systemu autodiagnozy, analizy oraz raportowania, który nosi nazwę SMART. Celem wbudowanego do urządzeń pamięci masowej systemu SMART jest oszacowywanie ich poziomu niezawodności. System SMART przeprowadza różnego rodzaju testy na dyskach w celu uzyskania precyzyjnej informacji o ich stanie technicznym. Narzędzie smartctl uzyskuje informacje o stanie technicznym dysków twardych przejmując kontrolę nad sprzętowym systemem SMART. Smartcl to przydatne i sprawnie działające oprogramowanie, posiadające bardzo dużą ilość opcji, mniej lub bardziej przydatnych, w zależności od celu, jaki pragnie się osiągnąć.

W tym artykule postaram się przedstawić kilka ogólnie przydatnych funkcji narzędzia smartcl oraz wyjaśnić metodę stałego nadzoru dysków, której stosowanie ogólnie zalecam na serwerach produkcyjnych oraz na maszynach, na których przechowywane są cenne dane.

Instalacja pakietu Smartmontools


Aby móc korzystać z aplikacji Smartmontools, można pozyskać oprogramowanie kierując się oficjalnymi instrukcjami. Można również, w zależności od stosowanej dystrybucji Linux, posłużyć się przykładowo narzędziem apt-get lub yum:

sudo apt-get install smartmontools

yum install smartmontools


Sprawdzanie kompatybilności dysków z systemem SMART


Po pomyślnie przeprowadzonej instalacji pakietu Smartmontools, oraz przed podjęciem kolejnych
kroków z zainstalowanym oprogramowaniem, zalecam sprawdzenie kompatybilności dysków twardych z systemem SMART. Aby sprawdzić, czy dyski posiadają wbudowany układ SMART i są
kompatybilne z narzędziem smartcl, należy wykonać następujące działanie, oczywiście podmieniając
według potrzeb nazwę urządzeń (/dev/sda, /dev/sdb):

[root@filemon1 ~]# smartctl -i /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Constellation ES.3
Device Model:     ST1000NM0033-9ZM173
Serial Number:    Z1W27MWP
LU WWN Device Id: 5 000c50 06721230e
Firmware Version: SN04
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Thu Dec  4 10:18:11 2014 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

[root@filemon1 ~]# smartctl -i /dev/sdb
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Constellation ES.3
Device Model:     ST1000NM0033-9ZM173
Serial Number:    Z1W27NB6
LU WWN Device Id: 5 000c50 067210b28
Firmware Version: SN04
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Thu Dec  4 10:18:16 2014 CET
SMART support is: Available - device has SMART capability.

Informacje wyświetlone powyżej, wskazują iż oba zapytane przykładowe urządzenia są
wyposażone w system SMART, oraz iż na obu dyskach system SMART jest włączony.

W przypadku, gdyby urządzenie było wypasażone w system SMART, lecz system SMART był by wyłączony, należałoby go włączyć, przed podjęciem kolejnych kroków z oprogramowaniem, w następujący sposób:
[root@filemon1 ~]# smartctl -s on /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

Odpytywanie dysków


Aby oszacować stan techniczny dysku twardego, należy wydać następujęce polecenie, odpowiednio zastępując nazwę urządzenia:

[root@filemon1 ~]# smartctl -H /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

W powyższym przykładzie wynik testu "PASSED" oznacza, iż system SMART nie ma zastrzeżeń co do stanu technicznego testowanego urządzenia. Wynik inny niż powyższy, może oznaczać kłopoty z dyskiem. W takim przypadku najlepiej będzie jak najszybciej zabezpieczyć dane i podmienić dysk na sprawny.

Aby sprawdzić ogólne cechy urządzenia i dowiedzieć się, między innymi, czy dysk obsługuje autodiagnozę, należy uruchomić narzędzie smartctl z opcją -c (capabilities), wedle poniższego przykładu:

[root@filemon1 ~]# smartctl -c /dev/sda 
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                (  584) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 114) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x50bd) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

Co oznaczają te wszystkie informacje? Jest ich sporo, ale znaczenie większości z nich powinno być raczej jasne. "Offline data collection status" to status zbierania informacji o stanie dysku w trybie offline. Chodzi konkretnie o status zbierania danych o stanie dysku, poprzez testy wykonywane offline, czyli wtedy, gdy dysk nie jest zajęty innymi czynnościami. Testy offline nie obniżają ogólnej wydajności systemu, ponieważ wykonywane są one tylko wtedy, gdy dysk jest wolny od zadań, a w każdym razie przerywane są natychmiast, gdy dysk staje się zajęty innymi zadaniami. Automatyczne testy offline mogą być dowolnie włączane lub wyłączane narzędziem smartcl, korzystając z opcji -o lub opcji --offlineauto= z parametrami on lub off:

[root@filemon1 ~]# smartctl -o on /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Automatic Offline Testing Enabled every four hours.

Z pośród wyżej wyświetlonych informacji o cechach odpytanego dysku, bardzo przydatne są oszacowane czasy wykonania poszczególnych testów. Z wyświetlonego przykładu wynika, iż na wykonanie rozszerzonego testu autodiagnostycznego, odpytane urządzenie potrzebuje około 114 minut.

Autodiagnoza dysków


Narzędzie smartctl umożliwia wykonywanie bardzo dokładnych testów autodiagnostycznych na dyskach. Aby ręcznie uruchomić krótki i podstawowy test autodiagnostyczny, można posłużyć się poniższym przykładem, odpowiednio zastępując nazwę dysku:


[root@filemon1 ~]# smartctl -t short /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 1 minutes for test to complete.
Test will complete after Fri Dec  5 08:22:45 2014

Use smartctl -X to abort test.

Po upływie przewidywanego czasu, potrzebnego na wykonanie krótkiego testu, aby sprawdzić wyniki, należy skorzystać z narędzia smartctl w następujący sposób:

[root@filemon1 ~]# smartctl -l selftest /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%       586         -
# 2  Short offline       Completed without error       00%       182         -

Zostaje wówczas wyświetlona tabela, zawierająca informacje o wszystkich testach autodiagnostycznych wykonanych dotychczas na dysku. Co oznaczają te wszystkie dane? Pierwsze dwie kolumny tabeli wskazują numer oraz typ wykonanego testu. Kolumna 'Status' to kolumna zawierająca status testu. Kolumna 'Remaining' wskazuje pozostały czas wykonania testu, kolejna kolumna zawiera informacje dotyczące czasu wykonania testu w postaci godzin pracy dysku, począwszy od pierwszego uruchomienia urządzenia, natomiast w ostatniej kolumnie zawarty jest adres pierwszego bloku dysku zawierającego ewentualnie wykryty błąd.

Informacje dotyczące danego testu można wyświetlić nawet w trakcje jego wykonywania, np. po to, aby się dowiedzieć ile jeszcze czasu pozostało do ukończenia autodiagnozy. Jest to fajna sprawa, szczególnie gdy wykonuje się długi test autodiagnostyczny, który może trwać wiele godzin. Można wówczas co jakiś czas sprawdzać postęp autodiagnozy:

[root@filemon1 ~]# smartctl -l selftest /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-123.9.2.el7.x86_64] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%       597         -
# 2  Extended offline    Completed without error       00%       588         -
# 3  Short offline       Completed without error       00%       586         -
# 4  Short offline       Completed without error       00%       182        

Automatyzacja testów i raportowanie


Testy diagnostyczne można zautomatyzować za pomocą usługi smartd, aby ich ręczne wykonywanie nie było konieczne. W tym celu należy odpowienio skonfigurować usługę smartd za pomocą pliku konfiguracyjnego smartd.conf.

W pliku smartd.conf powinien znajdować się odkomentowany wiersz rozpoczynający się od hasła DEVICESCAN, przykładowo:

DEVICESCAN -H -m root -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q

Dyrektywa DEVICESCAN powoduje automatyczne wykrycie wszelkich dysków w systemie, oraz zastosowanie do nich ustalonych w opcjach procedur.

Pierwszy napotkany w pliku smartd.conf wiersz, rozpoczynający się od hasła DEVICESCAN, powoduje zignorowanie przez usługę smartd wszelkich kolejnych wierszy pliku. Dostosowanie pliku konfiguracyjnego smartd.conf do własnych potrzeb należy więc rozpocząć od zakomentowania wszelkich wierszy rozpoczynających się od hasła DEVICESCAN, wstawiając na samym początku każdego takiego wiersza znak #:

#DEVICESCAN -H -m root -M exec /usr/libexec/smartmontools/smartdnotify -n standby,10,q

Plik smartd.conf przyjmuje sporą ilość różnych dyrektyw z rozmaitymi opcjami. Są również opcje przeznaczone dla konkretnych urządzeń sterujących dyskami, przykładowo kontroler HighPoint Rocket Raid lub kontroler 3ware 9000. Warto dokładnie przestudiować manual smartd.conf.

Zakładając, że w systemie są 2 dyski, /dev/sda oraz /dev/sdb, aby ustawić ich automatyczny nadzór i raportowanie ewentualnych problemów na wskazany adres mailowy, można dodać do pliku /etc/smartd.conf następujące wiersze, które należy dostosować do własnych potrzeb:

###########################################################################
# Nadzoruj wszelkie parametry wskazanych dysków
# Wykonuj w każdy piątek długi test diagnostyczny na urządzeniach /dev/sda, /dev/sdb
# Wysyłaj powiadomienia o problemach z dyskami na wskazany adres email
# Godziny rozpoczynania długiego testu: 18.00 dla dysku /dev/sda oraz 22.00 dla dysku /dev/sdb
#
/dev/sda -a -m j.kowalski@kowalski.pl -d auto -s L/../../5/18
/dev/sdb -a -m j.kowalski@kowalski.pl -d auto -s L/../../5/22
############################################################################

W powyższym przykładzie konfiguracji usługi smartd, dni tygodnia oznaczane są cyframi od 1 do 7 (po czym podane są godziny rozpoczęcia testów), -a oznacza standardowe monitorowanie (wszystkie parametry), -m wskazuje adres mailowy do ewentualnych powiadomień, -d oznacza typ urządzenia (generalnie zalecana jest opcja auto), -s powoduje uruchomienie testów gdy data będzie zgodna ze wskazanym wzorcem regexp, natomiast L oznacza długi test autodiagnostyczny.

Po odpowiednim ustawieniu opcji monitorowania i raportowania w pliku smartd.conf, należy upewnić się, że usługa zostanie włączona podczas startu systemu oraz aktywować usługę. Warto również sprawdzić status aktywowanej usługi smartd. W dystrybucjach wyposażonych w nowy Systemd można to zrobić w następujący sposób:

[root@filemon1 smartmontools]# systemctl enable smartd
ln -s '/usr/lib/systemd/system/smartd.service' '/etc/systemd/system/multi-user.target.wants/smartd.service'
[root@filemon1 smartmontools]# systemctl start smartd
[root@filemon1 smartmontools]# systemctl status smartd
smartd.service - Self Monitoring and Reporting Technology (SMART) Daemon
   Loaded: loaded (/usr/lib/systemd/system/smartd.service; enabled)
   Active: active (running) since Wed 2014-11-26 22:20:29 CET; 1 weeks 1 days ago
 Main PID: 1058 (smartd)
   CGroup: /system.slice/smartd.service
           └─1058 /usr/sbin/smartd -n -q never

Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sda [SAT], ST1000NM0033-9ZM173, S/N:Z1W27MWP, WWN:5-000c50-06721230e, FW:SN04, 1.00 TB
Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sda [SAT], found in smartd database: Seagate Constellation ES.3
Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sda [SAT], is SMART capable. Adding to "monitor" list.
Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sdb, type changed from 'scsi' to 'sat'
Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sdb [SAT], opened
Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sdb [SAT], ST1000NM0033-9ZM173, S/N:Z1W27NB6, WWN:5-000c50-067210b28, FW:SN04, 1.00 TB
Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sdb [SAT], found in smartd database: Seagate Constellation ES.3
Dec 05 10:12:40 filemon1 smartd[1058]: Device: /dev/sdb [SAT], is SMART capable. Adding to "monitor" list.
Dec 05 10:12:40 filemon1 smartd[1058]: Monitoring 2 ATA and 0 SCSI devices
Dec 05 10:27:52 filemon1 systemd[1]: Started Self Monitoring and Reporting Technology (SMART) Daemon.
 

Brak komentarzy:

Prześlij komentarz