Gestire gli HD: stato di salute, badblocks e ripristino dati: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
verificata per Buster
m (verificata per Buster)
 
(10 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Tutte le versioni di Debian|}}
{{Versioni compatibili|Jessie|Stretch|Buster}}
[[Categoria:Sistema]]
[[Categoria:Hardware]]
 
== Introduzione ==
== Introduzione ==
Gli '''Hard Disk''' sono una delle parti più delicate degli odierni pc, ed infatti sono tra le periferiche che più facilmente sono soggette a rompersi.
Gli '''Hard Disk''' sono una delle parti più delicate degli odierni PC, ed infatti sono tra le periferiche che più facilmente sono soggette a rompersi.


Fortunatamente ci sono degli strumenti studiati per diagnosticare i malfunzionamenti prima ancora che possano creare danno (speriamo ;-)). Ma ricordate che un backup periodico dei dati importanti è sempre la scelta migliore.
Fortunatamente ci sono degli strumenti studiati per diagnosticare i malfunzionamenti prima ancora che possano creare danno (speriamo ;-)). Ma ricordate che un backup periodico dei dati importanti è sempre la scelta migliore.
Riga 22: Riga 19:
Gli ''smartmontools'' permettono di usare la funzionalità [http://en.wikipedia.org/wiki/Self-Monitoring%2C_Analysis_and_Reporting_Technology SMART] di tutti i moderni HD grazie alla quale è possibile prevedere con 24 ore di anticipo la rottura di un HD.
Gli ''smartmontools'' permettono di usare la funzionalità [http://en.wikipedia.org/wiki/Self-Monitoring%2C_Analysis_and_Reporting_Technology SMART] di tutti i moderni HD grazie alla quale è possibile prevedere con 24 ore di anticipo la rottura di un HD.


In Debian basta installare il pacchetto smartmontools:
In Debian basta installare il pacchetto '''smartmontools'''. Con [[privilegi di amministrazione]] è sufficiente:
<pre>
<pre>
# aptitude install smartmontools
# apt install smartmontools
</pre>
</pre>
=== Analizzare lo stato dell'HD ===
=== Analizzare lo stato dell'HD ===
Possiamo usare l'utility <tt>'''smartctl'''</tt> per analizzare lo stato dell'HD.  
Possiamo usare l'utility <code>'''smartctl'''</code> per analizzare lo stato dell'HD.  
{{Box | Hard disk SATA |Se avete dei dischi sata dovete ricordarvi di attivare l'opzione
{{Box | Hard disk SATA |Se avete dei dischi SATA dovete ricordarvi di attivare l'opzione:
<pre>
<pre>
-d ata
-d ata
</pre>
</pre>
utilizzando l'utility <tt>smartctl</tt>, altrimenti riceverete un messaggio d'errore.
utilizzando l'utility <code>smartctl</code>, altrimenti riceverete un messaggio d'errore.
}}
}}
Innanzitutto vediamo alcune informazioni generiche sul nostro HD:
Innanzitutto vediamo alcune informazioni generiche sul nostro HD:
Riga 39: Riga 37:
# smartctl -i /dev/hda
# smartctl -i /dev/hda
smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen
smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
Home page is https://www.smartmontools.org/


=== START OF INFORMATION SECTION ===
=== START OF INFORMATION SECTION ===
Riga 66: Riga 64:
# smartctl -H /dev/hda
# smartctl -H /dev/hda
smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen
smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
Home page is https://www.smartmontools.org/


=== START OF READ SMART DATA SECTION ===
=== START OF READ SMART DATA SECTION ===
Riga 81: Riga 79:
</pre>
</pre>


L'output, abbastanza lungo (<code>-a</code> sta per "all"), è diviso in quattro sezioni. Il primo blocco rappresenta le informazioni generiche sull'HD (le stesse ottenute prima con <tt>-i</tt>), la seconda sezione riporta le informazioni sul supporto SMART. La terza sezione elenca i parametri interni monitorati da SMART e se hanno mai superato il livello di guardia, nel mio caso:
L'output, abbastanza lungo (<code>-a</code> sta per "all"), è diviso in quattro sezioni. Il primo blocco rappresenta le informazioni generiche sull'HD (le stesse ottenute prima con <code>-i</code>), la seconda sezione riporta le informazioni sul supporto SMART. La terza sezione elenca i parametri interni monitorati da SMART e se hanno mai superato il livello di guardia, nel mio caso:


<pre>
<pre>
Riga 105: Riga 103:
I parametri indicati come <code>''Pre-fail''</code> sono quelli che superano la soglia di guardia nelle 24 ore che precedono la rottura dell'HD, mentre quelli <code>''Old_age''</code> sono i parametri che superano la soglia di guardia quando ormai l'HD è vecchio e non è considerato più affidabile dal costruttore. Nel mio esempio si vede che nessun parametro ha mai superato la soglia di guardia.
I parametri indicati come <code>''Pre-fail''</code> sono quelli che superano la soglia di guardia nelle 24 ore che precedono la rottura dell'HD, mentre quelli <code>''Old_age''</code> sono i parametri che superano la soglia di guardia quando ormai l'HD è vecchio e non è considerato più affidabile dal costruttore. Nel mio esempio si vede che nessun parametro ha mai superato la soglia di guardia.


L'ultima sezione del comando <tt>smartctl -a /dev/hda</tt> riguarda il log dei test manualmente effettuati sull'HD:
L'ultima sezione del comando <code>smartctl -a /dev/hda</code> riguarda il log dei test manualmente effettuati sull'HD:


<pre>
<pre>
Riga 127: Riga 125:
Per effettuare un test:
Per effettuare un test:
<pre>
<pre>
# smartctl -t tipo_test /dev/hda
# smartctl -t tipo_test /dev/hda
</pre>
</pre>
dove ''<tt>tipo_test</tt>'' può essere:
dove ''<code>tipo_test</code>'' può essere:


;<tt>short</tt>: effettua un test sul disco di durata inferiore a 10 minuti, può essere eseguito durante il normale funzionamento e non ha alcun impatto sulle prestazioni. Questo test controlla le performance meccaniche ed elettriche del disco, oltre che le performance in lettura;
;<code>short</code>: effettua un test sul disco di durata inferiore a 10 minuti, può essere eseguito durante il normale funzionamento e non ha alcun impatto sulle prestazioni. Questo test controlla le performance meccaniche ed elettriche del disco, oltre che le performance in lettura;


;<tt>long</tt>: effettua un test di durata da 40 minuti ad un ora (a seconda del disco). Può essere effettuato durante il normale funzionamento del disco e non ha impatto sulle prestazioni. Questo test è una versione più estesa dello <code>''short test''</code>;
;<code>long</code>: effettua un test di durata da 40 minuti ad un ora (a seconda del disco). Può essere effettuato durante il normale funzionamento del disco e non ha impatto sulle prestazioni. Questo test è una versione più estesa dello <code>''short test''</code>;


;<tt>conveyance</tt>: effettua un test di alcuni minuti atto a scoprire difetti dovuti ad incurie nel trasporto dell'HD. Può essere eseguito durante il normale funzionamento dell'HD.
;<code>conveyance</code>: effettua un test di alcuni minuti atto a scoprire difetti dovuti ad incurie nel trasporto dell'HD. Può essere eseguito durante il normale funzionamento dell'HD.


Esistono anche altri tipi di test per i quali si rimanda alla simpatica pagina di manuale: '''<tt>man smartctl</tt>'''.
Esistono anche altri tipi di test per i quali si rimanda alla simpatica pagina di manuale: '''<code>man smartctl</code>'''.


I risultati di questi test vengono riportati nella parte finale dell'output di <code>smartctl -a /dev/hda</code>, come notato in precedenza.
I risultati di questi test vengono riportati nella parte finale dell'output di <code>smartctl -a /dev/hda</code>, come notato in precedenza.


=== Controllo automatizzato ===
=== Controllo automatizzato ===
È possibile attivare il demone '''<tt>smartd</tt>''' fornito dal pacchetto <tt>smartmontools</tt> per monitorare in continuazione lo stato di salute dell'HD e notificare ogni anomalia immediatamente tramite syslog.
È possibile attivare il demone '''<code>smartd</code>''' fornito dal pacchetto <code>smartmontools</code> per monitorare in continuazione lo stato di salute dell'HD e notificare ogni anomalia immediatamente tramite syslog.


Normalmente il demone è disabilitato. Per abilitarlo bisogna editare il file <tt>/etc/default/smartmontools</tt> e decommentare le righe:
Normalmente il demone è disabilitato. Per abilitarlo bisogna editare il file <code>/etc/default/smartmontools</code> e decommentare le righe:
<pre>
<pre>
start_smartd=yes
start_smartd=yes
smartd_opts="--interval=1800"
smartd_opts="--interval=1800"
</pre>
</pre>
Dobbiamo inoltre configurare smartd per deciderne il suo comportamento. A tal scopo editiamo il file <tt>/etc/smartd.conf</tt>. Leggendo i commenti nel file e l'amichevole pagina di manuale (<tt>man smartd.conf</tt>) è possibile scegliere quali parametri <tt>smartd</tt> debba monitorare, programmare dei test automatici, e decidere quali azioni intraprendere in caso di errore.
Dobbiamo inoltre configurare smartd per deciderne il suo comportamento. A tal scopo editiamo il file <code>/etc/smartd.conf</code>. Leggendo i commenti nel file e l'amichevole pagina di manuale (<code>man smartd.conf</code>) è possibile scegliere quali parametri <code>smartd</code> debba monitorare, programmare dei test automatici, e decidere quali azioni intraprendere in caso di errore.


Nel mio caso ho inserito solo le seguenti linee:
Nel mio caso ho inserito solo le seguenti linee:
<pre>
<pre>
/dev/hda -a -o on -S on
/dev/hda -a -o on -S on
/dev/sda -a -d ata -m root
/dev/sda -a -d ata -m root
</pre>
</pre>
che attivano il monitoraggio di tutti (<tt>-a</tt>) i parametri, abilitano l'''automatic online data collection'' (<tt>-o on</tt>), inviano una mail a root (<tt>-m root</tt>) in caso di errori e abilitano il salvataggio degli attributi (<tt>-S on</tt>) in modo che le informazioni di log di SMART vengano memorizzare nella FLASH del disco e siano disponibili anche dopo il riavvio.
che attivano il monitoraggio di tutti (<code>-a</code>) i parametri, abilitano l'''automatic online data collection'' (<code>-o on</code>), inviano una mail a root (<code>-m root</code>) in caso di errori e abilitano il salvataggio degli attributi (<code>-S on</code>) in modo che le informazioni di log di SMART vengano memorizzare nella FLASH del disco e siano disponibili anche dopo il riavvio.
<br/><br/>
<br/><br/>
Nel caso si stesse usando un server '''HP Proliant con controller RAID E200i''' è possibile monitorare lo stato dei dischi inserendo in <tt>/etc/smartd.conf</tt> le seguenti linee:
Nel caso si stesse usando un server '''HP Proliant con controller RAID E200i''' è possibile monitorare lo stato dei dischi inserendo in <code>/etc/smartd.conf</code> le seguenti linee:
<pre>
<pre>
/dev/cciss/c0d0 -T permissive -f -M daily -m yourmail@somehost.com -d cciss,0 -a -s L/../../7/04
/dev/cciss/c0d0 -T permissive -f -M daily -m yourmail@somehost.com -d cciss,0 -a -s L/../../7/04
Riga 164: Riga 162:
</pre>
</pre>
dove:
dove:
* <tt>/dev/cciss/c0d0</tt> indica l'unità RAID logica creata dal controller
* <code>/dev/cciss/c0d0</code> indica l'unità RAID logica creata dal controller
* <tt>-d cciss,0</tt> indica il primo disco fisico del set RAID
* <code>-d cciss,0</code> indica il primo disco fisico del set RAID
* <tt>-d cciss,1</tt> indica il secondo disco fisico del set RAID
* <code>-d cciss,1</code> indica il secondo disco fisico del set RAID


== Verifica di settori corrotti ==
== Verifica di settori corrotti ==


L'utility <tt>'''badblocks'''</tt> permette di fare un controllo di basso livello per vedere se su una partizione sono presenti dei settori danneggiati.
L'utility <code>'''badblocks'''</code> permette di fare un controllo di basso livello per vedere se su una partizione sono presenti dei settori danneggiati.


I moderni HD IDE fanno un controllo automatico degli errori e sono in grado di segnare dei settori corrotti che di conseguenza non verranno più usati. Questo rende in parte inutile <tt>badblocks</tt>, ma se si effettua un controllo e dei settori risultano danneggiati vuol dire che probabilmente la superficie del disco contiene così tanti settori danneggiati che la circuiteria di controllo non è più in gradio di gestirli.
I moderni HD IDE fanno un controllo automatico degli errori e sono in grado di segnare dei settori corrotti che di conseguenza non verranno più usati. Questo rende in parte inutile <code>badblocks</code>, ma se si effettua un controllo e dei settori risultano danneggiati vuol dire che probabilmente la superficie del disco contiene così tanti settori danneggiati che la circuiteria di controllo non è più in gradio di gestirli.


Per effettuare un controllo con <tt>badblocks</tt> smontiamo la partizione ed eseguiamo:
Per effettuare un controllo con <code>badblocks</code> smontiamo la partizione ed eseguiamo:
<pre>
<pre>
# badblocks -b dimensione_blocco /dev/hdaX
# badblocks -b dimensione_blocco /dev/sdaX
</pre>
</pre>
dove <tt>/dev/hdaX</tt> è la partizione da controllare. Il parametro <tt>dimensione_blocco</tt> è la dimensione del blocco usata dal filesytem espresso in byte. Di solito è 4096 (ovvero 4KB), per controllare potete usare:
dove <code>/dev/sdaX</code> è la partizione da controllare. Il parametro <code>dimensione_blocco</code> è la dimensione del blocco usata dal filesytem espresso in byte. Di solito è 4096 (ovvero 4KB), per controllare potete usare:
<pre>
<pre>
# disktype /dev/hda
# dumpe2fs -h /dev/sdaX | grep -i "block size"
<7pre>
</pre>
Per le ulteriori opzioni di <tt>badblocks</tt> si rimanda all'amichevole pagina di manuale, ma '''attenzione: l'opzione <tt>-w</tt> distruggerà tutti i dati sulla vostra partizione'''. Non usatela se non volete che ciò accada.
Per le ulteriori opzioni di <code>badblocks</code> si rimanda all'amichevole pagina di manuale, ma '''attenzione: l'opzione <code>-w</code> distruggerà tutti i dati sulla vostra partizione'''. Non usatela se non volete che ciò accada.


Se trovate dei settori danneggiati conviene cambiare immediatamente HD. Sebbene ci sia una piccola probabilità che l'errore sia isolato (dovuto ad esempio ad uno sbalzo di tensione) è molto più probabile che l'HD si stia progressivamente danneggiando e presto ci saranno dei nuovi settori danneggiati. Comunque se volete giocare alla roulette russa con i vostri dati siete liberi di farlo :-P.
Se trovate dei settori danneggiati conviene cambiare immediatamente HD. Sebbene ci sia una piccola probabilità che l'errore sia isolato (dovuto ad esempio ad uno sbalzo di tensione) è molto più probabile che l'HD si stia progressivamente danneggiando e presto ci saranno dei nuovi settori danneggiati. Comunque se volete giocare alla roulette russa con i vostri dati siete liberi di farlo :-P.


== Backup di emergenza ==
== Backup di emergenza ==
Per effettuare un backup di emergenza di una partizione corrotta il tool più efficace è '''[http://www.gnu.org/software/ddrescue/ddrescue.html GNU ddrescue]''' (da non confondere con il simile ma meno potente <tt>[http://www.garloff.de/kurt/linux/ddrescue/ dd_rescue]</tt>). Per installare GNU ddrescue in Debian basta installare il pacchetto <tt>gddrescue</tt>.  
Per effettuare un backup di emergenza di una partizione corrotta il tool più efficace è '''[http://www.gnu.org/software/ddrescue/ddrescue.html GNU ddrescue]''' (da non confondere con il simile ma meno potente <code>[http://www.garloff.de/kurt/linux/ddrescue/ dd_rescue]</code>). Per installare GNU ddrescue in Debian basta installare il pacchetto <code>gddrescue</code>.  


GNU ddrescue può effettuare backup di singoli file o di intere partizioni, riconoscendo ed aggirando i settori danneggiati. Può essere interrotto in qualsiasi momento, riprendere la copia da punto in cui è stato interrrotto e può fare il ''merge'' dei file se si hanno più copie degli stessi file corrotti.
GNU ddrescue può effettuare backup di singoli file o di intere partizioni, riconoscendo ed aggirando i settori danneggiati. Può essere interrotto in qualsiasi momento, riprendere la copia da punto in cui è stato interrrotto e può fare il ''merge'' dei file se si hanno più copie degli stessi file corrotti.


Il suo uso è vagamente simile al classico '''<tt>dd</tt>''':
Il suo uso è vagamente simile al classico '''<code>dd</code>''':
<pre>
<pre>
# ddrescue [OPTIONS] INFILE OUTFILE [LOGFILE]
# ddrescue [OPTIONS] INFILE OUTFILE [LOGFILE]
</pre>
</pre>
Per una lista completa delle opzioni si rimanda al manuale: <tt>info ddrescue</tt>.
Per una lista completa delle opzioni si rimanda al manuale: <code>info ddrescue</code>.


Riporto un semplice esempio di utilizzo:
Riporto un semplice esempio di utilizzo:
<pre>
<pre>
# ddrescue -r3 /dev/hda3 /dev/hdb2 logfile
# ddrescue -r3 /dev/hda3 /dev/hdb2 logfile
</pre>
</pre>
Il precedente comando copierà la partizione hda3 in hdb2 (distruggendo gli eventuali dati ivi presenti) provando a leggere tre volte i settori danneggiati e usando <tt>logfile</tt> come file di log.
Il precedente comando copierà la partizione hda3 in hdb2 (distruggendo gli eventuali dati ivi presenti) provando a leggere tre volte i settori danneggiati e usando <code>logfile</code> come file di log.


Ora possiamo eseguire sulla copia i normali tool di ripristino del nostro filesystem (<tt>fsck.*</tt>).
Ora possiamo eseguire sulla copia i normali tool di ripristino del nostro filesystem (<code>fsck.*</code>).


:''Vedere anche'':
:''Vedere anche'':
Riga 213: Riga 211:
Prima di ogni operazione di ripristino dati è fortemente consigliato effettuare una copia della partizione (vedi sezione precedente) e operare sulla copia.
Prima di ogni operazione di ripristino dati è fortemente consigliato effettuare una copia della partizione (vedi sezione precedente) e operare sulla copia.


La metodologia per il ripristino dei dati può variare a seconda del filesytem utilizzato e del modo in cui si sono perduti i dati. Ad esempio se si vogliono recuperare dei file cancellati accidentalmente da una partizione ext2 ci sono delle buone possibilità di usare il tool <tt>[http://recover.sourceforge.net/linux/recover/ recover]</tt> (presente nell'omonimo pacchetto Debian). Il tool <tt>recover</tt> non può essere usato su partizione ext3. Purtroppo, oltre a <tt>recover</tt> per ext2, non conosco nessun altro tool free e automatico per il recupero dei file accidentalmente cancellati.
La metodologia per il ripristino dei dati può variare a seconda del filesytem utilizzato e del modo in cui si sono perduti i dati. Ad esempio se si vogliono recuperare dei file cancellati accidentalmente da una partizione ext2 ci sono delle buone possibilità di usare il tool <code>recover</code> (presente nei repository fino a Debian 7). Il tool <code>recover</code> non può essere usato su partizione ext3/ext4, dove invece si può usare il tool <code>extundelete</code> (disponibile anch'esso nei repository Debian).


In mancanza di strumenti automatici si usa la così detta ''Unix Way''. Ovvero si usano i tradizionali strumenti unix per accedere direttamente al device ed estrarre i dati utili. Ad esempio se si devono recuperare file di testo o documenti non binari (per intenderci non foto o musica o programmi compilati) si possono usare <tt>egrep</tt> e <tt>strings</tt>.
In mancanza di strumenti automatici si usa la così detta ''Unix Way''. Ovvero si usano i tradizionali strumenti Unix per accedere direttamente al device ed estrarre i dati utili. Ad esempio se si devono recuperare file di testo o documenti non binari (per intenderci non foto o musica o programmi compilati) si possono usare <code>egrep</code> e <code>strings</code>.


Se si vogliono recuperare foto jpeg è possibile usare <tt>'''recoverjpeg'''</tt> (presente nell'omonimo pacchetto Debian) che cerca di identificare gli header jpeg in una immagine di file system.
Se si vogliono recuperare foto in formato JPEG è possibile usare <code>'''recoverjpeg'''</code> (presente nell'omonimo pacchetto Debian) che cerca di identificare gli header JPEG in una immagine di file system.
È fortemente consigliata la lettura dei documenti elencati di seguito nella sezione ''Links->Articoli'' per degli esempi pratici sul recupero dati da filesystem ext2 e reiserfs (ma le informazioni possono servire da spunto per operare anche su altri file system).
È fortemente consigliata la lettura dei documenti elencati di seguito nella sezione ''Links->Articoli'' per degli esempi pratici sul recupero dati da filesystem ext2 e reiserfs (ma le informazioni possono servire da spunto per operare anche su altri file system).


Riga 226: Riga 224:
=== Articoli ===
=== Articoli ===
* [http://www.linuxquestions.org/linux/answers/Hardware/ReiserFS_Data_Recovery_Tips ReiserFS Data Recovery Tips]
* [http://www.linuxquestions.org/linux/answers/Hardware/ReiserFS_Data_Recovery_Tips ReiserFS Data Recovery Tips]
* [http://ildp.pluto.it/HOWTO/Ext2fs-Undeletion.html Linux Ext2fs Undeletion mini-HOWTO]
* [http://www.pluto.it/sites/default/files/ildp/HOWTO/Ext2fs-Undeletion/Ext2fs-Undeletion.html Linux Ext2fs Undeletion mini-HOWTO]
* [http://www.linuxjournal.com/article/8366 How a Corrupted USB Drive Was Saved by GNU/Linux]
* [http://www.linuxjournal.com/article/8366 How a Corrupted USB Drive Was Saved by GNU/Linux]


=== Strumenti Utili ===
=== Strumenti Utili ===
* [http://smartmontools.sourceforge.net/ smartmontools Home Page]
* [https://www.smartmontools.org/ smartmontools Home Page]
* [http://www.gnu.org/software/ddrescue/ddrescue.html GNU ddrescue]
* [http://www.gnu.org/software/ddrescue/ddrescue.html GNU ddrescue]
* [http://www.partimage.org/index.en.html Partimage]
* [http://www.partimage.org/index.en.html Partimage]
Riga 236: Riga 234:




----
{{Autori
|Autore= [[Utente:TheNoise|~ The Noise]] 05:31, Feb 4, 2006 (EST)
|Estesa_da=
|Verificata_da=
: [[Utente:HAL 9000|HAL 9000]] 18:07, 14 lug 2019 (CEST)
|Numero_revisori=1
}}


Autore Iniziale: [[Utente:TheNoise|~ The Noise]] 05:31, Feb 4, 2006 (EST)
[[Categoria:Monitoraggio]]
[[Categoria:Hard Disk]]
3 581

contributi

Menu di navigazione