====== smartmontools ======
{{.:disk.png}} **smartmontools** je sada nástrojů na kontrolu a sledování stavu disků pomocí technologie [[http://cs.wikipedia.org/wiki/S.M.A.R.T.|S.M.A.R.T.]]
====== Instalace ======
{{.:apt.png}} [[Instalace programů|Nainstalujte]] [[apt://smartmontools|smartmontools]].
====== Spuštění ======
{{.:navigate.png}} Program se spouští z [[Terminál|terminálu]] pomocí příkazu (například)
sudo smartctl -a /dev/sda
pokud chci výpis dat z disku ///dev/sda//.
====== Jak to funguje ======
===== Sledování disku =====
Firmware sleduje během provozu disku různé parametry, pomocí nichž se dá usuzovat na stav a případnou pravděpodobnost selhání disku. Tyto parametry a jejich interpretace se bohužel mezi různými výrobci liší, ale určité obecné trendy je možné vyčíst.
==== Rychlé zhodnocení stavu disku ====
Použijte parametr **-H** (//health// - zdraví)
sudo smartctl -H /dev/sda
Pokud vidíte ve výpise **PASSED**, je disk v pořádku. Pokud **FAILED**, pravděpodobnost totálního selhání je velmi vysoká.
{{.:example.png}}
arrange@arrange-desktop:~$ sudo smartctl -H /dev/sda
smartctl 5.40 2010-03-16 r3077 [i686-pc-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
==== Více informací k disku ====
Použijte parametr **-A** (//attributes// - ukazatele)
sudo smartctl -A /dev/sda
Zkontrolujte sloupec **WHEN_FAILED**. Pokud obsahuje pouze pomlčky (**-**), jsou všechny ukazatele v normě.
Dále zkontrolujte ukazatel **Reallocated_Sector_Ct** (počet poškozených sektorů). Pokud se hodnota ve sloupci **VALUE** blíží hodnotě **THRESH**, mějte se na pozoru - disk není úplně v pořádku.
Problematické hodnoty u **Raw_Read_Error_Rate** (chyby při čtení) a **Seek_Error_Rate** (chyby při hledání sektoru na disku) nejsou fatální, ale ztěžují operačnímu systému nahrávání dat do paměti, a tím ho zpomalují, případně u neopravitelných (rozsáhlejších) chyb může dojít k lokálnímu poškození dat.
{{.:example.png}}
arrange@arrange-desktop:~$ sudo smartctl -A /dev/sda
smartctl 5.40 2010-03-16 r3077 [i686-pc-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 831
3 Spin_Up_Time 0x0027 157 156 021 Pre-fail Always - 3116
4 Start_Stop_Count 0x0032 099 099 000 Old_age Always - 1093
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 092 092 000 Old_age Always - 5918
10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 1090
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 15
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 1093
194 Temperature_Celsius 0x0022 104 094 000 Old_age Always - 39
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 1
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 1
==== Všechny údaje SMART k disku ====
Pro výpis všech informací k disku použijte
sudo smartctl -a /dev/sda
{{.:example.png}} Příklad výstupu a vysvětlivky
smartctl 5.40 2010-07-12 r3124 [i686-pc-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.9 family
Device Model: ST3802110A
Serial Number: 4LR6HEUP
Firmware Version: 3.BAJ
User Capacity: 80 026 361 856 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Fri Aug 19 20:50:03 2011 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Na začátku se kromě obecných informací k disku dozvíme, jestli
* firmware podporuje SMART (//SMART support is: Available//)
* jestli je zapnutý (//Enabled//).
{{.:example.png}}
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
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: ( 25) The self-test routine was aborted by
the host.
Total time to complete Offline
data collection: ( 430) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No 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: ( 27) minutes.
* **SMART overall-health self-assessment test result** celková interpretace hodnot indexů:
* PASSED - disk nevykazuje větší množství chyb
* FAILED - hodnoty u jednoho nebo více indexů jdou za limit doporučovaný výrobcem - hrozí celkové selhání disku
* **Offline data collection status** - některé disky umožňují automatickou kontrolu disku "na pozadí" (//offline//); //enabled// - zapnuto
* **Self-test execution status** - výsledek posledního testu disku prováděného pomocí SMART
* **... polling time** - předpokládané časy jednotlivých testů
{{.:example.png}}
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 115 069 006 Pre-fail Always - 92132405
3 Spin_Up_Time 0x0003 095 094 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 099 099 020 Old_age Always - 1315
5 Reallocated_Sector_Ct 0x0033 098 098 036 Pre-fail Always - 87
7 Seek_Error_Rate 0x000f 079 060 030 Pre-fail Always - 89291126
9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 3016
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 099 099 020 Old_age Always - 1409
187 Reported_Uncorrect 0x0032 001 001 000 Old_age Always - 30199
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 056 056 045 Old_age Always - 44 (0 7 44 38)
194 Temperature_Celsius 0x0022 044 044 000 Old_age Always - 44 (0 19 0 0)
195 Hardware_ECC_Recovered 0x001a 044 044 000 Old_age Always - 167736146
197 Current_Pending_Sector 0x0012 001 001 000 Old_age Always - 4294967295
198 Offline_Uncorrectable 0x0010 001 001 000 Old_age Offline - 4294967295
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 30
200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
202 Data_Address_Mark_Errs 0x0032 099 252 000 Old_age Always - 1
* **ID** a **ATTRIBUTE_NAME** - číslo a název ukazetele. Podrobnosti viz [[http://www.pslib.cz/ke/Monitorov%C3%A1n%C3%AD_disk%C5%AF_%28S.M.A.R.T.%29#Sekce>_SMART_Attributes_Data_Structure|třeba zde]]. Nejdůležitějším ukazatelem je asi **Reallocated_Sector_Ct** - počet přemapovaných, a tedy vadných sektorů.
* **VALUE** - tzv. normalizovaná (aktuální) hodnota, tedy hodnota přepočítaná vnitřním algoritmem SMARTu na hodnotu mezi 0-255 (někdy 0-200 apod.). Čím **vyšší** je tato hodnota, tím lépe. Pokud se dostane pod hodnotu ve sloupci **THRESH**, systém hlásí brzké selhání disku.
* **WORST** - nejnižší (a tedy nejhorší) hodnota, jaké kdy tento ukazatel v historii dosáhl
* **THRESH** (//threshold// - práh) - hraniční hodnota, pod níž systém hlásí brzké selhání disku
* **TYPE** - typ ukazatele
* //Pre-fail// - ukazatel indikující špatný stav disku
* //old_age// - indikující stáří disku
* **UPDATED** - kdy dochází k aktualizaci hodnoty ukazatele
* //always// - při běžné činnosti disku
* //offline// - při běhu testu na pozadí
* **WHEN_FAILED** - kdy došlo k tomu, že hodnota ukazatele se dostala pod určený práh
* //-// - nikdy
* //in_the_past// - někdy v minulosti, aktuálně je v pořádku
* //failing_now// - akutní nebezpečí
* **RAW_VALUE** - nenormalizovaná hodnota ukazatele. Zde je nutné si uvědomit, že **tato hodnota je pouze orientační** a nemá dostatečnou vypovídající hodnotu, protože ji každý výrobce implementuje jinak. Může např. hodnotu vytvořit jako spojení více bytů, jež mají každý jiný význam v rámci ukazatele, a pak může být "syrová" hodnota nesmyslně vysoká (viz v příkladu //Current_Pending_Sector//).
==== Dokážou tyto údaje předpovědět selhání disku? ====
[[http://labs.google.com/papers/disk_failures.pdf|Studie Googlu]], která je statistickým shrnutím shromážděných údajů z více než 100 000 pevných disků, mj. zjistila, že
* disky s nenulovou hodnotou u //Reallocated_Sector_Ct// mají 14x větší pravděpodobnost selhání než ostatní; podobné je to i u ostatních chybových parametrů
* 36% disků, které selhaly, byly podle ukazatelů SMART naprosto v pořádku (nulové hodnoty u chybových parametrů)
* vysoká zátěž disku se negativně projevuje (rozuměj zvyšuje pravděpodobnost selhání) jen v prvním půlroce používání
* vyšší teplota (myšleno kolem 45 stupňů) nemá na životnost zásadní vliv
===== Testování disku =====
Pomocí příkazu **smartctl** je rovněž možné spustit různé testy disku, všechny lze použít při normální činnosti (je možné pokračovat v práci s počítačem).
sudo smartctl -t nazev_testu /dev/sda
Testy, ktere lze použít (doplňte místo nazev_testu):
* **offline** - spustí //offline// test, kontrola povrchu disku
* **short** - kontroluje se jen určitá část disku, někdy i buffer a mechanické části disku
* **long** - kontrola celého disku
* **conveyance** - rychlý test na možná poškození při přepravě disku (kontrola nového disku)
Výsledky testu je možné zkontrolovat pomocí (kromě //offline// - ten pouze aktualizuje hodnoty u ukazatelů)
sudo smartctl -l selftest /dev/sda
====== Tipy a triky ======
Místo konzolového nástroje je možné použít grafický [[Diskový nástroj|diskový nástroj]], který interpretuje hodnoty SMART i provádí testy.
[[badblocks]] umožňuje vyhledávat poškozené bloky nezávisle na SMART. Přemapované bloky už ale nenajde.
Pokud chcete zálohovat data z poškozeného disku, a kvůli většímu poškození se to nedaří, zkuste [[ddrescue]].
====== Odstranění ======
{{.:clear.png}} [[Instalace programů|Odeberte]] balík ''smartmontools''.
====== Odkazy ======
* [[http://sourceforge.net/apps/trac/smartmontools/wiki/Howto_ReadSmartctlReports_ATA|jak číst údaje z výstupu smartctl]] {{.:en.png}}
* [[http://www.pslib.cz/ke/Monitorov%C3%A1n%C3%AD_disk%C5%AF_%28S.M.A.R.T.%29|český manuál]] {{.:cz.png}}