¿Es posible que solo un bit cambie para que mi archivo me muestre una letra "Q" en lugar de una "S"

22

En nuestra aplicación utilizamos Hibernate y PostgreSQL para almacenar datos. En una de nuestras tablas de la base de datos tenemos una columna discriminadora que dice, por ejemplo, "TIPPSPIEL". Es una cadena fija y no puede ser manipulada por ningún usuario.

De repente, tuvimos una entrada en esta gran tabla donde teníamos "TIPPQPIEL" en lugar de "TIPPSPIEL". No tenemos idea de cómo puede suceder esto.

¿Es posible de alguna manera que nuestro disco duro esté cambiando un bit, por lo que nuestra letra "S" ya no está codificada como "1010001" pero de repente se convierte en una "Q" en el disco duro con un bit cambiado de esta manera: 1010011?

No soy un experto en física de discos duros, pero supongo que un sistema operativo o un disco tiene sumas de comprobación y otras cosas para garantizar que esto no suceda.

¿Es posible que solo un bit cambie para que mi archivo me muestre una letra "Q" en lugar de una "S"?

ACTUALIZACIÓN: Hicimos más análisis. Nuestra base de datos esclava obtiene sus registros WAL del maestro (función PostgreSQL). Lo que sea: nuestro servidor esclavo debe estar sincronizado. Pero el esclavo no estaba sincronizado con respecto a esta fila en particular. Pudimos ver que sucedió hace unos días sin ninguna interacción de un usuario en esta entrada en particular. Por lo tanto, DEBE ser un poco volteando. ¡de miedo!

Janning
fuente
Prefiero asumir que esto vino de una memoria defectuosa. ¿Todavía tiene el registro cuando se escribió esa columna?
ott--
1
Es poco probable pero posible, los bits en tránsito se voltean con un alto grado de regularidad, vea 'bitsquatting'
Sirch

Respuestas:

10

Es tan raro que vemos una pregunta realmente interesante en este sitio, así que gracias en primer lugar.

Creo que lo que está viendo es un error de un solo bit, es sorprendente que pueda detectarlo para ser honesto, pero tiene razón al suponer que se ha cambiado el segundo bit menos significativo (suponiendo que esté usando ASCII de todas formas).

En cuanto a las sumas de verificación, etc., cuando se escribió en el disco, es probable que se haya verificado como correcto; estoy bastante seguro de que este problema se desarrolló posteriormente a través de un simple error de fuga magnética. Pero tiene razón, se realizan comprobaciones de codificación, varía según el fabricante, pero probablemente haya un error en alguna parte que dice 'esto parece un poco extraño', pero ¿qué opción tiene disponible su cadena de E / S? ¿Te niego todo el bloque? Asumiré que este es un disco único no RAID ya que los discos RAID tienden a tener más opciones disponibles cuando detectan errores.

Es extraño, aunque este tipo de cosas probablemente sucedieron varias veces por segundo en todo el mundo.

Chopper3
fuente
1
Tienes razón, era una configuración de disco no Raid en este caso. como mi análisis posterior muestra que sucedió mucho después de que se escribió el registro.
Janning
1
Si mis 20 años como administrador del sistema he visto 3 casos de un solo cambio de bit. Solo uno de esos podría probarse al 100%. Se sospechaba que los otros 2 eran partes volteadas, no podíamos decirlo con certeza. (Bit podría haberse volcado en la memoria después de leer el archivo. En el momento en que notamos la discrepancia, el archivo original ya no estaba disponible o había sido tocado. Estoy bastante seguro de que sucede con más frecuencia de lo que todos piensan, pero rara vez se nota y generalmente no es demostrable si se nota.
Tonny
1
Fallar la lectura del bloque completo es exactamente lo que hacen las unidades cuando reciben un error que no se puede corregir. Es imposible tener un solo cambio de bit en la parte de datos del usuario del sector, y pasar desapercibido. El bit debe haberse invertido cuando se escribió en el disco.
psusi
¿Debería esta pregunta hacerse canónica?
Deer Hunter
@psusi No es imposible, ya que solo necesita suficientes cambios de bits en el sector para que el ECC salga bien. Es improbable, pero posible, y los fabricantes de discos citan tasas de error lo suficientemente altas que realmente debería esperar ver. He escuchado rumores de que la gente de ZFS los ve (debido a las sumas de verificación de datos de nivel ZFS) ...
derobert