¿Qué hace en realidad el 'Disco de verificación' después de grabar para verificar los datos?
La función 'verificar disco' es excelente para asegurarse de que su disco recién quemado esté bien, pero ¿cómo funciona exactamente? La publicación de preguntas y respuestas de SuperUser de hoy tiene la respuesta a la pregunta de un lector curioso.
La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..
Foto cortesía de cobalt123 (Flickr)..
La pregunta
Superusuario lector user1301428 quiere saber cómo se verifican los discos después de que se graban:
¿Qué hace el disco de verificación después de la grabación para verificar los datos? Me imagino que es una especie de comparación entre los archivos originales y los que se han grabado en el disco, pero ¿alguien sabe cómo se hace realmente a bajo nivel??
Quiero decir, ¿crea un hash del contenido de origen y destino, y luego los compara? Si es así, ¿almacena el hash del contenido grabado en la RAM? ¿O lo guarda en un archivo temporal en el disco duro? ¿Hay un archivo de registro de lo que está pasando??
Solo tengo curiosidad por saber exactamente cómo funciona esta característica. Y me refiero a Windows Image Burner..
¿Cómo funciona el proceso de verificación del disco??
La respuesta
Los colaboradores de SuperUser Frank Thomas y Synetech tienen la respuesta para nosotros. En primer lugar, Frank Thomas:
Echa un vistazo a estas páginas de MSDN en la API de Windows para la interfaz IBurnVerification y la enumeración IMAPI_BURN_VERIFICATION_LEVEL.
Para discos de datos, parece que en el modo rápido no hace una suma de comprobación de todo el disco, solo una selección de sectores. Luego se asegura de que las llamadas a la API READ_DISC_INFO y READ_TRACK_INFO tengan éxito contra el nuevo disco.
Para una verificación completa, realiza las comprobaciones anteriores, luego realiza una suma de comprobación completa en la última sesión en el nuevo disco contra una suma de comprobación calculada en la secuencia de memoria que se está grabando. Las sumas de comprobación deben almacenarse en RAM, pero es probable que sean valores de corta duración. Tenga en cuenta que la comparación es con la imagen del disco en la RAM, no con el medio de origen en sí, por lo que si los datos de origen no se leyeron correctamente, se escribirán de forma incorrecta. La verificación no detectará esto..
Para los discos de música, se enfoca en la comprobación de READ_TRACK_INFO y la tabla de contenido del disco, pero no realiza un cálculo de suma de comprobación. No hay un modo de verificación completo para la música.
Seguido por la respuesta de Synetech:
Frank explicó muy bien la verificación específica de Windows. Daré una respuesta más general..
- ¿Qué hace el disco Verificar después de grabar para verificar los datos??
- Quiero decir, ¿crea un hash del contenido de origen y destino, y luego los compara? Si es así, ¿almacena el hash del contenido grabado en la RAM? ¿O lo guarda en un archivo temporal en el disco duro? ¿Hay un archivo de registro de lo que está pasando??
Esta es ciertamente una de las formas en que se puede implementar una comparación: hash un archivo (con suerte con un algoritmo de colisión con baja probabilidad de lectura lo suficientemente grande), repetir para el otro y comparar hashes. Si así es como se implementa una verificación, entonces podrá ver el flash del LED de la unidad por un tiempo, luego el flash del CD / DVD-LED por un tiempo.
Otra forma de implementar la verificación es leer un bloque de un archivo, luego el mismo bloque del otro archivo, compararlos y luego repetirlos hasta llegar al final del archivo. En este caso, verá que los LED de las dos unidades se alternan hacia adelante y hacia atrás..
Por supuesto, si el disco duro y la unidad óptica no tienen LED, entonces no será tan obvio. Pero aún puede verlo con ProcessMonitor porque registrará una serie de lecturas de una, luego la otra en una sola ráfaga grande o alternando pequeñas ráfagas..
- Me imagino que es una especie de comparación entre los archivos originales y los que se han grabado en el disco, pero ¿alguien sabe cómo se hace realmente a bajo nivel??
En realidad, todo lo que realmente hace es vaciar la memoria caché de la unidad para que la función de comparación esté leyendo los datos del disco real en lugar de hacerlo desde la memoria caché. Obviamente, este es un paso crítico porque si la verificación se realiza desde la memoria caché, entonces no representa lo que realmente está en el disco, por lo que la corrupción puede pasar fácilmente a través de.
Puede ver si se realiza una comparación desde la unidad o desde la memoria caché en la RAM según la rapidez con la que se produce. Si realiza manualmente una comparación simple (es decir, con WinDiff, WinMerge o mediante el uso de hash con una herramienta de hashing), notará que la comparación ocurre mucho más rápido de lo esperado porque está leyendo los archivos de la memoria caché. Debe vaciar el caché para forzarlo a leer desde el disco real. Para las unidades ópticas (y otros medios extraíbles como las unidades flash y las tarjetas de memoria), simplemente expulsar la unidad es suficiente para vaciar la memoria caché, pero para las unidades de disco duro, no es tan simple (aunque por lo general eso no importa porque nueva copia es la que quieres probar).
¿Tienes algo que agregar a la explicación? Apaga el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.