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

nessun oggetto della modifica
Nessun oggetto della modifica
Riga 14: Riga 14:
== DISCLAIMER ==
== DISCLAIMER ==


Per quanto abbia fatto del mio meglio per verificare l'attendibilità delle informazioni, non posso garantire in alcun modo che alcune delle tecniche illustrate di seguito non possano danneggire i vostri dati, bruciare la vostra casa o uccidere il vostro gatto.
Per quanto abbia fatto del mio meglio per verificare l'attendibilità delle informazioni, non posso garantire in alcun modo che alcune delle tecniche illustrate di seguito non possano danneggiare i vostri dati, bruciare la vostra casa o uccidere il vostro gatto.


Faccio notare, inoltre, che il ripristino dei dati da una partizione corrotta è più una specie di magia nera che una scienza esatta, e richiede oltre che doti da chiromante anche una buona dose di fortuna. Quindi, e non lo ripeterò più, fate backup sistematici dei vostri dati o non lamentatevi se doveste perderli accidentalmente e non riuscire più a recuperarli!
Faccio notare, inoltre, che il ripristino dei dati da una partizione corrotta è più una specie di magia nera che una scienza esatta, e richiede oltre che doti da chiromante anche una buona dose di fortuna. Quindi, e non lo ripeterò più, fate backup sistematici dei vostri dati o non lamentatevi se doveste perderli accidentalmente e non riuscire più a recuperarli!
Riga 22: Riga 22:
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:
 
<pre>
  # aptitude install smartmontools
  # aptitude install smartmontools
 
</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 <tt>'''smartctl'''</tt> per analizzare lo stato dell'HD.  
Riga 74: Riga 74:
L'ultima riga ci dice che la salute sembra buona e nessuno dei parametri interni controllati da SMART ha superato il livello di guardia.
L'ultima riga ci dice che la salute sembra buona e nessuno dei parametri interni controllati da SMART ha superato il livello di guardia.


{{Warningbox| Se il precendente comando non riporta '''PASSED''' smontate immediatamente tutte le partizioni presenti su quell'HD ed effettuate un backup dei dati: la rottura definitiva ed irreversibile del disco è prevista nelle successive 24 ore!}}
{{Warningbox| Se il precedente comando non riporta '''PASSED''' smontate immediatamente tutte le partizioni presenti su quell'HD ed effettuate un backup dei dati: la rottura definitiva ed irreversibile del disco è prevista nelle successive 24 ore!}}


Per avere tutte le informazioni possibili sul nostro HD diamo:
Per avere tutte le informazioni possibili sul nostro HD diamo:
Riga 81: Riga 81:
</pre>
</pre>


L'output, abbastanza lungo (-a 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 <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:


<pre>
<pre>
Riga 103: Riga 103:
</pre>
</pre>


I parametri indicati come ''Pre-fail'' sono quelli che superano la soglia di guardia nelle 24 ore che precedono la rottura dell'HD, mentre quelli ''Old_age'' 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 <tt>smartctl -a /dev/hda</tt> riguarda il log dei test manualmente effettuati sull'HD:
Riga 119: Riga 119:
</pre>
</pre>


Nell'esempio si può vedere che sono stati effettuati 4 test, di cui tre di tipo ''short'' e uno di tipo ''conveyance''. Nessuno di loro ha dato esito positivo (cioè non sono stati rilevati malfunzionamenti).
Nell'esempio si può vedere che sono stati effettuati 4 test, di cui tre di tipo <code>''short''</code> e uno di tipo <code>''conveyance''</code>. Nessuno di loro ha dato esito positivo (cioè non sono stati rilevati malfunzionamenti).


=== Effettuare manualmente i test ===
=== Effettuare manualmente i test ===


E' possibile effettuare dei test più o meno approfonditi sul disco. Alcuni test si possono effettuare con l'HD montato e funzionate, ed il test stesso avrà un impatto minimo o nullo sulle prestazioni del sistema.
È possibile effettuare dei test più o meno approfonditi sul disco. Alcuni test si possono effettuare con l'HD montato e funzionante, ed il test stesso avrà un impatto minimo o nullo sulle prestazioni del sistema.


Per effettuare un test:
Per effettuare un test:
 
<pre>
  # smartctl -t tipo_test /dev/hda
  # smartctl -t tipo_test /dev/hda
 
</pre>
dove ''<tt>tipo_test</tt>'' può essere:
dove ''<tt>tipo_test</tt>'' 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 impatta le prestazioni. Questo test controlla le performace meccaniche ed elettriche del disco, oltre che le performance in lettura.
;<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;


;<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 ''short test''.
;<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>;


;<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.
;<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.
Riga 145: Riga 145:


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 <tt>/etc/default/smartmontools</tt> e decommentare le righe:
 
<pre>
  start_smartd=yes
  start_smartd=yes
  smartd_opts="--interval=1800"
  smartd_opts="--interval=1800"
 
</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 <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.


Nel mio caso ho inserito solo le seguenti linee:
Nel mio caso ho inserito solo le seguenti linee:
 
<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>
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 (<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.
<br/><br/>
<br/><br/>
Riga 175: Riga 175:


Per effettuare un controllo con <tt>badblocks</tt> smontiamo la partizione ed eseguiamo:
Per effettuare un controllo con <tt>badblocks</tt> smontiamo la partizione ed eseguiamo:
 
<pre>
  # badblocks -b dimensione_blocco /dev/hdaX
  # badblocks -b dimensione_blocco /dev/hdaX
 
</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 <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:
 
<pre>
  # disktype /dev/hda
  # disktype /dev/hda
 
<7pre>
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 <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.


Riga 187: Riga 187:


== 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 <tt>[http://www.garloff.de/kurt/linux/ddrescue/ dd_rescue]</tt>). Per installare GNU ddrescue in Debian basta installare il pacchetto <tt>gddrescue</tt>.  


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 '''<tt>dd</tt>''':
 
<pre>
  # ddrescue [OPTIONS] INFILE OUTFILE [LOGFILE]
  # ddrescue [OPTIONS] INFILE OUTFILE [LOGFILE]
 
</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: <tt>info ddrescue</tt>.


Riporto un semplice esempio di utilizzo:
Riporto un semplice esempio di utilizzo:
 
<pre>
  # ddrescue -r3 /dev/hda3 /dev/hdb2 logfile
  # ddrescue -r3 /dev/hda3 /dev/hdb2 logfile
 
</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 <tt>logfile</tt> come file di log.


Riga 213: Riga 213:
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 <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.


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 <tt>egrep</tt> e <tt>strings</tt>.


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 jpeg è possibile usare <tt>'''recoverjpeg'''</tt> (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).


1 508

contributi