La depuración de datos es una técnica de corrección de errores que utiliza una tarea en segundo plano para inspeccionar periódicamente la memoria principal o el almacenamiento en busca de errores y, a continuación, corrige los errores detectados utilizando datos redundantes en forma de diferentes sumas de comprobación o copias de datos. La depuración de datos reduce la probabilidad de que se acumulen errores únicos corregibles, lo que reduce los riesgos de errores no corregibles.
La integridad de los datos es una preocupación de alta prioridad en la escritura, lectura, almacenamiento, transmisión o procesamiento de datos en sistemas operativos de computadoras y en sistemas de almacenamiento y transmisión de datos de computadoras. Sin embargo, solo unos pocos de los sistemas de archivos existentes y utilizados actualmente brindan protección suficiente contra la corrupción de datos . [1] [2] [3]
Para solucionar este problema, la depuración de datos permite realizar comprobaciones rutinarias de todas las inconsistencias en los datos y, en general, prevenir fallos de hardware o software. Esta función de "depuración" se produce habitualmente en memorias, matrices de discos, sistemas de archivos o FPGA como mecanismo de detección y corrección de errores. [4] [5] [6]
Con la depuración de datos, un controlador RAID puede leer periódicamente todos los discos duros de una matriz RAID y comprobar si hay bloques defectuosos antes de que las aplicaciones puedan acceder a ellos. Esto reduce la probabilidad de corrupción silenciosa de datos y pérdida de datos debido a errores a nivel de bit. [7]
En los entornos RAID de Dell PowerEdge , una función denominada "lectura de patrulla" puede realizar la limpieza de datos y el mantenimiento preventivo . [8]
En OpenBSD , la bioctl(8)
utilidad permite al administrador del sistema controlar estas lecturas de patrulla a través del BIOCPATROL
ioctl en el /dev/bio
pseudodispositivo ; a partir de 2019, esta funcionalidad es compatible con algunos controladores de dispositivos para controladores LSI Logic y Dell; esto incluye mfi(4)
desde OpenBSD 5.8 (2015) y mfii(4)
desde OpenBSD 6.4 (2018). [9] [10]
En FreeBSD y DragonFly BSD , la patrulla se puede controlar a través de una utilidad específica del controlador RAIDmfiutil(8)
desde FreeBSD 8.0 (2009) y 7.3 (2010). [11] La implementación de FreeBSD fue utilizada por los desarrolladores de OpenBSD para agregar soporte de patrulla a su marco genérico bio(4) y la utilidad bioctl , sin necesidad de una utilidad específica del controlador separada.
En NetBSD en 2008, el marco bio(4) de OpenBSD se amplió para incluir soporte para controles de consistencia, que se implementó para /dev/bio
pseudodispositivos bajo el comando BIOCSETSTATE
ioctl , con las opciones start y stop ( BIOC_SSCHECKSTART_VOL
y BIOC_SSCHECKSTOP_VOL
, respectivamente); esto es compatible solo con un único controlador a partir de 2019: arcmsr(4)
. [12]
Linux MD RAID , como una implementación RAID de software , permite realizar comprobaciones de la consistencia de los datos y proporciona una reparación automática de las inconsistencias detectadas en los datos. Estos procedimientos se realizan normalmente configurando un trabajo cron semanal . El mantenimiento se realiza emitiendo las operaciones check , repair o idle a cada uno de los dispositivos MD examinados. Los estados de todas las operaciones realizadas, así como los estados generales de RAID, están siempre disponibles. [13] [14] [15]
Como sistema de archivos de copia en escritura (CoW) para Linux , Btrfs proporciona aislamiento de fallas, detección y corrección de corrupción y limpieza del sistema de archivos. Si el sistema de archivos detecta una falta de coincidencia en la suma de comprobación al leer un bloque, primero intenta obtener (o crear) una buena copia de este bloque desde otro dispositivo, si se utilizan sus técnicas de duplicación interna o RAID. [16]
Btrfs puede iniciar una verificación en línea de todo el sistema de archivos activando un trabajo de limpieza del sistema de archivos que se realiza en segundo plano. El trabajo de limpieza escanea todo el sistema de archivos para comprobar su integridad e intenta automáticamente informar y reparar cualquier bloque defectuoso que encuentre en el proceso. [17] [18]
Las características de ZFS, que es una combinación de sistema de archivos y administrador de volúmenes lógicos , incluyen la verificación contra modos de corrupción de datos , verificación continua de la integridad y reparación automática. Sun Microsystems diseñó ZFS desde cero con un enfoque en la integridad de los datos y para proteger los datos en los discos contra problemas como errores de firmware de disco y escrituras fantasma. [ verificación fallida ] [19]
ZFS proporciona una utilidad de reparación llamada scrub
que examina y repara la corrupción silenciosa de datos causada por la descomposición de datos y otros problemas.
Debido a la alta densidad de integración de los chips de memoria de las computadoras actuales , las estructuras de las celdas de memoria individuales se volvieron lo suficientemente pequeñas como para ser vulnerables a los rayos cósmicos y/o a la emisión de partículas alfa . Los errores causados por estos fenómenos se denominan errores suaves . Esto puede ser un problema para las memorias basadas en DRAM y SRAM .
La limpieza de memoria detecta y corrige errores de bits en la RAM de la computadora mediante el uso de memoria ECC , otras copias de los datos u otros códigos de corrección de errores .
El scrubbing es una técnica que se utiliza para reprogramar un FPGA . Se puede utilizar de forma periódica para evitar la acumulación de errores sin necesidad de encontrar uno en el bitstream de configuración, simplificando así el diseño.
Se pueden adoptar numerosos enfoques con respecto a la depuración, desde la simple reprogramación del FPGA hasta la reconfiguración parcial. El método más simple de depuración es reprogramar completamente el FPGA a una cierta tasa periódica (normalmente 1/10 de la tasa de alteración calculada). Sin embargo, el FPGA no está operativo durante ese tiempo de reprogramación, en el orden de microsegundos a milisegundos. Para situaciones que no pueden tolerar ese tipo de interrupción, está disponible la reconfiguración parcial. Esta técnica permite reprogramar el FPGA mientras aún está operativo. [20]
La función Patrol Read está diseñada como una medida preventiva para garantizar el estado del disco físico y la integridad de los datos. Patrol Read busca y resuelve posibles problemas en los discos físicos configurados.