Los sistemas de archivos en el sistema operativo tienen mecanismos para persistir a pesar de los cambios bruscos de energía, lo que soluciona el problema de la consistencia de fallas. Para comprender el escenario del bloqueo, suponga que un usuario ha dado la instrucción de «escribir» en el disco y, en medio del proceso, alguien desconecta el cable de alimentación. El disco solo se actualizó parcialmente. Luego, el usuario reinicia el sistema, esperando que el sistema de archivos se vuelva a montar.
Considere una instancia en la que el usuario desea agregar un solo bloque de datos (4 KB) a un archivo existente. La siguiente figura indica el estado antes de agregar (los bloques blancos están vacíos, mientras que los verdes indican que contienen datos).
Cuando se escribe un bloque de disco, se realizan 3 actualizaciones en el sistema de archivos:
- El iNode se actualiza.
- El mapa de bits de datos se actualiza.
- Se asigna un nuevo bloque de datos.
La siguiente figura muestra el estado después de agregar (los bloques rojos indican actualizaciones).
Sin embargo, estas actualizaciones no ocurren atómicamente. Por lo tanto, pueden presentarse los siguientes casos:
- Solo la actualización de Inode se escribe en el disco:
en este caso, Inode apuntará al bloque de datos, pero dado que los nuevos datos nunca se escribieron, leerá el contenido basura antiguo de la dirección. Esto conduce a la inconsistencia del sistema de archivos. - Solo el bloque de datos se escribe en el disco:
en este caso, hay datos en el disco pero no hay un INode para referirse a ellos. Esto es equivalente al caso de que no se haya producido ninguna escritura. El sistema NO está en un estado inconsistente. - Solo el mapa de bits actualizado se escribe en el disco:
en este caso, el mapa de bits muestra que el bloque de datos se ha escrito, pero no hay ningún INode que apunte a él. Básicamente, esto desperdicia espacio en el bloque de datos (porque ese bloque nunca se usará para almacenar más datos). Esto provoca una fuga de espacio y una incoherencia en el sistema de archivos. - Solo se escriben en el disco el iNode y el mapa de bits de datos:
en este caso, no hay datos escritos en el disco. Por lo tanto, aunque los metadatos del archivo sean correctos, se recuperarán valores basura antiguos al acceder. - Solo el iNode y el bloque de datos se escriben en el disco:
en este caso, hay una inconsistencia entre el iNode y el mapa de bits. - Solo el mapa de bits y el bloque de datos se escriben en el disco:
en este caso, nuevamente hay una inconsistencia entre el INode y el mapa de bits de datos. Tenemos algunos datos en alguna parte, pero no sabemos a qué archivo pertenece.
Soluciones al problema:
hay dos soluciones estándar al problema de la inconsistencia del sistema de archivos: el Comprobador del sistema de archivos (FSCK), un enfoque tradicional, y un enfoque más moderno llamado diario (o registro de escritura anticipada).
Publicación traducida automáticamente
Artículo escrito por Anannya Uberoi 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA