# [HOWTO] monitorare l'hard disk con SMART - UPDATE!

## fctk

UPDATE: la versione più aggiornata di questo howto si trova [url=http://gentoo-wiki.com/HOWTO_Monitor_your_hard_disk(s)_with_smartmontools]qui[/url]

INTRODUZIONE

Scopo di questa guida è quello di sfruttare la tecnologia SMART (di cui oramai praticamente tutti gli hard disk sono dotati) per assicurarsi che il proprio disco non ci stia preparando qualche scherzetto di cattivo gusto...

In poche parole gli hard disk dotati di SMART (Self-Monitoring, Analysis and Reporting Technology) sono in grado di monitorare continuativamente il proprio stato di salute per segnalare all'utente eventuali anomalie, e in molti casi permettono anche di eseguire dei test specifici per meglio rilevare malfunzionamenti e simili.

Prima di proseguire, comunque, mi sento in dovere di dire una cosa, forse scontata ma non per questo meno importante: effettuate sempre e comunque periodici backup! Lo SMART è sì molto efficace, ma non per questo garantisce fornisce sempre una diagnosi corretta dello stato di salute del disco. Non solo: spesso gli hard disk muoiono in modo improvviso, ragion per cui non sempre è possibile cavarsela all'ultimo momento, e questo anche se SMART ci ha avvisato tempestivamente e correttamente di ciò che sarebbe presto accaduto.

CONTROLLARE L'HARD DISK SUBITO

Detto questo, passiamo pure all'azione... per prima cosa occorre assicurarsi che SMART sia abilitato da BIOS. Ad esempio io nella sezione BIOS Features Setup ho S.M.A.R.T. for Hard Disk: Enabled.

Quindi installiamo pure il pacchetto smartmontool:

```
# emerge smartmontools
```

A questo punto occorre appurare che il proprio disco supporti SMART e che tale funzione sia abilitata (bisogna cioè verificare che SMART support is: Enabled):

```
# smartctl -i /dev/hda
```

Ora visualizziamo lo SMART Health Status del disco:

```
# smartctl -H /dev/hda
```

Se leggiamo PASSED possiamo proseguire tranquillamente. Nella malaugurata ipotesi che leggiamo FAILED effettua immediatamente il backup dei dati importanti!!! Il disco infatti o si è già rotto o è previsto che si rompa entro le prossime 24 ore.

Dando quindi per scontato che abbiamo ottenuto PASSED o comunque messo al sicuro i nostri dati possiamo ora visualizzare lo SMART Error Log, cioè la lista di errori rilevati da SMART durante il funzionamento del disco:

```
# smartctl -l error /dev/hda
```

Se leggiamo No Errors Logged allora tutto ok. Nel caso in cui ci fosse solo una manciata di errori (e magari neanche tanto recenti e/o ricorrenti) non bisogna preoccuparsi eccessivamente. Occorre invece allarmarsi quando gli errori cominciano a presentarsi in gran numero.

Visualizzare lo SMART Health Status e lo SMART Error Log di per sè non permette di avere la garanzia che tutto vada e sia andato per il verso giusto. Consiglio invece di eseguire anche una serie di test specifici che, personalmente parlando, aiutano decisamente a dormire sonni più tranquilli in queste calde serate estive...

Ciascuno dei seguenti test può essere eseguito anche mentre si sta lavorando normalmente col proprio computer e non interferisce in alcun modo con il corretto funzionamento dello stesso. Qui mi limito a spiegare operativamente cosa occorra fare per avviarli correttamente e per visualizzare i risultati, per cui a chi vuole approfondire consiglio di andare qui e/o di leggere il manuale di smartctl (man smartctl).

Innanzitutto occorre controllare quali test sono supportati dal disco:

```
# smartctl -c /dev/hda
```

In questo modo è anche possibile avere un'idea di quanto tempo è richiesto da ciascuno di essi.

Per prima cosa eseguiamo lo SMART Immediate Offline Test:

```
# smartctl -t offline /dev/hda
```

A questo punto occorre solo pazientare. Nel mio caso il test ha rischiesto 52 minuti circa, infatti:

Please wait 3120 seconds for test to complete.

Test will complete after Wed Aug 18 23:21:16 2004

Se vengono rilevati errori, essi sono riportati nello SMART Error Log (per chi se lo fosse dimenticato, il modo con cui poterlo visualizzare è riportato poco sopra).

A questo punto eseguiamo a scelta lo SMART Short Self Test *o* lo SMART Extended Self Test. Entrambi controllano le prestazioni elettriche e meccaniche del disco (nonchè le sue prestazioni in lettura) ma il secondo è più approfondito del primo.

```
# smartctl -t short /dev/hda

# smartctl -t long /dev/hda
```

I risultati di entrambi i test vengono riportati nel Self Test Error Log, che può essere visualizzato così:

```
# smartctl -l selftest /dev/hda
```

Alcuni hard disk supportano anche l'esecuzione dello SMART Conveyance Self Test (pensato per rilevare anomalie dovute al trasporto del disco). Per avviarlo:

```
# smartctl -t conveyance /dev/hda
```

Anche i risultati di quest'ultimo test sono riportati nel Self Test Error Log.

MONITORARE AUTOMATICAMENTE L'HARD DISK

Una volta presa una certa familiarità con i concetti base fin qui descritti non sarà affatto difficile configurare a dovere il demone smartd, cioè quel tool che si occupa di monitorare e testare periodicamente il nostro hard disk senza il minimo intervento da parte nostra: l'unica cose che dobbiamo necessariamente fare da soli, infatti, sta semplicemente nel configurare il demone prima di eseguirlo.

Il file di configurazione è /etc/smartd.conf (se non esiste dobbiamo ovviamente crearlo noi).

Supponiamo di avere un solo hard disk (/dev/hda) e di voler eseguire tutti i test fin qui elencati ogni venerdì nell'arco di quattro ore (dalle 11:00 alle 15:00); nel caso in cui il demone rilevasse qualche anomalia esso, inoltre, dovrà scrivere in un file di log il problema riscontrato e poi spegnere automaticamente il computer (per evitare che, in nostra assenza, l'hard disk continui stupidamente a lavorare con i nostri preziosissimi dati a rischio). In questo caso il file di configurazione consisterà in una sola linea (occorre spezzarla con delle "\" se è troppo lunga e/o vogliamo che sia più leggibile):

```
/dev/hda \

-H \

-l error -l selftest \

-s (O/../../5/11|L/../../5/13|C/../../5/15) \

-m ThisIsNotUsed -M exec /percorso/dello/script
```

Il contenuto dello script sarà invece:

```
#!/bin/bash

FILE="/percorso/del/file/di/log"

echo "$SMARTD_MESSAGE" > "$FILE"

halt
```

Questi, in sostanza, sono il mio file di configurazione e il mio script. A tutti coloro (sicuramente molti) che vorranno modificarli ed adattarli alle proprie esigenze o semplicemente vorranno comprendere meglio il significato di ciascun parametro non posso che consigliare la lettura del manuale (man smartd.conf).

Ultima cosa: per verificare di non aver commesso errori di sorta consiglio di aggiungere l'opzione -M test alla fine del file di configurazione, in modo tale che lo script venga eseguito all'avvio del demone (eventualmente commentare la linea dello script che contiene l'istruzione per far spegnere il computer).

Per eseguire il demone digitiamo:

```
# /etc/init.d/smartd start
```

Se lo script non viene eseguito il file di log ovviamente non verrà creato... in questo caso controlliamo tutto nuovamente ed eventualmente leggiamo le ultime righe di /var/log/messages per individuare la causa del problema.

Quanto tutto sarà a posto digitiamo pure:

```
# rc-update add smartd default
```

Il demone sarà avviato ogni volta all'accensione del computer. Il nostro hard disk, d'ora in poi, sarà più al sicuro.Last edited by fctk on Sun Nov 14, 2004 6:01 pm; edited 3 times in total

----------

## /dev/full

Ne ho proprio bisogno  :Very Happy: 

Grazie!

Ehm, pero':  *Quote:*   

> A questo punto occorre appurare che il proprio disco supporti SMART e che tale funzione sia abilitata (bisogna cioè verificare che SMART support is: Enabled):
> 
> ```
> # smartctl -i /dev/hda
> ```
> ...

 E se:

```
SMART support is: Available - device has SMART capability.

SMART support is: Disabled
```

  :Question: 

Mi consiglia di usare l'opzione -s con argomento 'on' per abilitarlo... Ma se lo faccio...

```
ERROR: smartctl requires a device name as the final command-line argument.
```

----------

## fctk

probabilmente hai dimenticato /dev/hda

----------

## ballero

Lo SMART, devi prima attivarlo da bios della scheda madre  :Wink: 

----------

## /dev/full

 *fctk wrote:*   

> probabilmente hai dimenticato /dev/hda

   :Embarassed:  Non c'avevo fatto caso

Grazie  :Very Happy: 

----------

## fctk

 *ballero wrote:*   

> Lo SMART, devi prima attivarlo da bios della scheda madre 

 

non ci avevo pensato, è vero! aggiunto all'howto. grazie   :Wink: 

----------

## fedeliallalinea

Bel howto. Aggiunto ai post utilissimi

----------

## fctk

grazie!  :Razz: 

----------

## fctk

aggiunta la sezione relativa al demone smartd!!!  :Cool: 

----------

## fctk

completata la [url=http://gentoo-wiki.com/HOWTO_Monitor_your_hard_disk(s)_with_smartmontools]traduzione in inglese[/url]  :Cool: 

----------

## mrfree

Forse dovresti apportare qualche piccola modifica alla tua configurazione...

Utilizzo la versione attualmente stabile nel portage smartmontools-5.26 e:

- la direttiva -s non è più presente e quindi per schedulare i controlli bisognerebbe utilizzare un metodo alternativo (tipo cron immagino)

- per la direttiva -m, invece, è necessario specificare <nomailer> se si intende utilizzare exec in -M

Almeno il primo punto è stato anche segnalato nella sezione commenti del tuo articolo su gentoo-wiki   :Wink: 

Nota: Per maggiori dettagli sulla schedulazione rimando al man di smartd (di default il demone si attiva ogni 30 minuti intervallo comunque configurabile)

Spero di esserti stato utile  :Smile: 

----------

## fctk

come la direttiva -s non c'è +? io continuo a vederla... http://smartmontools.sourceforge.net/man/smartd.conf.5.html

per quanto riguarda la -m ho chiesto nella mailing list del programma, e mi ha risposto direttamente l'autore... per cui boh... comunque anch'io ho avuto problemi con la 5.26 e sono passato alla versione testing che invece non me ne ha dati affatto... magari è quello

----------

## mrfree

effettivamente la 5.26 è datata 27 nov 2003 cmq in questa versione non c'è la direttiva -s (almeno dando man smartd.conf) per la -m l'utilizzo del  <nomailer> è indicato nel manuale.

Di chiu' nin so'   :Wink: 

Edit: Ho emerso la versione 5.30 in questa c'è la direttiva per lo scheduling

----------

## masterbrian

Bellissimo HOWTO e molto utile  :Smile: 

Qui ha funzionato tutto al primo colpo tranne:

```
-s (O/../../5/11|L/../../5/13|C/../../5/15) \ 
```

 che ho dovuto cancellare dallo /etc/smartd.conf

Sembra che non sia supportato il -s  :Neutral:  Come descritto sopra  :Smile: 

----------

## fctk

prova ad emergere la versione testing come ha fatto mrfree... comunque se si rileva essere questo il problema appena posso aggiorno l'howto...

----------

## lavish

domanda.... avendo un sata e' impossibile monitorare l'hd? Date un'occhio ad un mio post precedente nella sezione amd64: https://forums.gentoo.org/viewtopic.php?t=247540&start=0&postdays=0&postorder=asc&highlight=

Magari potete darmi una risposta definitiva. Grazie  :Wink: 

----------

## fctk

http://smartmontools.sourceforge.net/#testinghelp

http://lists.sourceforge.net/lists/listinfo/smartmontools-support

----------

## lavish

@fctk : Grazie mille... proprio non avevo guardato nel posto + ovvio... Peccato cmq, poiche' con il modulo vecchio (deprecated ora, mi riferisco al modulo che faceva riconoscere l'hd sata come un ide) il supporto allo s.m.a.r.t. era completo

Grazie ancora e scusami  :Wink: 

----------

## khris81

chris christian # smartctl -i /dev/sda

smartctl version 5.33 [i686-pc-linux-gnu] Copyright (C) 2002-4 Bruce Allen

Home page is http://smartmontools.sourceforge.net/

Device: ATA      WDC WD2000JD-00H Version: 08.0

SATA disks accessed via libata are not currently supported by

smartmontools. When libata is given an ATA pass-thru ioctl() then an

additional '-d libata' device type will be added to smartmontools.

come posso fare avendo un sata???

----------

## Ciccio Bueo

bel tip! ma non c'è un front-end, magari in gtk? non ho trovato nulla... sarebbe certamente più comodo l'utilizzo....

----------

## Flebool

ho seguito pedissequamente l'howto sul wiki riportato in link all'inizio del post..

Fino alla sezione " Automatically monitor your drive(s)", tutto funziona correttamente, non ho avuto problemi.

Ho una coppia di dischi sata, /dev/sda e /dev/sdb. è bastato aggiungere l'opzione -d ata e smartctl è andato spedito.

la versione di smartmontools è la 5.36

ho impostato il file /etc/smartd.conf come segue:

```

DEVICESCAN

/dev/sda -d ata\ 

-H \

-l error -l selftest \

-m notused -M exec /etc/smartd.sh -M test

```

ho poi proceduto con:

```

/etc/init.d/smartd start

 * Caching service dependencies ...                                       [ ok ]

 * Starting S.M.A.R.T. monitoring daemon ...                              [ !! ]

```

il demone fallisce, e esce subito.risulta infatti:

#tail -13 /var/log/messages 

```

Aug 23 16:25:48 crap smartd[15099]: smartd version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen

Aug 23 16:25:48 crap smartd[15099]: Home page is http://smartmontools.sourceforge.net/

Aug 23 16:25:48 crap smartd[15099]: Opened configuration file /etc/smartd.conf

Aug 23 16:25:48 crap smartd[15099]: Drive: DEVICESCAN, implied '-a' Directive on line 23 of file /etc/smartd.conf

Aug 23 16:25:48 crap smartd[15099]: Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices

Aug 23 16:25:48 crap smartd[15099]: Problem creating device name scan list

Aug 23 16:25:48 crap smartd[15099]: Device: /dev/sda, opened

Aug 23 16:25:48 crap smartd[15099]: Device /dev/sda: SATA disks accessed via libata are supported by Linux kernel versions 2.6.15-rc1 and above. Try adding '-d ata' to the smartd.conf config file line.

Aug 23 16:25:48 crap smartd[15099]: Device: /dev/sdb, opened

Aug 23 16:25:48 crap smartd[15099]: Device /dev/sdb: SATA disks accessed via libata are supported by Linux kernel versions 2.6.15-rc1 and above. Try adding '-d ata' to the smartd.conf config file line.

Aug 23 16:25:48 crap smartd[15099]: Device: /dev/sdd, opened

Aug 23 16:25:49 crap smartd[15099]: Device: /dev/sdd, IE (SMART) not enabled, skip device Try 'smartctl -s on /dev/sdd' to turn on SMART features

Aug 23 16:25:49 crap smartd[15099]: Unable to monitor any SMART enabled devices. Try debug (-d) option. Exiting...

```

ho notato due cose:

  1)la scritta "Problem creating device name scan list" che fa pensare abbia scritto male il file di configurazione

  2) "Device /dev/sda: SATA disks accessed via libata are supported by Linux kernel versions 2.6.15-rc1 and above. Try adding '-d ata' to the smartd.conf config file line.". Premesso che l'opzione -d ata l'ho messa nel file di config, ho anche il kernel giusto:

#uname -a

```

Linux crap 2.6.16-gentoo-r12 #1 Sun Oct 8 00:13:55 CEST 2006 i686 AMD Athlon(tm) 64 Processor 3000+ GNU/Linux

```

é un processore a 64bit ma l'ho installato come un 32bit, quindi non può centrare l'architettura del processore.

Avete una qualche idea?

L'alternativa è scrivermi uno scriptino da mettere in cron che faccia da solo senza il demone smartd.

PS: ho provato anche con la configurazione proposta nell'howto di poco cambiata, stesso esito. la posto per completezza:

```

/dev/sda -d ata\

-H \

-l error -l selftest \

-s (O/../../5/11|L/../../5/13|C/../../5/15) \

-m ThisIsNotUsed -M exec /etc/smartd.sh

```

----------

## Flebool

L'errore era banale, scusatemi...  :Embarassed:   :Embarassed:   nel file di configurazione non avevo commentato la riga:

DEVICESCAN

che come si legge nel file stesso:

"# The word DEVICESCAN will cause any remaining lines in this

# configuration file to be ignored[..]"

grazie cmq, ciaoo!

----------

## cloc3

 *fctk wrote:*   

> per prima cosa occorre assicurarsi che SMART sia abilitato da BIOS. Ad esempio io nella sezione BIOS Features Setup ho S.M.A.R.T. for Hard Disk: Enabled

 

1. attenzione:

la cosa può risultare tutt'altro che banale.

nel mio caso, ad esempio, hoi dovuto ricorrere alle FAQ della casa madre della mia scheda madre, altrimenti non ci sarei riuscito.

2.

 *fctk wrote:*   

> 
> 
> http://smartmontools.sourceforge.net/#testinghelp
> 
> 

 

consiglio prezioso. ma siccome si risolve in una operazione banale, ne trarrei un'istruzione sintetica:

se avete un disco SATA che supporto SMART, accedete ad esso utilizzando sempre l'opzione -d ata del comando smartctl.

nel file /etc/smartd.conf, commentate la riga DEVICESCAN e decommentate quella  /dev/sdX -a -d ata.

----------

## paccio84

Dando il comando:

> smartctl -i /dev/sda

mi da il seguente messaggio:

smartctl version 5.36 [x86_64-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen

Home page is http://smartmontools.sourceforge.net/

Device: ATA      ST3250624AS      Version: 3.AA

Serial number:             9ND10SB0

Device type: disk

Local Time is: Fri Apr 13 16:36:49 2007 CEST

Device does not support SMART

Ho abilitato sul BIOS il supporto a S.M.A.R.T. ma nada, non funziona.

INFO: Gentoo con kernel-2.6.19-r5 con i nuovi driver per i controller ATA.

Qualcuno sa come si risolve?

Grazie in anticipo

Ciao

----------

## .:deadhead:.

 *paccio84 wrote:*   

> 
> 
> > smartctl -i /dev/sda
> 
> con i nuovi driver per i controller ATA.

 

installa la versionen in ~ del pacchetto e prova a passare al programma l'opzione -d ata , come riportato nel paragrafo "FireWire, USB, and SATA disks/systems" della homepage del progetto

----------

## xdarma

Torno su questo argomento con un paio di domande:

1) statisticamente, controllare lo stato dei dischi vi ha permesso di evitare perdite di dati? A me non è stato utile.

2) controllare regolarmente lo stato della superficie del disco con qualcosa tipo:

```
/dev/sda -d ata\ 

-H \ 

-l error -l selftest \ 

-s (O/../../5/11|L/../../5/13|C/../../5/15) \ 

-m ThisIsNotUsed -M exec /etc/smartd.sh
```

non è fuorviante? In base al report di google del 2007 i guasti rilevabili da SMART più frequenti sono:

Realloc_Count, Seek_Errors, Off_Realloc e Prob_Count. Solo dopo vengono gli Scan_Errors.

Non sarebbe più utile decommentare la riga:

```
/dev/hdc -H -C 0 -U 0 -m admin@example.com
```

oppure aggiungere questi controlli a quelli programmati?

Ciao e grazie per i chiarimenti :-)

----------

## xdarma

Riassemblando un RAID, ho "scoperto" che esiste una funzione interna agli hard disk che in qualche maniera evita il "degrado" del RAID utilizzando l'Error Recovery Control che a seconda del produttore assume vari nomi: ERC, TLER o CCTL.

A volte è presente anche in dischi "economici", seppur disabilitata. Secondo quanto riportato qui è possibile riabilitarla. Anche se non sempre l'impostazione rimane dopo lo spegnimento.

Semplificando, si inizia controllando che sia supportata dal nostro disco "X" del RAID:

```
smartctl -l scterc /dev/sdX
```

Se restituisce qualcosa tipo:

```
SCT Error Recovery Control set to:

           Read: Disabled

          Write: Disabled

```

È supportata ma disabilitata. La attiviamo con:

```
smartctl -l scterc,70,70 /dev/sdX
```

che restituisce qualcosa tipo:

```
SCT Error Recovery Control:

           Read:     70 (7.0 seconds)

          Write:     70 (7.0 seconds)

```

Se l'impostazione venisse cancellata allo spegnimento, è possibile aggiungerla alla riga di comando che esegue smartd 

all'avvio, un esempio è:

```
/dev/sdX -H -l scterc,70,70 -C 0 -U 0 -m admin@example.com -M exec /usr/local/bin/smartd.sh
```

Ovviamente va riadattata per tutti i dischi del RAID.

Questa funzione sembra sia utile solo per dischi in RAID, mentre per dischi singoli è sconsigliata.

Sono benvenute proposte migliori  ;-)

----------

## xdarma

Aggiornamento provvisorio degli appunti:

What SMART Stats Tell Us About Hard Drives

Per dischi Seagate la riga di /etc/smartd.conf diventa:

```

/dev/sdX -a -o on -S on -H -l scterc,70,70 -l error -l selftest -C + -U + -R 5 -R 187 -R 188 -I 194 -s (S/../../7/06) -m admin@example.com -M exec /usr/local/bin/smartd.sh

```

Il parametro -I 194 disabilita il controllo della temperatura.

EDIT:

corretto parametro

----------

