La corrupción de datos se refiere a errores de datos informáticos que se producen durante la escritura, lectura, almacenamiento, transferencia o procesamiento de datos y que representan cambios no deseados en los datos originales. La computadora, los sistemas de transmisión y los sistemas de almacenamiento toman muchas medidas para mantener la integridad de la información o la ausencia de errores.
En general, cuando se dañan los datos, un archivo que contiene esos datos producirá resultados inesperados cuando lo utilice el sistema o la aplicación. El resultado puede 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 el usuario intenta abrir este archivo usando el editor de documentos, puede recibir un mensaje de error , entonces el archivo puede no abrirse o puede abrirse con alguna distorsión (o en algunos casos completamente corrompido). Además, si el archivo de imagen está dañado, se pierde gran parte de la información.
Algunos tipos de malware pueden destruir archivos intencionalmente escribiendo basura, aunque los virus benignos también pueden destruir archivos sin querer cuando intentan acceder a ellos. Si un virus o troyano intenta cambiar el método de acceso a archivos críticos en el sistema operativo de la computadora, todo el sistema puede volverse inestable.
Algunos programas pueden solicitarle que repare los archivos automáticamente (en caso de error) y algunos programas no pueden repararlos. Todo depende del nivel de destrucción y la funcionalidad integrada de las aplicaciones que manejan el error. Hay varias razones para la destrucción.
Hay dos tipos de corrupción de datos asociados con los sistemas informáticos: no reconocidos y reconocidos. La corrupción de datos no reconocida, también conocida como corrupción silenciosa de datos , conduce a los errores más peligrosos porque no hay síntomas de que los datos sean incorrectos. La corrupción de datos reconocida puede ser permanente con pérdida de datos o temporal, donde algunas partes del sistema pueden detectar y corregir el error. En el último caso, no hay corrupción de datos real.
La corrupción de datos puede ocurrir en cualquier nivel del sistema, desde el sitio central hasta los medios de almacenamiento. Los sistemas actuales intentan detectar corrupción en muchos niveles y luego recuperar los datos o reparar la corrupción. Esta operación casi siempre tiene éxito, pero en casos muy raros, la información obtenida en la memoria del sistema se corrompe y puede tener consecuencias impredecibles.
La corrupción de datos durante la transmisión tiene varias causas. La interrupción de la transmisión de datos provoca la pérdida de información . Las condiciones ambientales pueden afectar la transmisión de datos, especialmente cuando se trata de métodos de transmisión inalámbrica. Las nubes densas pueden bloquear la transmisión por satélite. Las redes inalámbricas son susceptibles a la interferencia de dispositivos como hornos de microondas.
Las fallas de hardware y software son las dos principales causas de pérdida de datos . La radiación de fondo , la destrucción de la cabeza y el envejecimiento o desgaste mecánico del dispositivo entran en la primera categoría, mientras que los errores de software generalmente ocurren debido a errores en el código del programa. Los rayos cósmicos causan la mayoría de los errores recuperables en DRAM [1] .
Algunos errores pasan desapercibidos sin ser detectados por el firmware del disco o el sistema operativo de la computadora. Estos errores se conocen como corrupción silenciosa de datos .
Hay muchas fuentes de errores además del propio sistema de disco. Por ejemplo, los cables pueden estar sueltos, la energía puede ser inestable [2] , las vibraciones como los ruidos fuertes [3] pueden verse afectados , las redes pueden introducir errores de transmisión no reconocidos, [4] los rayos cósmicos y muchas otras causas similares provocan errores en la memoria del software , y así sucesivamente. En 39 000 sistemas de almacenamiento analizados, se encontró que entre el 5% y el 10% de los errores del sistema fueron causados por errores en el software integrado (firmware) de los sistemas [5] . En resumen, cabe señalar que el número de errores no reconocidos según las observaciones del CERN supera significativamente un error por cada 10 16 bits [6] . La tienda en línea Amazon.com reconoce una cantidad similar de corrupción de datos en sus sistemas [7] .
Uno de los problemas es que la capacidad de las unidades de disco crece constantemente, mientras que el porcentaje de errores en ellas se mantiene sin cambios. La tasa de corrupción de datos permanece constante a lo largo del tiempo, lo que significa que las unidades modernas no son más confiables que las más antiguas. En unidades más antiguas, la posibilidad de corrupción de datos era muy pequeña debido a la pequeña cantidad de datos almacenados. Las unidades modernas son mucho más probables porque almacenan muchos más datos sin volverse más confiables. Por lo tanto, la corrupción latente de datos no es una preocupación seria siempre que los dispositivos de almacenamiento sigan siendo relativamente pequeños y lentos. En consecuencia, los usuarios de unidades de baja capacidad rara vez descubren corrupción oculta, por lo que la corrupción de datos no se consideró un problema que deba abordarse. Sin embargo, hoy en día con la llegada de unidades grandes y controladores RAID muy rápidos, los usuarios pueden transferir 10 16 bits en un tiempo lo suficientemente corto como para alcanzar fácilmente el umbral de corrupción de datos [8] .
Como ejemplo, el creador de ZFS , Jeff Bonwick, afirma que una base de datos rápida en Greenplum , una empresa que se especializa en el desarrollo y análisis de software de grandes almacenes de datos, detecta la corrupción de datos cada 15 minutos [9] . Como otro ejemplo, un estudio realizado por NetApp en más de 1,5 millones de HDD durante 41 meses encontró más de 400 000 corrupciones de datos latentes, de las cuales más de 30 000 no fueron detectadas por los controladores RAID. Otro estudio realizado por el CERN durante más de seis meses sobre más de 97 petabytes de datos encontró unos 128 megabytes de datos completamente corruptos [10] [11] .
La corrupción de datos latente puede provocar caídas en cascada , en las que el sistema puede ejecutarse durante un período de tiempo con un error inicial no detectado que provoca un aumento gradual en la cantidad de problemas hasta que se descubre la corrupción [12] . Por ejemplo, las fallas en los metadatos del sistema de archivos pueden provocar la corrupción parcial de varios archivos, o incluso hacer que todo el sistema de archivos sea inaccesible.
Cuando la corrupción de datos se comporta como un proceso de Poisson , donde cada bit de datos tiene una pequeña probabilidad independiente de ser cambiado, la corrupción de datos se puede detectar mediante sumas de verificación y, a menudo, se puede corregir mediante códigos de corrección de errores .
Si se encuentran daños irreparables en los datos, se pueden utilizar procesos como la retransferencia automática de datos o la restauración desde una copia de seguridad . Algunos niveles de arreglos RAID tienen la capacidad de recordar y usar bits de paridad para datos almacenados en un conjunto de discos y pueden recuperar datos corruptos si uno o más discos fallan, según el nivel de RAID implementado. Algunas arquitecturas de CPU utilizan varias comprobaciones transparentes para detectar y mitigar la corrupción de datos en las memorias caché del procesador , los búferes de la CPU y la canalización informática . Por ejemplo, la tecnología Intel Instruction Replay está disponible en los procesadores Intel Itanium . [13]
Las unidades de disco detectan y corrigen muchos errores utilizando códigos ECC / CRC [14] que se almacenan en el disco para cada sector. Si la unidad detecta errores de lectura de múltiples sectores, hace una copia del sector defectuoso a otra parte del disco, marcando el sector defectuoso como vacío sin que el sistema operativo esté involucrado (aunque esto puede retrasarse hasta la próxima escritura en el sector) . Esta "solución silenciosa" puede ser controlada por SMART y, para la mayoría de los sistemas operativos, hay herramientas disponibles para verificar automáticamente la unidad en busca de fallas inminentes debido a la degradación de SMART.
Algunos sistemas de archivos , como Btrfs , HAMMER , ReFS y ZFS , utilizan la suma de verificación de datos y metadatos internos para detectar daños latentes en los datos. Además, si se detecta corrupción y el sistema de archivos utiliza mecanismos RAID que brindan redundancia de datos , dichos sistemas de archivos pueden reconstruir la corrupción de manera transparente [15] . Este enfoque permite una mejor protección de la integridad de los datos que cubre toda la ruta de datos , lo que se conoce como protección de datos de extremo a extremo , en comparación con otros enfoques que no cubren otros niveles de protección de la integridad y permiten la corrupción de datos cuando los datos se mueven de un nivel a otro [ dieciséis]
de datos es otro método para reducir la posibilidad de corrupción de datos cuando se detectan y corrigen errores de disco antes de que se acumulen muchos errores. En lugar de verificar la paridad en cada lectura, la lectura se verifica durante un escaneo de disco regular, que a menudo se ejecuta como un proceso en segundo plano de baja prioridad. Tenga en cuenta que la operación de "limpieza de datos" activa la verificación de paridad. Si el usuario simplemente ejecuta un programa normal que lee datos del disco, la paridad no se verificará hasta que la paridad de lectura sea compatible y esté habilitada en el subsistema del disco.
Si existen mecanismos apropiados para detectar y tratar la corrupción de datos, esto puede garantizar la integridad de los datos. Esto es particularmente importante en aplicaciones comerciales (como bancos ) donde un error no detectado podría destruir un índice de base de datos o cambiar datos, lo que podría tener efectos drásticos en una cuenta bancaria. Al cifrar o comprimir datos, un pequeño error puede inutilizar un gran conjunto de datos [6] .
Datos | |
---|---|
|