È possibile che cambi solo un bit in modo che il mio file mi mostri una lettera "Q" invece di una "S"


22

Nella nostra applicazione utilizziamo Hibernate e PostgreSQL per archiviare i dati. In una delle nostre tabelle del database abbiamo una colonna discriminatore che dice ad esempio "TIPPSPIEL". È una stringa fissa e non può essere manipolata da nessun utente.

All'improvviso abbiamo avuto una voce in questa enorme tabella in cui avevamo "TIPPQPIEL" invece di "TIPPSPIEL". Non abbiamo idea di come ciò possa accadere.

È possibile in qualche modo che il nostro disco rigido stia cambiando un bit, quindi la nostra lettera "S" non è più codificata come "1010001" ma diventa improvvisamente una "Q" sul disco rigido con un bit commutato in questo modo: 1010011?

Non sono un esperto di hard disk un po 'di fisica ma immagino che un sistema operativo o un disco abbia checksum e altre cose per garantire che ciò non accada.

È possibile che cambi solo un bit in modo che il mio file mi mostri una lettera "Q" anziché una "S"?

AGGIORNAMENTO: abbiamo effettuato ulteriori analisi. Il nostro database slave ottiene i suoi record WAL dal master (funzione PostgreSQL). Qualunque cosa: il nostro server slave dovrebbe essere sincronizzato. Ma lo schiavo non era sincronizzato riguardo a questa particolare fila. Abbiamo potuto vedere che è successo pochi giorni fa senza alcuna interazione da parte di un utente su questa voce specifica. Quindi DEVE essere un po 'capovolto. spaventoso!


Preferirei supporre che questo provenisse da un ricordo difettoso. Hai ancora il registro quando è stata scritta quella colonna?
ott--

1
È improbabile ma possibile, i bit in transito vengono capovolti con un alto grado di regolarità, vedi 'bitsquatting'
Sirch

Risposte:


10

È così raro che ci sia una domanda davvero interessante su questo sito, quindi prima di tutto grazie.

Penso che quello che stai vedendo sia davvero un errore a singolo bit, incredibile che potresti vederlo per essere onesto, ma hai ragione nel presumere che il secondo bit meno significativo sia stato cambiato (supponendo che stai usando ASCII Comunque).

Per quanto riguarda i checksum, ecc. Quando è stato scritto sul disco è probabile che sia stato verificato bene - Sono abbastanza sicuro che questo problema si sia sviluppato in seguito tramite un semplice errore di dispersione magnetica. Ma hai ragione, ci sono controlli di codifica eseguiti, varia a seconda del produttore, ma probabilmente c'è un errore da qualche parte che dice 'questo sembra un po' strano '- ma quale opzione ha la tua catena IO disponibile? ti neghi l'intero blocco? Presumo che si tratti di un singolo disco non RAID in quanto i dischi RAID tendono a disporre di più opzioni quando rilevano errori.

È strano, anche se questo genere di cose è probabilmente accaduto più volte al secondo in tutto il mondo.


1
Hai ragione, in questo caso era una configurazione del disco non Raid. come la mia ulteriore analisi mostra che è successo molto tempo dopo che il disco è stato scritto.
Janning,

1
Se i miei 20 anni come amministratore di sistema ho visto 3 casi di un singolo capovolgimento. Solo uno di questi potrebbe essere dimostrato al 100%. Si sospettava che gli altri 2 fossero bit capovolti, non si poteva dire con certezza. (Bit avrebbe potuto capovolgere la memoria dopo aver letto il file. Quando abbiamo notato la discrepanza il file originale non era più disponibile o era stato toccato. Sono abbastanza sicuro che accada più spesso di quanto si pensi, ma raramente si nota e di solito non è dimostrabile se viene notato.
Tonny,

1
La mancata lettura dell'intero blocco è esattamente ciò che fanno le unità quando ricevono un errore non correggibile. È impossibile far girare solo un bit nella parte dei dati utente del settore e non essere rilevati. Il bit deve essere stato invertito quando è stato scritto sul disco.
psusi,

Questa domanda dovrebbe essere resa canonica?
Deer Hunter,

@psusi Non impossibile, dato che hai solo bisogno di abbastanza bit-flip nel settore per far uscire l'ECC nel modo giusto. È improbabile, ma possibile, e i produttori di dischi citano tassi di errore abbastanza alti che dovresti davvero aspettarti di vedere. Ho sentito delle voci secondo cui le persone ZFS le vedono (a causa dei checksum dei dati a livello ZFS) ...
derobert
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.