Contenidos

Arquitectura de los Sistemas de Archivos
Guía práctica para entender cómo se organizan los datos
Introducción
Un sistema de archivos es la estructura que utiliza un sistema operativo para organizar, guardar y localizar los datos dentro de un dispositivo de almacenamiento, como un disco duro, un SSD o una memoria USB.
Actúa como un intermediario entre el usuario y el hardware. Cuando abrimos, guardamos o borramos un archivo, el sistema de archivos se encarga de traducir esa acción en operaciones reales sobre el disco.

El tipo de sistema de archivos que se utilice depende del sistema operativo y condiciona aspectos clave como el rendimiento, la seguridad, la fiabilidad de los datos y la capacidad máxima de almacenamiento.

¿Cual es la diferencia entre NTFS, FAT Y EXT?
1. Sistemas de archivos en Windows (familia Microsoft)
1.1 Evolución y contexto
La evolución de los sistemas de archivos de Microsoft va de la mano del desarrollo de los ordenadores personales.
Los primeros sistemas estaban pensados para equipos muy limitados, sin apenas medidas de seguridad. Con el tiempo, y con la llegada de entornos profesionales, surgió la necesidad de sistemas más robustos, seguros y eficientes.
1.2 La familia FAT (File Allocation Table)

La familia FAT es uno de los sistemas de archivos más antiguos y sencillos. Su evolución ha sido la siguiente:
- FAT12
Apareció en 1980. Permitía trabajar con discos muy pequeños (hasta 32 MB) y usaba nombres de archivo cortos (8 caracteres + 3 de extensión). - FAT16
Introducido en MS-DOS en 1984. Aumentó la capacidad, pero su límite práctico era de 2 GB, lo que pronto se quedó corto. - VFAT
Utilizado en Windows 3.11 y Windows 95. Permitió usar nombres de archivo largos (hasta 255 caracteres), algo muy importante para el usuario. - FAT32
Apareció con Windows 95 OSR2. Aunque técnicamente puede manejar discos muy grandes, Windows limitó su uso a particiones de hasta 32 GB.
Su principal limitación es que no permite archivos mayores de 4 GB. - exFAT
Diseñado para memorias flash y dispositivos USB. Es una versión modernizada de FAT, pensada para pendrives y tarjetas SD.
1.3 NTFS: el sistema moderno de Windows
NTFS (New Technology File System) fue creado para superar las limitaciones de FAT.
Sus principales ventajas son:
- Mayor seguridad (permisos de usuario).
- Mayor fiabilidad frente a errores.
- Mejor rendimiento.
- Uso de journaling, un sistema de registro que permite recuperar el sistema tras fallos inesperados.
NTFS apareció en las versiones profesionales de Windows y permite manejar volúmenes muy grandes (hasta varios terabytes en la práctica).
1.4 Cómo funciona FAT32 por dentro
FAT32 es un buen ejemplo para entender cómo se organiza un sistema de archivos sencillo.
1. Clúster
Un clúster es la unidad mínima de almacenamiento.
Un archivo siempre ocupa uno o más clústeres completos, aunque solo use una parte.
Ejemplo:
Si un clúster mide 4096 bytes y un archivo ocupa solo 1 byte, el sistema reserva igualmente el clúster completo.
2. Tabla de Asignación de Archivos (FAT)
La tabla FAT es el corazón del sistema.
Es un mapa que indica qué clústeres están libres, cuáles están ocupados y cómo se enlazan los clústeres que forman un archivo.
3. Contenido de la tabla FAT
Cada entrada de la tabla puede indicar:
- El siguiente clúster de un archivo.
- El final del archivo (EOF).
- Que el clúster está libre.
- Que el clúster está defectuoso y no debe usarse.
4. Ejemplo práctico

Si un archivo ocupa los clústeres 2 → 6 → 10 → 3, la tabla FAT permite al sistema seguir esa cadena hasta llegar al final del archivo.
1.5 Inconvenientes de FAT
Aunque es simple y compatible, FAT tiene problemas importantes:
- Desperdicio de espacio
Los archivos pequeños ocupan clústeres completos aunque no los necesiten. - Rendimiento
Para funcionar rápido, el sistema necesita cargar la tabla FAT en la memoria RAM.
En discos grandes esto consume muchos recursos, y si los archivos están fragmentados, el acceso se vuelve lento.
Estas limitaciones llevaron al desarrollo de sistemas más avanzados.
2. Sistemas de archivos en Apple
2.1 Evolución general

Apple ha ido adaptando sus sistemas de archivos al aumento del tamaño de los discos y, más recientemente, al uso masivo de SSD.
2.2 Sistemas principales
- MFS: sistema inicial del Macintosh (1984).
- HFS: permitió una estructura jerárquica de carpetas.
- HFS+: añadió journaling y soporte para grandes volúmenes.
- APFS: sistema actual, optimizado para SSD y dispositivos modernos.
3. Sistemas de archivos en GNU/Linux

3.1 Características generales
GNU/Linux destaca por admitir muchos sistemas de archivos distintos, fruto de su filosofía de código abierto.
3.2 Sistemas más habituales
- ext2: primer estándar estable.
- ext3: añadió journaling.
- ext4: mejora rendimiento y soporta archivos muy grandes.
- XFS: excelente para archivos de gran tamaño.
- ReiserFS: pionero en journaling dentro de Linux.
Para entender estos sistemas es clave conocer el concepto de inodo.
4. El inodo: el núcleo de los sistemas tipo Unix
4.1 Qué es un inodo
Un inodo es una estructura que guarda toda la información de un archivo excepto su nombre y su contenido.

Ejemplo:
El nombre del archivo está en el directorio.
Los datos están en bloques del disco.
El inodo guarda la información que los conecta.
4.2 Qué información contiene
- Propietario y grupo.
- Permisos.
- Fechas de acceso y modificación.
- Tamaño del archivo.
- Dirección de los bloques de datos.
Un directorio es simplemente un archivo especial que relaciona nombres con números de inodo.
4.3 Inodos en ext3

En ext3, cada inodo tiene:
- 12 punteros directos (para archivos pequeños).
- Punteros indirectos (simple, doble y triple) para archivos grandes.
Gracias a esta estructura, ext3 puede manejar archivos de varios terabytes.
4.4 ext4 y los extents

ext4 mejora el diseño usando extents en lugar de punteros individuales.
Un extent indica:
- dónde empieza un conjunto de bloques
- cuántos bloques consecutivos ocupa
Esto reduce la fragmentación y mejora el rendimiento, sobre todo en archivos grandes.
5. ZFS: prioridad absoluta a la integridad de los datos
ZFS es un sistema de archivos avanzado diseñado para grandes volúmenes de datos y máxima seguridad.

Características clave:
- Copy-on-write: nunca sobrescribe datos directamente.
- Checksums: detecta y corrige errores de datos.
- Gestión de volúmenes integrada.
- RAID-Z: sistema RAID propio más fiable.
6. FUSE: sistemas de archivos en espacio de usuario

FUSE permite implementar sistemas de archivos sin modificar el núcleo del sistema operativo.
Ventajas:
- Flexibilidad.
- Facilidad de desarrollo.
- Compatibilidad con sistemas como NTFS en Linux.
Inconveniente:
Menor rendimiento que los sistemas nativos del núcleo.
¿Qué sistema de archivos debería elegir?

Os dejo un video explicativo sobre que sistemas deberíamos elegir dependiendo de nuestras necesidades.
