Comparación de sistemas de archivos y journaling
Actualmente los sistemas operativos más utilizados en sistemas de sobremesa son Windows, Mac OS X y Linux. Cada uno de ellos utiliza un sistema de archivos defecto diferente para gestionar los archivos del sistema. En este artículo estudiaremos las características de los sistemas de ficheros NTFS, EXT4 y HFS+.
Como mecanismo de seguridad, muchos sistemas operativos y más concretamente los sistemas de ficheros utilizan ACL (Access Control List) o listas de control de acceso. Una lista de control de acceso es una tabla que registra los derechos que tienen usuarios o grupos de usuarios sobre ficheros, programas o procesos. Todo objeto que pueda ser accedido tendrá su entrada en la ACL en la que se especifique los usuarios o grupos de usuarios que pueden acceder a él y qué privilegios tendrán sobre el mismo (lectura, escritura o ejecución).
¿Qué es el Journaling?
Los sistemas operativos y más concretamente los sistemas de archivo procuran que todo lo que se lee de un disco sea lo mismo que se escribió en él. Esto que parece obvio, cuando se implementa resulta que no lo es tanto.
Los sistemas de archivos no escriben directamente en el disco, para agilizar escriben en un buffer y luego el contenido se actualiza en el disco más tarde. Antiguamente no podías apagar un Linux desenchufando el equipo o dándole al botón porque los sistemas de archivos como EXT2 de Linux carecían de journaling.
Actualmente los sistemas de archivos además de journaling pueden gestionar particiones más grandes, reducen la fragmentación, tienen mejor rendimiento de entrada/salida y se recuperan mejor ante posibles accidentes.
Las escrituras en disco como se ha explicado se realizan en varios pasos. Si apagas el equipo en medio de algún paso los datos se quedan inconsistentes. Para detectar y reparar todos los problemas de integridad existentes habrá que correr el famoso fsck de Linux. Dado que el tiempo que tarda fsck es proporcional al tamaño de la partición y al número de ficheros y directorios, para los sistemas actuales es imprescindible utilizar un sistema de journaling.
Para realizar operaciones en un sistema de ficheros se utiliza un mecanismo parecido al que utilizan las bases de datos. Las transacciones. Una transacción es un conjunto de operaciones que se realizan de forma unitaria (o se completan del todo o no se realiza nada). Es algo parecido a lo que utiliza tu banco cuando quieres mover dinero entre dos de tus cuentas, el sistema retira una cantidad de dinero de una y la abona en la cuenta de destino. Si una vez de retirado el dinero de la primera cuenta se produce un fallo eléctrico, la transacción no se habrá completado y el sistema restablecerá el saldo de las cuentas a los valores existentes antes de la transacción.
Cuando un sistema de ficheros con journaling arranca no revisa y verifica los metadatos del mismo, sino que tiene que revisar solamente aquellas transacciones que no se llevaron a cabo y las ejecuta. De esa manera se asegura que la información del disco y los metadatos están sincronizados y son veraces.
El journal en un sistema de ficheros consiste básicamente en una lista de transacciones, de esta manera las recuperaciones ante posibles accidentes son mucho más ágiles que en sistemas sin journaling.
Existen muchos sistemas de ficheros con journaling como por ejemplo EXT4, NTFS, ReiserFS, JFS, etc.
One thought on “Comparación de sistemas de archivos y journaling”