Ci preoccupiamo tutti di mantenere intatti e sicuri i nostri dati e file, ma รจ possibile che i dati vengano danneggiati e siano accessibili a un utente senza una notifica o un avviso di alcun tipo sul problema? Il post di domande e risposte di SuperUser di oggi ha la risposta alla domanda di un lettore preoccupato.
La sessione di domande e risposte di oggi ci viene fornita da SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte guidato dalla community.
Foto per gentile concessione di generalizzazione (Flickr).
La domanda
Il lettore SuperUser topo morto vuole sapere se i dati sui dischi rigidi possono degradarsi ed รจ possibile accedervi senza un avviso sul danno:
ร possibile che il degrado fisico di un disco rigido possa causare il capovolgimento dei bit nei contenuti di un file senza che il sistema operativo noti la modifica e ne informi l'utente durante la lettura del file? Ad esempio, una “p” (binaria 01110000) in un file di testo ASCII potrebbe cambiare in una “q” (binaria 01110001), quindi quando un utente apre il file, vedono “q” senza essere consapevoli che si รจ verificato un errore?
Sono interessato a risposte relative a FAT, NTFS o ReFS (se fa la differenza). Voglio sapere se i sistemi operativi proteggono gli utenti da questo, o se dovremmo controllare i nostri dati per variazioni nel tempo tra le copie.
I dati sui dischi rigidi possono degradarsi ed รจ possibile accedervi senza un avviso sul danno?
La risposta
Il collaboratore del SuperUser Guntram Blohm ha la risposta per noi:
Sรฌ, esiste una cosa chiamata bit rot. No, non influenzerร l'utente inosservato.
Quando un disco rigido scrive un settore sui piatti, non solo scrive i bit nello stesso modo in cui sono memorizzati nella RAM, ma utilizza una codifica per assicurarsi che non vi siano sequenze dello stesso bit troppo lunghe. Aggiunge inoltre codici ECC che gli consentono di riparare errori che incidono su alcuni bit e di rilevare errori che interessano piรน di alcuni bit.
Quando il disco rigido legge il settore, controlla questi codici ECC e ripara i dati se necessario (e se possibile). Quello che succede dopo dipende dalle circostanze e dal firmware del disco rigido, che รจ influenzato dalla designazione del disco.
- Se un settore puรฒ essere letto e non ha problemi con il codice ECC, viene passato al sistema operativo.
- Se un settore puรฒ essere riparato facilmente, la versione riparata puรฒ essere scritta su disco, riletta, quindi verificata per determinare se l'errore era casuale (ovvero raggi cosmici, ecc.) O se si verifica un errore sistematico con il supporto.
- Se il disco rigido determina che si รจ verificato un errore con il supporto, rialloca il settore.
- Se un settore non puรฒ essere nรฉ letto nรฉ corretto dopo alcuni tentativi di lettura (su un disco rigido designato come disco rigido RAID), il disco rigido si arrenderร , riallocerร il settore e comunicherร al controller che si รจ verificato un problema . Si affida al controller RAID per ricostruire il settore dagli altri membri RAID e riscriverlo sul disco rigido guasto, che quindi lo memorizza nel settore riallocato (che si spera non abbia problemi).
- Se un settore non puรฒ essere letto o corretto sul disco rigido di un desktop, il disco rigido attiverร piรน tentativi di leggerlo. A seconda della qualitร del disco rigido, ciรฒ potrebbe comportare il riposizionamento della testina, controllando se ci sono bit che si ribaltano quando vengono letti ripetutamente, controllando quali bit sono i piรน deboli e poche altre cose. Se uno di questi tentativi ha esito positivo, il disco rigido riallocherร il settore e riscriverร i dati riparati.
Questa รจ una delle principali differenze tra i dischi rigidi venduti come dischi rigidi “desktop”, “NAS / RAID” o “videosorveglianza”. Un disco rigido RAID puรฒ semplicemente arrendersi rapidamente e fare in modo che il controller ripari il settore per evitare la latenza dal lato dell'utente. Un disco rigido desktop continuerร a riprovare piรน volte perchรฉ avere l'utente in attesa di alcuni secondi รจ probabilmente meglio che dire loro che i dati sono persi. E un disco rigido video valorizza velocitร di dati costanti piรน del recupero degli errori poichรฉ un frame danneggiato non viene nemmeno notato.
Ad ogni modo, il disco rigido saprร se c'รจ stato un po 'di marcio, in genere si riprenderร da esso, e se non ci riuscirร , dirร al controller che a sua volta dirร al driver che poi dirร al sistema operativo. Quindi, spetta al sistema operativo presentare l'errore all'utente e agire su di esso. Ecco perchรฉ cybernard dice:
- Non ho mai assistito a un singolo errore, ma ho visto molti dischi rigidi in cui interi settori hanno fallito.
Il disco rigido saprร se c'รจ qualcosa di sbagliato in un settore, ma non saprร quali bit sono falliti. Un singolo bit non riuscito verrร sempre rilevato da ECC.
Si noti che chkdsk e file system che si riparano automaticamente non risolvono i dati di riparazione all'interno dei file. Questi sono mirati alla corruzione all'interno della struttura del file system stesso, come una differenza nella dimensione di un file tra la voce della directory e il numero di blocchi allocati. La funzione di auto-guarigione di NTFS rileverร danni strutturali e gli impedirร di influenzare ulteriormente i dati, ma non riparerร i dati giร danneggiati.
Esistono, naturalmente, altri motivi per cui i dati possono essere danneggiati. Ad esempio, una RAM difettosa su un controller potrebbe alterare i dati prima ancora che vengano inviati al disco rigido. In tal caso, nessun meccanismo sul disco rigido rileverร o riparerร i dati e questo potrebbe essere uno dei motivi per cui la struttura di un file system รจ danneggiata. Altri motivi includono bug del software, blackout durante la scrittura sul disco rigido (anche se questo รจ risolto dal journaling del file system) o driver di file system errati (il driver NTFS su Linux รจ diventato predefinito di sola lettura per molto tempo da quando NTFS รจ stato retroingegnerizzato, non documentato e gli sviluppatori non si fidavano del proprio codice).
- Una volta ho avuto questo scenario in cui un'applicazione avrebbe salvato tutti i suoi file su due server diversi in due data center diversi al fine di mantenere una copia funzionante dei dati disponibili in tutte le circostanze. Dopo alcuni mesi, abbiamo notato che circa lo 0,1 percento di tutti i file copiati non corrispondeva alla somma di controllo MD5 che l'applicazione memorizzava nel suo database. Si รจ rivelato essere un cavo in fibra difettoso tra il server e la SAN.
Questi altri motivi sono il motivo per cui alcuni file system, come ZFS, mantengono ulteriori informazioni sulla somma di controllo al fine di rilevare errori. Sono progettati per proteggerti da molte piรน cose che possono andare storte rispetto alla semplice putrefazione.
Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere altre risposte da altri utenti esperti di Stack Exchange? Dai un'occhiata al thread completo di discussione qui.