6 999
contributi
S3v (discussione | contributi) Nessun oggetto della modifica |
|||
Riga 4: | Riga 4: | ||
== Introduzione == | == Introduzione == | ||
Gli '''Hard Disk''' sono una delle parti più delicate degli odierni | 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 24: | Riga 24: | ||
In Debian basta installare il pacchetto smartmontools: | In Debian basta installare il pacchetto smartmontools: | ||
<pre> | <pre> | ||
# aptitude install smartmontools | |||
</pre> | </pre> | ||
=== Analizzare lo stato dell'HD === | === Analizzare lo stato dell'HD === | ||
Possiamo usare l'utility < | Possiamo usare l'utility <code>'''smartctl'''</code> per analizzare lo stato dell'HD. | ||
{{Box | Hard disk SATA |Se avete dei dischi | {{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 < | 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 81: | Riga 81: | ||
</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 < | 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 105: | ||
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 < | 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 127: | ||
Per effettuare un test: | Per effettuare un test: | ||
<pre> | <pre> | ||
# smartctl -t tipo_test /dev/hda | |||
</pre> | </pre> | ||
dove ''< | dove ''<code>tipo_test</code>'' può essere: | ||
;< | ;<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; | ||
;< | ;<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>; | ||
;< | ;<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: '''< | 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 '''< | È 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 < | Normalmente il demone è disabilitato. Per abilitarlo bisogna editare il file <code>/etc/default/smartmontools</code> e decommentare le righe: | ||
<pre> | <pre> | ||
start_smartd=yes | |||
smartd_opts="--interval=1800" | |||
</pre> | </pre> | ||
Dobbiamo inoltre configurare smartd per deciderne il suo comportamento. A tal scopo editiamo il file < | 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/sda -a -d ata -m root | |||
</pre> | </pre> | ||
che attivano il monitoraggio di tutti (< | 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 < | 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 164: | ||
</pre> | </pre> | ||
dove: | dove: | ||
* < | * <code>/dev/cciss/c0d0</code> indica l'unità RAID logica creata dal controller | ||
* < | * <code>-d cciss,0</code> indica il primo 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 < | 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 < | 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 < | Per effettuare un controllo con <code>badblocks</code> smontiamo la partizione ed eseguiamo: | ||
<pre> | <pre> | ||
# badblocks -b dimensione_blocco /dev/hdaX | |||
</pre> | </pre> | ||
dove < | dove <code>/dev/hdaX</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 | |||
< | </pre> | ||
Per le ulteriori opzioni di < | 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 < | 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 '''< | Il suo uso è vagamente simile al classico '''<code>dd</code>''': | ||
<pre> | <pre> | ||
# ddrescue [OPTIONS] INFILE OUTFILE [LOGFILE] | |||
</pre> | </pre> | ||
Per una lista completa delle opzioni si rimanda al manuale: < | 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 | |||
</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 < | 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 (< | Ora possiamo eseguire sulla copia i normali tool di ripristino del nostro filesystem (<code>fsck.*</code>). | ||
:''Vedere anche'': | :''Vedere anche'': | ||
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 < | 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>[http://recover.sourceforge.net/linux/recover/ recover]</code> (presente nell'omonimo pacchetto Debian). Il tool <code>recover</code> non può essere usato su partizione ext3. Purtroppo, oltre a <code>recover</code> 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 | 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 | 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). | ||
contributi