La corrupción de datos se refiere a errores en los datos informáticos que ocurren durante la escritura, la lectura, el almacenamiento, la transmisión o el procesamiento y que introducen cambios no deseados en los datos originales. Los sistemas informáticos, de transmisión y de almacenamiento utilizan una serie de medidas para garantizar la integridad de los datos de extremo a extremo o la ausencia de errores.
En general, cuando se produce una corrupción de datos, un archivo que contiene esos datos producirá resultados inesperados cuando el sistema o la aplicación relacionada acceda a él. Los resultados pueden variar desde una pequeña pérdida de datos hasta un bloqueo del sistema. Por ejemplo, si un archivo de documento está dañado, cuando una persona intenta abrir ese archivo con un editor de documentos puede recibir un mensaje de error , por lo que el archivo podría no abrirse o podría abrirse con algunos de los datos dañados (o en algunos casos, completamente dañados, dejando el documento ininteligible). La imagen adyacente es un archivo de imagen dañado en el que se ha perdido la mayor parte de la información.
Algunos tipos de malware pueden dañar archivos intencionalmente como parte de su carga útil , generalmente sobrescribiéndolos con código inoperante o basura, mientras que un virus no malicioso también puede dañar archivos involuntariamente cuando accede a ellos. Si un virus o troyano con este método de carga útil logra alterar archivos críticos para el funcionamiento del software del sistema operativo o el hardware físico de la computadora, todo el sistema puede quedar inutilizable.
Algunos programas pueden sugerir la reparación automática del archivo (después del error), mientras que otros no pueden hacerlo. Esto depende del nivel de corrupción y de la funcionalidad incorporada de la aplicación para gestionar el error. Existen varias causas de la corrupción.
Existen dos tipos de corrupción de datos asociados con los sistemas informáticos: no detectada y detectada. La corrupción de datos no detectada, también conocida como corrupción de datos silenciosa , da lugar a los errores más peligrosos, ya que no hay ninguna indicación de que los datos sean incorrectos. La corrupción de datos detectada puede ser permanente con la pérdida de datos, o puede ser temporal cuando alguna parte del sistema es capaz de detectar y corregir el error; en este último caso, no hay corrupción de datos.
La corrupción de datos puede ocurrir en cualquier nivel de un sistema, desde el host hasta el medio de almacenamiento. Los sistemas modernos intentan detectar la corrupción en muchas capas y luego recuperarla o corregirla; esto casi siempre tiene éxito, pero muy raramente la información que llega a la memoria del sistema está dañada y puede causar resultados impredecibles.
La corrupción de datos durante la transmisión tiene diversas causas. La interrupción de la transmisión de datos provoca la pérdida de información . Las condiciones ambientales pueden interferir con la transmisión de datos, especialmente cuando se trata de métodos de transmisión inalámbrica. Las nubes densas pueden bloquear las transmisiones por satélite. Las redes inalámbricas son susceptibles a la interferencia de dispositivos como los hornos microondas.
Los fallos de hardware y software son las dos principales causas de pérdida de datos . La radiación de fondo , los choques del cabezal y el envejecimiento o desgaste del dispositivo de almacenamiento entran en la primera categoría, mientras que los fallos de software suelen producirse debido a errores en el código. Los rayos cósmicos causan la mayoría de los errores leves en la DRAM. [1]
Algunos errores pasan desapercibidos, sin ser detectados por el firmware del disco o el sistema operativo host; estos errores se conocen como corrupción de datos silenciosa . [2]
Existen muchas fuentes de error más allá del propio subsistema de almacenamiento en disco. Por ejemplo, los cables pueden estar ligeramente sueltos, la fuente de alimentación puede no ser fiable, [3] vibraciones externas como un sonido fuerte, [4] la red puede introducir corrupción no detectada, [5] radiación cósmica y muchas otras causas de errores de memoria blanda , etc. En 39.000 sistemas de almacenamiento analizados, los errores de firmware representaron entre el 5 y el 10 % de los fallos de almacenamiento. [6] En total, las tasas de error observadas por un estudio del CERN sobre corrupción silenciosa son mucho más altas que uno de cada 10 16 bits. [7] La tienda web Amazon.com ha reconocido tasas de corrupción de datos altas similares en sus sistemas. [8] En 2021, los núcleos de procesador defectuosos se identificaron como una causa adicional en publicaciones de Google y Facebook; se encontró que los núcleos estaban defectuosos a una tasa de varios miles de núcleos. [9] [10]
Un problema es que las capacidades de los discos duros han aumentado sustancialmente, pero sus tasas de error permanecen invariables. La tasa de corrupción de datos siempre ha sido aproximadamente constante en el tiempo, lo que significa que los discos modernos no son mucho más seguros que los discos antiguos. En los discos antiguos, la probabilidad de corrupción de datos era muy pequeña porque almacenaban cantidades minúsculas de datos. En los discos modernos, la probabilidad es mucho mayor porque almacenan muchos más datos, aunque no son más seguros. De esa manera, la corrupción silenciosa de datos no ha sido una preocupación grave mientras que los dispositivos de almacenamiento se mantuvieron relativamente pequeños y lentos. En los tiempos modernos y con la llegada de unidades más grandes y configuraciones RAID muy rápidas, los usuarios pueden transferir 10 16 bits en un tiempo razonablemente corto, alcanzando así fácilmente los umbrales de corrupción de datos. [11]
Como ejemplo, el creador de ZFS , Jeff Bonwick, afirmó que la base de datos rápida de Greenplum , que es una empresa de software de bases de datos especializada en almacenamiento y análisis de datos a gran escala, se enfrenta a una corrupción silenciosa cada 15 minutos. [12] Como otro ejemplo, un estudio de la vida real realizado por NetApp en más de 1,5 millones de discos duros durante 41 meses encontró más de 400.000 corrupciones de datos silenciosas, de las cuales más de 30.000 no fueron detectadas por el controlador RAID de hardware (solo se detectaron durante el depurador ). [13] Otro estudio, realizado por CERN durante seis meses y que involucró alrededor de 97 petabytes de datos, encontró que alrededor de 128 megabytes de datos se corrompieron permanentemente de manera silenciosa en algún lugar de la ruta de la red al disco. [14]
La corrupción silenciosa de datos puede dar lugar a fallos en cascada , en los que el sistema puede funcionar durante un período de tiempo con un error inicial no detectado que causa cada vez más problemas hasta que finalmente se detecta. [15] Por ejemplo, una falla que afecta a los metadatos del sistema de archivos puede dar lugar a que varios archivos se dañen parcialmente o se vuelvan completamente inaccesibles mientras el sistema de archivos se utiliza en su estado dañado.
Cuando la corrupción de datos se comporta como un proceso de Poisson , donde cada bit de datos tiene una probabilidad independientemente baja de ser modificado, la corrupción de datos generalmente se puede detectar mediante el uso de sumas de comprobación y a menudo se puede corregir mediante el uso de códigos de corrección de errores (ECC).
Si se detecta una corrupción de datos que no se puede corregir, se pueden aplicar procedimientos como la retransmisión automática o la restauración a partir de copias de seguridad . Ciertos niveles de matrices de discos RAID tienen la capacidad de almacenar y evaluar bits de paridad para datos en un conjunto de discos duros y pueden reconstruir datos dañados en caso de falla de uno o varios discos, según el nivel de RAID implementado. Algunas arquitecturas de CPU emplean varias comprobaciones transparentes para detectar y mitigar la corrupción de datos en cachés de CPU , búferes de CPU y canales de instrucciones ; un ejemplo es la tecnología Intel Instruction Replay , que está disponible en los procesadores Intel Itanium . [16]
Los discos duros detectan y corrigen muchos errores mediante los códigos ECC [17] que se almacenan en el disco para cada sector. Si el disco detecta varios errores de lectura en un sector, puede hacer una copia del sector defectuoso en otra parte del disco, reasignando el sector defectuoso del disco a un sector de repuesto sin la intervención del sistema operativo (aunque esto puede demorarse hasta la siguiente escritura en el sector). Esta "corrección silenciosa" se puede supervisar mediante SMART y las herramientas disponibles para la mayoría de los sistemas operativos para comprobar automáticamente si el disco tiene fallos inminentes observando el deterioro de los parámetros SMART.
Algunos sistemas de archivos , como Btrfs , HAMMER , ReFS y ZFS , utilizan la suma de comprobación de datos y metadatos internos para detectar la corrupción silenciosa de datos. Además, si se detecta una corrupción y el sistema de archivos utiliza mecanismos RAID integrados que proporcionan redundancia de datos , dichos sistemas de archivos también pueden reconstruir datos dañados de forma transparente. [18] Este enfoque permite una mejor protección de la integridad de los datos que cubre todas las rutas de datos, lo que generalmente se conoce como protección de datos de extremo a extremo , en comparación con otros enfoques de integridad de datos que no abarcan diferentes capas en la pila de almacenamiento y permiten que se produzca la corrupción de datos mientras los datos pasan los límites entre las diferentes capas. [19]
La depuración de datos es otro método para reducir la probabilidad de corrupción de datos, ya que los errores de disco se detectan y se recuperan antes de que se acumulen varios errores y superen la cantidad de bits de paridad. En lugar de comprobar la paridad en cada lectura, la paridad se comprueba durante un análisis regular del disco, que a menudo se realiza como un proceso en segundo plano de baja prioridad. La operación de "depuración de datos" activa una comprobación de paridad. Si un usuario simplemente ejecuta un programa normal que lee datos del disco, no se comprobará la paridad a menos que la comprobación de paridad en la lectura sea compatible y esté habilitada en el subsistema del disco.
Si se emplean mecanismos adecuados para detectar y remediar la corrupción de datos, se puede mantener la integridad de los mismos. Esto es particularmente importante en aplicaciones comerciales (por ejemplo, banca ), donde un error no detectado podría corromper un índice de base de datos o cambiar los datos para afectar drásticamente el saldo de una cuenta, y en el uso de datos cifrados o comprimidos , donde un pequeño error puede hacer que un conjunto de datos extenso quede inutilizable. [7]
La corrupción silenciosa de datos (SDC), a veces denominada error silencioso de datos (SDE), es un problema que afecta a toda la industria y que afecta no solo a la memoria, el almacenamiento y las redes protegidas durante mucho tiempo, sino también a las CPU de las computadoras.