¿Qué es un sistema de archivos con journaling?

Cada sistema operativo utiliza su propio sistema de archivos para almacenar datos. Windows utiliza NTFS, macOS utiliza APFS y la mayoría de las distribuciones de Linux utilizan Ext4. Aunque estos sistemas de archivos son fundamentalmente diferentes entre sí, una característica que existe en todos estos sistemas de archivos es el journaling.
Adentrémonos más en los sistemas de archivos con journaling y cómo afectan la computación diaria.
¿Qué es el Journaling?
Imagina que cada archivo en una computadora es un catálogo de biblioteca único de diarios, publicaciones periódicas o documentos. Cada nuevo número añadido a un catálogo cambiaría ligeramente su información. En lugar de buscar por toda la biblioteca una entrada, solo tienes que comprobar el catálogo relevante.
El journaling en los sistemas de archivos informáticos funciona de manera muy similar. Su propósito es realizar un seguimiento de los cambios que aún no se han comprometido al sistema de archivos. Incluso después de cualquier fallo o apagón inesperado, aún puedes acceder a la versión más reciente del archivo con una menor probabilidad de que se corrompa.

El término “journal” proviene de la analogía de un diario. Cualquier cambio que registres en una entrada de diario se almacena con fecha y hora. De manera similar, el journaling permite que todas las actualizaciones a un archivo se almacenen en una porción contigua del disco.
Estas actualizaciones no tienen que estar ubicadas físicamente cerca unas de otras: de hecho, las entradas del archivo journal están dispersas por todo el disco. Pero en lugar de acceder a ellas de manera aleatoria, están disponibles en una secuencia similar a la de un diario, que es miles de veces más rápida.

El journaling ahorra mucho tiempo en la recuperación de almacenamiento de archivos debido a las asignaciones de memoria contiguas.
Definiciones
Dependiendo del sistema operativo, hay diferentes tipos de entradas de journaling que discutiremos a continuación. Antes de hacerlo, necesitamos aclarar algunos términos numéricos.
Tebibytes (TiB): todos sabemos cuánto es un gigabyte. Un tebibyte (TiB) es igual a 1024 (= 210) gigabytes. TiB es una de las unidades predeterminadas para expresar grandes valores en el almacenamiento de archivos. Además, 1 TiB = 1.09951 terabytes (TB).
Pebibyte (PiB): un pebibyte (PiB) es igual a 1024 TiB o alrededor de un millón de gigabytes – un valor muy grande en verdad.
Clústeres: los clústeres de datos son la unidad más pequeña de espacio en disco que se puede usar para almacenar un archivo. Puede variar de 512 bytes para un solo sector a 64 KB para 128 sectores.
1. NTFS
El Sistema de Archivos de Nueva Tecnología (NTFS) es el sistema de journaling predeterminado de Microsoft para Windows y Windows Server. Utiliza archivos de registro e información de punto de control para restaurar los valores estables de un sistema de archivos después de un reinicio.
NTFS admite grandes volúmenes de datos: para un tamaño de clúster de 4 KB, puede acomodar 16 TiB de datos. Para un tamaño de clúster de 64 KB (máximo), significa 256 TiB de datos con un tamaño máximo de archivo de 256 TiB.
Hoy en día, NTFS repara cualquier corrupción en archivos en línea a través de lo que se conoce como “NTFS de autocomprensión”. Los usuarios de Windows 10 pueden recordar una experiencia de tiempo de inactividad debido a Chkdsk, que solía afectar a versiones anteriores de Windows. En la última actualización de NTFS de autocomprensión, el problema se ha solucionado en línea, y no ocurre tiempo de inactividad.
También lee: FAT32 vs. exFAT vs. NTFS: ¿Cuál es la diferencia?
2. Ext
El Sistema de Archivos Extendidos (ext) ha sido el sistema de journaling de Linux desde el principio. Se inspiró en el Sistema de Archivos Unix (UFS) y ha pasado por tres iteraciones más desde su llegada a principios de los años 90.
- ext2: originalmente utilizado en Debian y Red Hat Linux, ext2 todavía se usa en medios flash como tarjetas SD y unidades USB. Puede acomodar de 2 a 32 TiB de datos con un tamaño máximo de clúster de 8 KB.
- ext3: como el tercer sistema de archivos extendido, ext3 se ha utilizado con Linux, BSD y ReactOS. Los límites de tamaño son similares a ext2.
- ext4: la última versión del sistema de archivos extendido, se utiliza en el almacenamiento de archivos de Google, BSD, PowerPC y la mayoría de las distribuciones de Linux actuales. Los límites de tamaño son iguales a 1024 PiB o alrededor de un millón de TiB. El tamaño de clúster más grande es de 64 KB.
ext4 utiliza sumas de verificación en el journal para mejorar la fiabilidad, ya que puede evitar de forma segura una espera de E/S de disco durante el journaling y mejorar ligeramente el rendimiento del disco.
3. APFS
El Sistema de Archivos de Apple (APFS) se utiliza con macOS High Sierra, iOS 10.3 y versiones posteriores, y algunos otros sistemas. Admite hasta 8000 PiB (263 bytes), lo que es aproximadamente ocho veces mayor que ext4.

Las capacidades centrales de APFS son muchas: incluyen crear “instantáneas”, que es como una fotocopia del sistema en un momento particular. Al igual que NTFS, utiliza sumas de verificación para garantizar la integridad de los datos y protege contra fallos del sistema utilizando un enfoque llamado “copia sobre el escritor”. APFS utiliza cifrado completo del disco.
Conclusión
El journaling en los sistemas de archivos es un seguro básico contra fallos del sistema y apagones inesperados. Al escribir cambios en un journal rápidamente, podemos asegurar que todos los cambios a los archivos se registren y no se pierdan durante apagones de energía o fallos de computadora.
Hay muchos sistemas de archivos con journaling aparte de los discutidos aquí. Oracle, VMware, BSD, Cisco, Solaris y muchos otros tienen sus propias unidades de journal propietarias.