1 508
contributi
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 | 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 | 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 | {{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 === | ||
È 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 | ;<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 | 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 | 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 | 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). | ||
contributi