Skip to content

È possibile che i dati su un disco rigido si degradino senza che Windows mi avverta che ciò è avvenuto quando si tenta di accedere ai dati?

Se trovi bug con il tuo codice o progetto, ricordati di testare sempre in un ambiente di test prima di aggiungere il codice al progetto finale.

Soluzione:

esiste una cosa chiamata "bit rot".

Ma non, non ti farà passare inosservato.

Quando un'unità scrive un settore sui piatti, non si limita a scrivere i bit nello stesso modo in cui sono memorizzati nella RAM: utilizza una codifica per assicurarsi che non ci siano sequenze di bit uguali troppo lunghe e aggiunge codici ECC che consentono di riparare gli errori che interessano pochi bit e di rilevare gli errori che interessano più di qualche bit.

Quando l'unità legge il settore, controlla questi codici ECC e ripara i dati, se necessario e possibile. Ciò che accade successivamente dipende dalle circostanze e dal firmware dell'unità, che è influenzato dalla designazione dell'unità.

  • Se un settore può essere letto e non presenta problemi ECC, viene passato al sistema operativo.
  • Se un settore può essere riparato facilmente, la versione riparata può essere scritta sul disco, riletta e verificata, per determinare se l'errore era casuale (raggi cosmici.) o se c'è un errore sistematico nel supporto.
  • Se l'unità determina che c'è un errore nel supporto, rialloca il settore
  • Se un settore non può essere né letto né corretto dopo alcuni tentativi di lettura, su un'unità designata come unità RAID l'unità si arrende, rialloca il settore e comunica al controller il problema. Si affida al controller RAID per ricostruire il settore dagli altri membri del RAID e scriverlo di nuovo sull'unità guasta, che lo memorizza nel settore riallocato che si spera non abbia il problema.
  • Se un settore non può essere letto o corretto su un'unità unità desktop, l'unità farà molti altri tentativi per leggerlo. A seconda della qualità dell'unità, ciò potrebbe comportare il riposizionamento della testina, il controllo di eventuali bit che si capovolgono quando vengono letti ripetutamente, il controllo dei bit più deboli e altre operazioni. Se uno di questi tentativi ha successo, l'unità rialloca il settore e riscrive i dati riparati.

(Questa è una delle principali differenze tra le unità vendute come "Desktop", "NAS/RAID" o "Videosorveglianza". Un'unità RAID può arrendersi rapidamente e far sì che il controller ripari il settore per evitare la latenza da parte dell'utente. Un'unità desktop riproverà più volte, perché far aspettare l'utente qualche secondo è probabilmente meglio che dirgli che i dati sono andati persi. Inoltre, un'unità video attribuisce maggiore importanza alla velocità costante dei dati rispetto al recupero degli errori, in quanto un frame danneggiato in genere non viene nemmeno notato).

In ogni caso, l'unità saprà se c'è stato un bit rot, in genere si riprenderà da esso e, se non ci riesce, lo dirà al controller che a sua volta lo dirà al driver che lo dirà al sistema operativo. Spetta poi al sistema operativo presentare l'errore all'utente e agire di conseguenza. Ecco perché cybernard dice

Non ho mai assistito a un errore di un singolo bit, ma ho visto molti dischi rigidi in cui interi settori si sono guastati.

il disco sa che c'è qualcosa di sbagliato nel settore, ma non sa quali bit si sono guastati. (Un singolo bit fallito sarà sempre catturato dall'ECC).

Si noti che chkdsk e la riparazione automatica dei filesystem non riguardano la riparazione dei dati. all'interno di file. Si tratta di riparazioni mirate a danni alla struttura del filesystem, come la differenza tra la dimensione di un file e il numero di blocchi allocati. La funzione di auto-guarigione di NTFS rileva i danni strutturali e impedisce che si ripercuotano ulteriormente sui dati, ma non ripara i dati già danneggiati.

Esistono naturalmente altri motivi per cui i dati possono danneggiarsi. Ad esempio, una RAM difettosa su un controller può alterare i dati prima ancora che vengano inviati all'unità. In questo caso, nessun meccanismo sull'unità rileverà o riparerà i dati e questo può essere uno dei motivi per cui la struttura di un filesystem è danneggiata. Altre ragioni includono bug del software, blackout durante la scrittura del disco (anche se questo problema è risolto dal journaling del filesystem), o driver del filesystem difettosi (il driver NTFS su Linux è stato impostato di default in sola lettura per molto tempo, poiché NTFS è stato sottoposto a reverse engineering, non documentato, e gli sviluppatori non si fidavano del proprio codice).

Una volta mi è capitato uno scenario in cui un'applicazione salvava tutti i suoi file su due server diversi in data center diversi, per mantenere una copia funzionante dei dati in ogni circostanza. Dopo alcuni mesi, abbiamo notato che su una delle copie, circa lo 0,1% di tutti i file non corrispondeva alla somma MD5 memorizzata dall'applicazione nel suo database. Si è scoperto che si trattava di un cavo in fibra difettoso tra il server e la SAN.

Queste altre ragioni sono il motivo per cui alcuni filesystem, come ZFS, conservano informazioni aggiuntive di checksum per rilevare gli errori. Sono progettati per proteggere l'utente da molte più cose che possono andare storte rispetto al semplice bit rot.

Sì, i dischi rigidi possono e si degradano senza alcun avviso da parte del sistema operativo. Si chiama bit rot. Non ho mai assistito a un singolo errore di bit, ma ho visto molti dischi rigidi in cui interi settori si sono guastati.

Windows non ha una protezione integrata del contenuto dei file al di là della struttura del filesystem NTFS. Pensate a NTFS come a un libro: protegge solo l'indice e verifica che le cose corrispondano. Tuttavia, se il danno si trova nel mezzo di una pagina, non offre alcuna protezione. FAT non ha nulla. Le unità disco impiegano la correzione degli errori ECC su base settoriale, ma l'unità non lo dice a Windows. Alcuni tipi di file dispongono di hash CRC, MD5 o SHA per rilevare la corruzione, ma non lo fanno. correggere nulla.

Anche in questo caso l'hash dice solo che c'è un problema, ma non sa dove si trova l'errore.

Il disco rigido è dotato di SMART che monitora lo stato di salute del disco rigido, ma a meno che il disco non sia in punto di morte, il BIOS non vi avvertirà. Peggio ancora, SMART è spesso disabilitato per impostazione predefinita nel BIOS. È possibile monitorare i numeri tramite software, ma le diverse unità presentano problemi diversi. Se avete un mucchio di settori delocalizzati, o gli errori ECC aumentano costantemente. Se si verificano 100.000 nuovi errori ECC ogni giorno, è un brutto segno.

Molti tipi di file non hanno protezione contro bit rot. Come TXT e BMP, che non hanno alcuna protezione. Winrar ha un'opzione opzionale per aggiungere dati di parità all'archivio, il che renderà il file più grande, ma è in grado di rilevare (proporzionalmente alla quantità di dati di parità aggiunti) e riparare questo tipo di errore.

Tutti gli altri programmi di compressione che conosco rilevano gli errori, ma non possono fare nulla.

Alla fine, gli errori in un settore saranno così gravi che l'ECC non potrà correggerli e l'unità fornirà ciò che legge anche se è sbagliato.

È possibile usare QuickPar o simili per creare file di dati di parità, ma per quanto ne so non c'è modo di automatizzarlo. Ad esempio, quando si deve aggiornare manualmente la parità, è necessario modificare il file. È anche possibile avere dati di parità per un gruppo di file, ma se si cambia un file è necessario ricreare l'intero set di parità. Questo è un vero grattacapo per tutti i file, tranne che per un numero ridotto.

Sì, è possibile. Windows è solo software. Il software è una serie di istruzioni che un computer deve seguire.

Pensate a un altro tipo di serie di istruzioni: un libro. Cosa possono fare quelle istruzioni se sono scritte in un libro che sta su uno scaffale e nessuno si preoccupa di aprirlo e leggerlo?

Proprio come quelle istruzioni scritte richiedono che una persona legga le istruzioni e inizi a seguirle, il software del computer richiede che l'hardware faccia qualcosa per essere utile. Anche se un libro contiene istruzioni scritte con un'accuratezza favolosa, questo non impedisce che ci siano problemi se una persona decide di leggere le istruzioni ma poi le mette in pratica in modo sbagliato. Allo stesso modo, il software non può impedire all'hardware di fare cose sbagliate. Quindi, un hardware rotto può fisicamente trionfare su ciò che qualsiasi software può fare, compreso Microsoft Windows.

Ora, ReFS può essere progettato con l'intento che il software memorizzi i dettagli dei dati, per poi confrontarli in seguito. Un concetto semplice è quello di "checksum", in cui il software aggiunge determinati valori e si assicura che questi corrispondano a un risultato atteso. Quando l'hardware implementa il software, è possibile rilevare alcuni risultati negativi. È persino molto probabile che funzioni. Tuttavia, poiché il numero di potenziali problemi che potrebbero teoricamente esistere è praticamente infinito, non c'è alcuna garanzia che il software rilevi necessariamente ogni singolo problema. (Tenete presente che il software è una serie di istruzioni create in anticipo).

La FAT è particolarmente povera di funzioni. La FAT12 è stata progettata per i dischi floppy e la FAT16 per i sistemi fino a 4 GB (anche se la maggior parte dell'implementazione Microsoft della FAT16 tendeva a non funzionare sopra i 2 GB). Senza l'estensione VFAT, nessuno dei due supportava nomi di file più lunghi di 11 caratteri (alcuni dei quali si trovavano in una parte chiamata "estensione"). La FAT è stata semplicemente progettata per memorizzare i dati in un'epoca in cui la capacità di memorizzare i dati era un concetto nuovo che doveva essere insegnato agli adulti. Quando la FAT era considerata una tecnologia "all'avanguardia", la tecnologia informatica non era ancora sufficientemente diffusa ed elaborata da far sì che le persone si preoccupassero delle funzionalità avanzate.

NTFS ha aggiunto il supporto per alcune altre funzioni, forse la più importante delle quali è che il sistema operativo sia in grado di tenere facilmente traccia delle autorizzazioni degli utenti. Esistono diverse versioni di NTFS. Ad esempio, Moab fa notare che Windows Server 2008 ha aggiunto il supporto per l'auto-guarigione NTFS, che potrebbe rilevare alcune cose. Tuttavia, questa funzione era nuova per Windows Server 2008, quindi non è affatto supportata da Windows XP (o Windows Server 2003, o precedenti). Tuttavia, esaminando l'elenco delle funzionalità, sembra che si tratti di alcuni metadati che aiutano il sistema operativo a rilevare problemi così gravi da impedire il montaggio del disco o altre aree chiave del disco che influiscono sul kernel del sistema operativo. Non sembra che ogni singolo dato, in ogni singolo file, sia influenzato da questa particolare funzione.

È estremamente improbabile che il software di questi sistemi operativi si accorga di queste cose, a meno che non causino problemi notevoli al sistema operativo per svolgere le sue attività. Ci possono essere alcune eccezioni, come le porzioni del sistema operativo che controllano i dischi (CheckDsk/ChkDsk/ScanDisk/ScanDskW, a seconda del sistema operativo), ma anche queste saranno piuttosto limitate su ciò che possono rilevare, in gran parte perché i filesystem non memorizzano una grande quantità di dati che sono stati pensati per essere utili per il controllo del disco.

(RAID5 potrebbe essere più incline a rilevare queste cose, con ogni bit che ha un bit di parità che aiuterebbe a notare qualcosa di insolito. Anche in questo caso, spetterebbe all'implementazione del RAID eseguire un controllo per notare il problema. Se il problema si verifica in una parte del disco che non viene utilizzata attivamente, il problema potrebbe rimanere inosservato fino a quando qualcuno non tenta di utilizzare quei dati).

In tempi più recenti, un numero maggiore di bit significava che le probabilità piccole, come quelle di "1 su 10 milioni", erano più probabili. Il grande pubblico ha anche imparato a conoscere i "raggi cosmici", che possono avere un piccolo impatto sulle cose. Poiché i bit vengono stipati in modo così stretto nei dispositivi più recenti, i requisiti fisici per rappresentare un bit sono più piccoli, quindi è più probabile che anche piccoli impatti incidano sul modo in cui un bit viene riconosciuto. ReFS ha alcune funzioni progettate per aiutarli a essere rilevati. L'articolo di Wikipedia su ReFS parla di "controllo automatico dell'integrità". Poiché questa viene descritta come una caratteristica notevole di questo filesystem, è probabile che tali funzioni siano più sviluppate rispetto a NTFS (e certamente più di FAT, che era di natura relativamente semplice e quindi non aveva praticamente nessuna funzione di questo tipo).

valutazioni e recensioni

Se puoi, hai la possibilità di lasciare un tutorial su cosa aggiungeresti a questa affermazione.



Utilizzate il nostro motore di ricerca

Ricerca
Generic filters

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.