3 581
contributi
m (→Backup di emergenza: inserito link) |
m (verificata per Buster) |
||
(29 versioni intermedie di 9 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Jessie|Stretch|Buster}} | |||
== 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. | |||
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. | |||
In questa guida vedremo come usare alcuni strumenti come '''smartmontools''' e '''badblocks''' per monitorare lo stato di salute di un hard disk, vedremo come effettuare le basilari operazioni di backup di emergenza e come affrontare un eventuale ripristino dei dati. | |||
{{Box|Nota|Questa guida raccoglie le mie (limitate) conoscenze in materia nella speranza che siano utili ad altri. Sentitevi liberi di contribuire con approfondimenti o link ad ulteriori documenti.}} | |||
== | == 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 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! | |||
== Controllare lo stato di salute di un HD: smartmontools == | |||
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'''. Con [[privilegi di amministrazione]] è sufficiente: | |||
<pre> | |||
# apt install smartmontools | |||
</pre> | |||
=== 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: | |||
<pre> | |||
-d ata | |||
</pre> | |||
utilizzando l'utility <code>smartctl</code>, altrimenti riceverete un messaggio d'errore. | |||
}} | |||
Innanzitutto vediamo alcune informazioni generiche sul nostro HD: | |||
<pre> | |||
# smartctl -i /dev/hda | |||
smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen | |||
Home page is https://www.smartmontools.org/ | |||
=== START OF INFORMATION SECTION === | |||
Model Family: Western Digital Caviar family | |||
Device Model: WDC WD600BB-00CAA1 | |||
Serial Number: WD-WMA8F1747570 | |||
Firmware Version: 17.07W17 | |||
User Capacity: 60,022,480,896 bytes | |||
Device is: In smartctl database [for details use: -P show] | |||
ATA Version is: 5 | |||
ATA Standard is: Exact ATA specification draft version not indicated | |||
Local Time is: Tue Jan 31 17:36:07 2006 CET | |||
SMART support is: Available - device has SMART capability. | |||
SMART support is: Enabled | |||
</pre> | |||
oltre alle informazioni generiche, dalle ultime due righe si capisce che l'HD supporta la tecnologia SMART e che il supporto è attivato. Se non fosse attivato basterebbe questo comando: | |||
<pre> | |||
# smartctl -s on /dev/hda | |||
</pre> | |||
per attivare il supporto SMART. | |||
Per controllare lo stato di salute attuale: | |||
<pre> | |||
# smartctl -H /dev/hda | |||
smartctl version 5.34 [i686-pc-linux-gnu] Copyright (C) 2002-5 Bruce Allen | |||
Home page is https://www.smartmontools.org/ | |||
== | === START OF READ SMART DATA SECTION === | ||
SMART overall-health self-assessment test result: PASSED | |||
</pre> | |||
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 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!}} | |||
[[Categoria: | Per avere tutte le informazioni possibili sul nostro HD diamo: | ||
<pre> | |||
# smartctl -a /dev/hda | |||
</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 <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> | |||
SMART Attributes Data Structure revision number: 16 | |||
Vendor Specific SMART Attributes with Thresholds: | |||
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE | |||
1 Raw_Read_Error_Rate 0x000b 200 200 051 Pre-fail Always - 0 | |||
3 Spin_Up_Time 0x0007 099 091 021 Pre-fail Always - 4108 | |||
4 Start_Stop_Count 0x0032 098 098 040 Old_age Always - 2590 | |||
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 | |||
7 Seek_Error_Rate 0x000b 200 200 051 Pre-fail Always - 0 | |||
9 Power_On_Hours 0x0032 092 092 000 Old_age Always - 6494 | |||
10 Spin_Retry_Count 0x0013 100 100 051 Pre-fail Always - 0 | |||
11 Calibration_Retry_Count 0x0013 100 100 051 Pre-fail Always - 0 | |||
12 Power_Cycle_Count 0x0032 098 098 000 Old_age Always - 2435 | |||
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 | |||
197 Current_Pending_Sector 0x0012 200 200 000 Old_age Always - 0 | |||
198 Offline_Uncorrectable 0x0012 200 200 000 Old_age Always - 0 | |||
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 19 | |||
200 Multi_Zone_Error_Rate 0x0009 200 200 051 Pre-fail Offline - 0 | |||
</pre> | |||
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 <code>smartctl -a /dev/hda</code> riguarda il log dei test manualmente effettuati sull'HD: | |||
<pre> | |||
SMART Error Log Version: 1 | |||
No Errors Logged | |||
SMART Self-test log structure revision number 1 | |||
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error | |||
# 1 Short offline Completed without error 00% 952 - | |||
# 2 Conveyance offline Completed without error 00% 951 - | |||
# 3 Short offline Completed without error 00% 951 - | |||
# 4 Short offline Completed without error 00% 875 - | |||
</pre> | |||
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 === | |||
È 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: | |||
<pre> | |||
# smartctl -t tipo_test /dev/hda | |||
</pre> | |||
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: '''<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. | |||
=== Controllo automatizzato === | |||
È 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 <code>/etc/default/smartmontools</code> e decommentare le righe: | |||
<pre> | |||
start_smartd=yes | |||
smartd_opts="--interval=1800" | |||
</pre> | |||
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: | |||
<pre> | |||
/dev/hda -a -o on -S on | |||
/dev/sda -a -d ata -m root | |||
</pre> | |||
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/> | |||
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> | |||
/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,1 -a -s L/../../7/04 | |||
</pre> | |||
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 == | |||
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 <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 <code>badblocks</code> smontiamo la partizione ed eseguiamo: | |||
<pre> | |||
# badblocks -b dimensione_blocco /dev/sdaX | |||
</pre> | |||
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> | |||
# dumpe2fs -h /dev/sdaX | grep -i "block size" | |||
</pre> | |||
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. | |||
== 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 <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. | |||
Il suo uso è vagamente simile al classico '''<code>dd</code>''': | |||
<pre> | |||
# ddrescue [OPTIONS] INFILE OUTFILE [LOGFILE] | |||
</pre> | |||
Per una lista completa delle opzioni si rimanda al manuale: <code>info ddrescue</code>. | |||
Riporto un semplice esempio di utilizzo: | |||
<pre> | |||
# 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 <code>logfile</code> come file di log. | |||
Ora possiamo eseguire sulla copia i normali tool di ripristino del nostro filesystem (<code>fsck.*</code>). | |||
:''Vedere anche'': | |||
:*[[Recuperare i dati da un Hard Disk danneggiato]] | |||
== Strumenti per il ripristino dei dati == | |||
{{Box|Nota|In questa sezione verrà accennato il problema del ripristino dati. Lo scopo è solo quello di dare una panoramica iniziale del problema che possa servire come orientamento per ulteriori approfondimenti.}} | |||
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 <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 <code>egrep</code> e <code>strings</code>. | |||
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). | |||
== Links == | |||
=== Sul wiki === | |||
* [[Recuperare i dati da un Hard Disk danneggiato]] | |||
=== Articoli === | |||
* [http://www.linuxquestions.org/linux/answers/Hardware/ReiserFS_Data_Recovery_Tips ReiserFS Data Recovery Tips] | |||
* [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] | |||
=== Strumenti Utili === | |||
* [https://www.smartmontools.org/ smartmontools Home Page] | |||
* [http://www.gnu.org/software/ddrescue/ddrescue.html GNU ddrescue] | |||
* [http://www.partimage.org/index.en.html Partimage] | |||
* [http://www.cgsecurity.org/index.html?testdisk.html TestDisk] | |||
{{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 | |||
}} | |||
[[Categoria:Monitoraggio]] | |||
[[Categoria:Hard Disk]] |
contributi