Diario o registro de escritura anticipada

El registro en diario , o el registro de escritura anticipada, es una solución sofisticada al problema de la inconsistencia del sistema de archivos en los sistemas operativos. Inspirado en los sistemas de administración de bases de datos, este método primero escribe un resumen de las acciones que se realizarán en un «registro» antes de escribirlas en el disco. De ahí el nombre, «registro de escritura anticipada». En el caso de un bloqueo, el sistema operativo simplemente puede verificar este registro y continuar desde donde lo dejó. Esto ahorra múltiples escaneos de disco para corregir la inconsistencia, como es el caso de FSCK.

Buenos ejemplos de sistemas que implementan el registro de datos incluyen los sistemas de archivos Linux ext3 y ext4 y Windows NTFS.

Diario de datos:
un registro se almacena en una estructura de datos simple llamada diario. La siguiente figura muestra su estructura, que consta de tres componentes.

  1. TxB (Bloque de inicio de transacción):
    Contiene el ID de la transacción o el TID.
  2. Bloques de INode, Bitmap y Datos (Metadatos):
    Estos tres bloques contienen una copia del contenido de los bloques a actualizar en el disco.
  3. TxE (Transaction End Block)
    Esto simplemente marca el final de la transacción identificada por el TID.

Tan pronto como se solicita una actualización, se escribe en el registro y, posteriormente, en el sistema de archivos. Una vez que todas estas escrituras sean exitosas, podemos decir que hemos llegado al punto de control y que la actualización está completa.

¿Qué sucede si se produce un bloqueo durante el registro en diario?
Se podría argumentar que el diario, en sí mismo, no es atómico. Por lo tanto, ¿cómo maneja el sistema una escritura sin control? Para superar este escenario, el registro en diario se realiza en dos pasos: escrituras simultáneas en TxB y los siguientes tres bloques, y luego escritura en TxE. El proceso se puede resumir de la siguiente manera.

  1. Escritura de diario:
    escriba TxB, iNode, mapa de bits y contenido de bloque de datos en el diario (registro).
  2. Compromiso de diario :
    escriba TxE en el diario (registro).
  3. Punto de control:
    escriba el contenido del iNode, el mapa de bits y el bloque de datos en el disco.

Un bloqueo puede ocurrir en diferentes puntos durante el proceso de registro en diario. Si se produce un bloqueo en el paso 1, es decir, antes de TxE, simplemente podemos omitir esta transacción por completo y el sistema de archivos se mantiene constante.

Si se produce un bloqueo en el paso 2, significa que, aunque se ha registrado la transacción, no se ha escrito por completo en el disco. No podemos estar seguros de cuál de los tres bloques (iNode, mapa de bits y bloque de datos) se actualizó realmente y cuáles sufrieron un bloqueo. En este caso, el sistema escanea el registro en busca de transacciones recientes y vuelve a realizar la última transacción. Esto conduce a escrituras de disco redundantes, pero garantiza la coherencia. Este proceso se denomina registro de rehacer .

Uso del diario como un búfer circular:
dado que se realizan muchas transacciones, el registro del diario podría agotarse. Para abordar este problema, podemos usar el registro diario como un búfer circular en el que las transacciones más nuevas siguen reemplazando a las antiguas de manera circular. La siguiente figura muestra una vista general del diario, con tr1 como la transacción más antigua y tr5 como la más nueva.

El superbloque mantiene punteros a las transacciones más antiguas y más recientes. Tan pronto como se completa la transacción, se marca como «gratis» y el superbloque se actualiza a la siguiente transacción.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *