Journaling
# Journaling

El journaling es un sistema por el cual se pueden implementar transacciones en los sistemas informáticos. También se le conoce como «registro por diario». Se basa en llevar un journal o registro de diario en el que se almacena la información necesaria para restablecer los datos afectados por la transacción en caso de que esta falle; de esta manera, estos sistemas de archivos se pueden restaurar a producción de forma veloz y con menos probabilidad de corrupción.

## Funcionamiento

El procedimiento es básicamente el siguiente:

* Se bloquean las estructuras de datos afectadas por la transacción para que ningún otro proceso pueda modificarlas mientras dura la transacción.
* Se reserva un recurso para almacenar el journal. Por lo general suelen ser unos bloques de disco, de modo que si el sistema se para de forma abrupta (corte eléctrico, avería, fallo del sistema operativo...) el journal siga disponible una vez reiniciado el sistema.
* Se efectúan una a una las modificaciones en la estructura de datos. Para cada una:
   * Se apunta en el journal como deshacer la modificación y se asegura de que esta información se escribe físicamente en el disco.
   * Se realiza la modificación.
* Si en cualquier momento se quiere cancelar la transacción se deshacen los cambios uno a uno leyéndolos y borrándolos del journal.
* Si todo ha ido bien, se borra el journal y se desbloquean las estructuras de datos afectadas.

Las aplicaciones más frecuentes de los sistemas de journaling se usan para implementar transacciones de sistemas de bases de datos y, más recientemente, para evitar la corrupción de las estructuras de datos en las que se basan los sistemas de archivos modernos.

En el caso concreto de los sistemas de archivos, el journaling se suele limitar a las operaciones que afectan a las estructuras que mantienen información sobre:

* Estructuras de directorio.
* Bloques libres de disco.
* Descriptores de archivo (tamaño, fecha de modificación...)

El hecho de que no se suela implementar el journaling de los datos concretos de un archivo suele carecer de importancia, puesto que lo que persigue el journaling de sistemas de archivos es evitar los engorrosos y largos chequeos de disco que efectúan los sistemas al apagarse bruscamente, ya que el sistema al arrancar solo deberá deshacer el journal para tener un sistema coherente de nuevo.

## Sistemas de archivos con journaling

* EXT3 de Linux
* NTFS de Windows NT
* EXT4 de Linux
* ReiserFS de Linux
* Reiser4 de Linux
* UFS de SUN Solaris
* XFS de IRIX y Linux
* HFS de Mac OS X
* HFS+ de Mac OS X
* VMFS-3 de VMware
* Smart File System de AmigaOS

lista no exhaustiva

