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+.

  • HFS+. HFS+ es el siguiente sistema de archivos tras el HFS (Hierarchical File System). Puedes encontrar este sistema de archivos en los productos con OS X como los Macbook y también en los iPhone® o iPod®. Al igual que NTFS, utiliza ACL o listas de control de acceso para gestionar el permiso de acceso a los archivos. Los ficheros del dispositivo salvo el directorio home pueden cifrarse de forma transparente. NTFS de Windows permite la compresión transparente pero HFS+ no.
  • NTFS (New Technologies File System). Este sistema de archivos apareció en 1993 con Windows NT® y puedes encontrarlo en las últimas versiones del sistema operativo Windows®. Aunque le influyó el sistema HFS de Apple, NTFS se basó en el sistema HPFS que crearon IBM® y Microsoft®. Para volúmenes pequeños como pendrives no es recomendable porque ocupa mucho espacio en disco pero para volúmenes más grandes es un sistema de archivos muy robusto y fiable. Utiliza ACL o listas de control de acceso para gestionar el permiso de acceso a los archivos y permite comprimir y cifrar los archivos de forma transparente. Microsoft está continuamente evolucionando el sistema y las últimas versiones incorporan puntos de montaje de volúmenes y cuotas de disco. Microsoft®, al contrario que hizo con FAT no ha mostrado cómo funciona internamente este sistema pero gracias a la ingeniería inversa se han desarrollado controladores para que otros sistemas puedan dar soporte de lectura y escritura sobre este tipo de volúmenes.
  • EXT4 (fouth extended filesystem). Es el sistema de archivos utilizado en muchas distribuciones Linux como Ubuntu por ejemplo. Aunque también existe ReiserFS, generalmente las distribuciones se decantan por EXT. Es una evolución del EXT3 que ya tenía journaling y se caracteriza por demandar un menor uso de CPU y por mejorar la velocidad de lectura y escritura. Al contrario que NTFS no permite la compresión ni el cifrado transparente. Utiliza el estándar POSIX para gestionar el permiso de acceso a los archivos. La ventaja de este sistema es que lo hace retrocompatible con sistemas EXT3. Un sistema EXT3 se puede montar como una partición EXT4 y viceversa.
  • ¿Qué son las listas ACL?
    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.

    Problema de un sistema de ficheros sin journaling.
    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

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada.

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.