El Sistema de Archivos y Directorios: La Columna Vertebral del Almacenamiento Persistente


El sistema de ficheros es una de las partes más importantes y fundamentales de un sistema operativo (S.O.) desde la perspectiva del usuario. Actúa como una abstracción de los recursos típicamente asociados con el almacenamiento secundario, como los discos. Su propósito principal es simplificar el manejo de los dispositivos periféricos de almacenamiento y proporcionar una visión lógica de los periféricos como si fueran archivos. Además, es crucial para proteger y limitar los archivos que cada usuario es capaz de manipular.

1. ¿Qué son los Ficheros y Directorios?

Un fichero (o archivo) es una colección de datos organizados que el sistema operativo gestiona. Desde el punto de vista del usuario, un fichero es una unidad de almacenamiento lógico no volátil. Los ficheros deberían tener las siguientes características:

  • Existencia a largo plazo: Se almacenan en disco u otro almacenamiento secundario y no desaparecen al apagar el equipo.
  • Compartible entre procesos: Tienen nombres y pueden tener permisos de acceso asociados para controlar su compartición.
  • Estructura: Pueden tener una estructura interna (como una colección de campos o registros) que es conocida (y/o necesaria) por aplicaciones específicas, o simplemente ser tratados como una secuencia de bytes.

Un directorio es una colección de ficheros y/u otros directorios. Contiene información sobre los ficheros, incluyendo sus atributos, ubicación y propiedad. Gran parte de esta información es gestionada por el sistema operativo. El directorio mismo se considera un fichero, accesible por las rutinas del S.O. que gestionan ficheros.

2. Organización Lógica: La Vista del Usuario

La visión lógica del sistema de archivos se refiere a cómo el sistema operativo y los usuarios perciben los archivos y directorios. Es una representación abstracta que facilita la interacción.

2.1. Organización Lógica de los Directorios

Los directorios se organizan en una estructura jerárquica, habitualmente en forma de árbol.

  • Directorio raíz: Es el punto de partida de la jerarquía.
  • Caminos (paths o rutas): Los archivos y directorios se identifican mediante caminos, que son secuencias de nombres de directorios separados por un delimitador (por ejemplo, “/” en sistemas Unix-like). Un directorio actual o de trabajo permite a los usuarios referenciar ficheros de forma relativa a este directorio, evitando escribir el camino completo.
  • Nodos: Cada directorio y archivo puede verse como un nodo en el árbol de directorios.
  • Atributos: Cada nodo tiene asociados atributos como nombre, tamaño, fecha de creación, permisos, etc.. El directorio proporciona una proyección entre los nombres de ficheros, conocidos para los usuarios y las aplicaciones, y los ficheros en sí.

Las operaciones típicas sobre directorios incluyen buscar, crear, borrar, y listar.

2.2. Organización Lógica de los Ficheros

Los ficheros, desde una perspectiva lógica, se presentan de diversas formas:

  • Secuencia de bytes: La forma más básica y común, donde el fichero se ve como una secuencia continua de bytes, independientemente de su contenido (texto, imágenes, programas ejecutables, etc.).
  • Estructura interna (registros, campos): Algunos sistemas de ficheros permiten que un fichero sea una colección de registros similares, y cada registro, a su vez, una colección de campos. Esta es una abstracción útil para aplicaciones que trabajan con datos estructurados (ej., bases de datos).
  • Nombre: Cada archivo tiene un nombre simbólico único dentro de un directorio. Un archivo puede tener varios nombres (enlaces duros).
  • Tipo de archivo: Aunque el sistema operativo los trata como secuencias de bytes, los archivos pueden tener asociados tipos de archivo (a menudo indicados por extensiones como .txt, .pdf, .exe) que sugieren su contenido o propósito.
  • Atributos: Incluyen el propietario, tiempo de creación, última modificación, privilegios de acceso, etc..

Las operaciones sobre ficheros incluyen leer, escribir, añadir, crear, borrar, abrir y cerrar.

3. Organización Física: Cómo se Almacenan los Datos

La visión física detalla cómo los archivos y directorios se almacenan físicamente en el dispositivo de almacenamiento (disco, cinta, etc.).

3.1. Almacenamiento de Ficheros en Bloques

Los ficheros se componen de una colección de bloques en el almacenamiento secundario.

  • Bloques: Son las unidades de E/S con almacenamiento secundario. En la mayoría de los sistemas, los bloques tienen una longitud fija para simplificar la E/S, la asignación de buffers y la organización en disco. El tamaño del bloque implica un compromiso entre eficiencia de transferencia (bloques grandes para E/S secuencial) y minimización de transferencia innecesaria (bloques pequeños para acceso aleatorio).
  • Fragmentación interna: Puede ocurrir si los registros no llenan completamente un bloque, dejando espacio no utilizado al final de cada bloque.
  • Asignación de ficheros: El sistema operativo es responsable de asignar bloques a los ficheros y de mantener una traza del espacio disponible. Los tres métodos comunes de asignación son:
    • Contigua: El fichero ocupa bloques contiguos en disco. Sencillo pero propenso a fragmentación externa.
    • Encadenada: Los bloques de un fichero pueden estar dispersos; cada bloque contiene un puntero al siguiente.
    • Indexada: Se utiliza un bloque índice (o varios) que contiene punteros a todos los bloques de datos del fichero. Esto permite acceso directo y aleatorio eficiente.
  • Preasignación vs. Asignación Dinámica: Se puede asignar el espacio máximo requerido al crear el fichero (preasignación) o asignar porciones a medida que se necesite (asignación dinámica).

3.2. Estructuras Físicas de Directorios y Metadatos

Físicamente, los directorios contienen una tabla de entradas de directorio. Cada entrada apunta a una estructura de datos que contiene la información real sobre el archivo o subdirectorio. Estas estructuras son el corazón de la gestión de metadatos:

  • Inodos (UNIX/Linux): Un nodo-i (nodo índice) es una estructura de control que contiene la información clave necesaria de un fichero particular para el sistema operativo. No contiene el nombre del fichero, sino sus metadatos (tamaño, permisos, propietario, fechas de creación/modificación) y punteros a los bloques de datos en disco. Los directorios en UNIX son, de hecho, ficheros regulares con privilegios de protección especiales que listan nombres de ficheros y sus números de inodo asociados.
    • La estructura de volumen UNIX incluye: Bloque de arranque, Superbloque (atributos e información del sistema de ficheros), Tabla de nodos-i y Bloques de datos.
  • FAT (File Allocation Table – Tabla de Asignación de Ficheros – MS-DOS/Windows): Es un sistema de archivos más antiguo y simple que utiliza una tabla para registrar los bloques de disco asignados a cada archivo. Cada entrada de la FAT contiene información sobre el siguiente bloque en la cadena de un archivo.
    • Limitaciones: Tiene restricciones en el tamaño de las particiones y ficheros, y carece de muchas funciones avanzadas.
  • NTFS (New Technology File System – Windows): Es el sistema de archivos predeterminado en las versiones modernas de Windows. Es más complejo y potente que FAT.
    • Master File Table (MFT – Tabla Maestra de Ficheros): Es el corazón de NTFS. Es una tabla de registros que describe todos los ficheros y carpetas de un volumen. Incluso los contenidos de un fichero pequeño pueden almacenarse directamente en la entrada del MFT como un atributo.
    • Recuperación (Journaling): Utiliza un modelo de procesamiento de transacciones para los cambios en el sistema de ficheros, registrando las operaciones para permitir la recuperación ante fallos del sistema.

4. Cómo se Ofrece el Sistema a los Usuarios

El sistema de ficheros se ofrece de manera diferente según el tipo de usuario o entidad que interactúa con él.

4.1. Para Usuarios Genéricos (Usuarios Finales)

El sistema de archivos proporciona una abstracción crucial. Los usuarios interactúan con nombres simbólicos y estructuras jerárquicas sin preocuparse por los detalles físicos del almacenamiento. El sistema de ficheros ofrece un conjunto de funciones estándar para manipular archivos y directorios.

  • Control de Acceso: Para sistemas multiusuario, el S.O. proporciona mecanismos de protección para controlar el acceso a los ficheros. Esto incluye definir privilegios de acceso (lectura, escritura, ejecución, adición, actualización) para el propietario, grupos de usuarios y todos los usuarios.

4.2. Para Programadores

Los programadores interactúan con el sistema de ficheros a través de interfaces de programación (APIs) y llamadas al sistema.

  • Interfaz de Llamadas al Sistema: Es la forma en que un proceso requiere un servicio específico del núcleo. Para los archivos, esto incluye operaciones como crear, eliminar, abrir, cerrar, leer, escribir, reposicionar y obtener/establecer atributos. Estas llamadas permiten a los programas realizar E/S sin necesidad de manejar directamente el hardware.
  • POSIX: Un estándar para sistemas operativos portables basado en UNIX. Define un conjunto de APIs para la interacción con el sistema de ficheros, entre otros servicios, promoviendo la portabilidad del código entre diferentes sistemas operativos.
  • Sistemas de Ficheros Virtuales (VFS): En sistemas como Linux, el VFS presenta una interfaz única y uniforme de sistema de ficheros para los procesos de usuario, independientemente del sistema de ficheros real subyacente (ext4, NTFS, JFS, etc.). Esto permite a los programadores escribir aplicaciones genéricas de E/S de archivos que funcionan en cualquier sistema de archivos soportado por el VFS.

4.3. Para el Propio Sistema Operativo

El S.O. es el gestor de recursos y tiene la responsabilidad fundamental de la gestión de ficheros.

  • Tablas de Ficheros: El S.O. mantiene tablas de ficheros que contienen información sobre su existencia, posición en almacenamiento secundario, estado actual y permisos.
  • Arquitectura de Software: Típicamente, el sistema de gestión de ficheros tiene una arquitectura en capas:
    • Manejadores de dispositivos: Se comunican directamente con el hardware.
    • Sistema de ficheros básico / E/S física: Maneja bloques de datos y su ubicación en disco, así como el buffering en memoria principal.
    • E/S lógica: Permite el acceso a los datos en términos de registros lógicos.
    • Método de acceso: Ofrece una interfaz estándar entre las aplicaciones y los sistemas de ficheros, reflejando diferentes estructuras y patrones de acceso.
  • Gestión de Almacenamiento Secundario: Incluye la asignación de ficheros a bloques libres y el seguimiento del espacio disponible. También interviene en la planificación de disco para optimizar el rendimiento de E/S.
  • Cache de Disco: Utilizado para mejorar el rendimiento de la E/S de disco, manteniendo datos de disco referenciados recientemente en memoria principal para un acceso rápido y retardando las escrituras en disco.

5. Tipos de Sistemas de Archivos y criterios de elección

Los sistemas operativos modernos soportan una variedad de sistemas de archivos.

5.1. Sistemas de Archivos Comunes

  • Windows:
    • NTFS (New Technology File System): Es el más común en las versiones modernas de Windows. Ofrece recuperación de errores, soporte para grandes volúmenes, compresión, cifrado, cuotas de disco y journaling.
    • FAT32 (File Allocation Table 32): Un sistema de archivos más antiguo, usado en dispositivos USB y algunas particiones más antiguas. Es simple pero con limitaciones.
    • exFAT: Utilizado en dispositivos externos, como unidades flash, para superar algunas limitaciones de FAT32. (No detallado en las fuentes, pero es una adición común en el contexto de tipos de archivos de Windows).
  • Linux:
    • ext4 (fourth extended filesystem): El más común en las distribuciones Linux modernas. Hereda la estructura de inodos de UNIX.
    • Btrfs, XFS: Otros sistemas de archivos avanzados utilizados en Linux.
  • macOS:
    • APFS (Apple File System): El sistema de archivos predeterminado más reciente.
    • HFS+ (Hierarchical File System Plus): El sistema de archivos más antiguo de macOS.

5.2. ¿Cuál Usar? Criterios de Elección

La elección del sistema de archivos depende de varios factores:

  • Sistema operativo: Cada S.O. tiene sus sistemas de archivos preferidos o nativos.
  • Dispositivo: El tipo de hardware (discos duros, SSD, unidades flash) puede tener diferentes compatibilidades y optimizaciones.
  • Tamaño de los archivos/volúmenes: Para archivos muy grandes o volúmenes de gran capacidad, sistemas como NTFS, ext4 o Btrfs son más adecuados.
  • Características necesarias: Si se requieren funciones específicas como compresión, cifrado o registro de cambios (journaling), se debe elegir un sistema que las soporte.

6. El Particionamiento del Disco: Organización Fundamental del Almacenamiento

El particionamiento del disco es un proceso fundamental en la gestión del almacenamiento en un sistema informático. Consiste en dividir físicamente un disco duro o cualquier otro dispositivo de almacenamiento masivo en una o más secciones lógicas e independientes. Cada una de estas secciones se denomina partición y puede funcionar como una unidad de almacenamiento separada.

¿Para qué se Particiona un Disco?

El particionamiento del disco sirve a múltiples propósitos cruciales para la funcionalidad y flexibilidad de un sistema operativo:

  1. Organización Lógica del Almacenamiento: Permite estructurar el espacio de un disco de manera que los datos se puedan organizar de forma más eficiente y segura. Por ejemplo, se pueden separar el sistema operativo, los programas de aplicación y los datos de usuario en particiones distintas.
  2. Soporte a Múltiples Sistemas Operativos (Multiboot): Facilita la instalación de varios sistemas operativos en el mismo disco duro. Cada sistema operativo se instala en una partición diferente, lo que permite al usuario elegir cuál iniciar al encender el equipo.
  3. Uso de Diferentes Sistemas de Archivos: Cada partición puede ser formateada con un sistema de archivos diferente. Esto es útil si se necesitan las características específicas de NTFS para Windows, ext4 para Linux o APFS para macOS en diferentes partes del disco.
  4. Aislamiento y Recuperación de Datos: Al separar los datos en particiones distintas, un problema en una partición (como una corrupción de datos o un ataque de virus) es menos probable que afecte a las demás. Las particiones de recuperación contienen herramientas para restaurar el sistema a un estado anterior.
  5. Optimización del Rendimiento:
    • Particiones de intercambio (Swap): Se utilizan como memoria virtual adicional por el sistema operativo. El sistema operativo (ej., UNIX SVR4 o Solaris) mantiene tablas de utilización de swap para gestionar estas particiones. Al tener una partición dedicada para swap, se puede optimizar el rendimiento de la memoria virtual.
    • Almacenar ficheros secuenciales o bases de datos en particiones específicas puede mejorar la eficiencia de acceso.
  6. Gestión y Flexibilidad: Permite la gestión del espacio de almacenamiento de manera granular. Por ejemplo, se pueden asignar cuotas de disco por partición o realizar copias de seguridad de particiones específicas.

Tipos de Particiones

Existen diferentes clasificaciones de particiones según su función, el sistema de archivos que contienen o el esquema de particionado utilizado:

1. Según su Función Principal
  • Particiones Primarias: Son las divisiones principales de un disco. Tradicionalmente, un disco podía tener un máximo de cuatro particiones primarias. Estas particiones son directamente “arrancables” (bootable) si contienen un sistema operativo y su cargador de arranque. La limitación de cuatro particiones primarias ha sido superada en muchos sistemas modernos gracias a esquemas de particionado más avanzados como GPT.
  • Particiones Extendidas: Se introdujeron para superar la limitación de cuatro particiones primarias en el esquema MBR. Una partición extendida no almacena datos directamente, sino que actúa como un contenedor lógico para una o varias particiones lógicas. Un disco solo puede tener una partición extendida.
  • Particiones Lógicas: Se crean dentro de una partición extendida. Permiten tener más de cuatro particiones en un disco, ya que la cantidad de particiones lógicas que se pueden crear dentro de una extendida es virtualmente ilimitada (limitada por el sistema de particiones en sí, no por el MBR).
  • Particiones de Arranque: Contienen el cargador de arranque del sistema operativo. Por ejemplo, en sistemas UNIX, el “Bloque de arranque” contiene el código necesario para iniciar el sistema operativo. En NTFS, los primeros sectores de un volumen están ocupados por el “sector de arranque de la partición” que contiene la información y el código de arranque.
  • Particiones de Recuperación: Contienen herramientas y datos necesarios para la recuperación del sistema en caso de fallos graves.
  • Particiones Swap: Se utilizan como memoria virtual adicional por el sistema operativo. Cuando la memoria RAM se agota, el sistema operativo utiliza esta partición para almacenar temporalmente datos que no caben en la RAM, realizando operaciones de intercambio (swapping) entre la memoria principal y esta partición,.
2. Según el Sistema de Archivos
  • FAT32 (File Allocation Table 32): Un sistema de archivos más antiguo, común en dispositivos USB y algunas particiones heredadas. Es más simple pero con limitaciones de tamaño de archivo y volumen.
  • NTFS (New Technology File System): El sistema de archivos predeterminado en la mayoría de las versiones modernas de Windows. Ofrece características avanzadas como recuperación de errores, soporte para grandes volúmenes, compresión, cifrado y journaling. En NTFS, una partición lógica es referida como un volumen.
  • ext4 (fourth extended filesystem): El sistema de archivos más utilizado en las distribuciones Linux modernas. Hereda la estructura de inodos de UNIX para organizar la información de los ficheros y sus bloques de datos,.
  • APFS (Apple File System): El sistema de archivos predeterminado en los sistemas macOS más recientes.

Relación entre las Particiones

La relación entre los tipos de particiones se entiende mejor en el contexto del esquema MBR:

  • Un disco puede tener hasta cuatro entradas en su tabla de particiones primarias.
  • Si se desea tener más de cuatro particiones, una de las particiones primarias se designa como partición extendida.
  • Dentro de esta partición extendida, se pueden crear múltiples particiones lógicas.
  • Cada partición (primaria o lógica) funciona como una unidad independiente y puede ser formateada con un sistema de archivos diferente.
  • Un volumen en NTFS es una partición lógica que puede abarcar todo o parte de un disco, o incluso extenderse a múltiples discos si se usa RAID.

Creación y Mantenimiento de Particiones

La creación y el mantenimiento de particiones son tareas que realiza el sistema operativo o herramientas especializadas.

  • Creación: Implica definir los límites de cada partición en el disco. Cuando se crea un nuevo fichero en UNIX, el sistema de ficheros reside en un único disco lógico o partición de disco. La creación de una partición prepara un área del disco para ser utilizada por un sistema de archivos.
  • Formateo: Una vez creada, una partición debe ser formateada con un sistema de archivos específico (ej., NTFS, ext4). Este proceso escribe las estructuras de datos iniciales del sistema de archivos (como la Tabla Maestra de Ficheros en NTFS o el Superbloque y la Tabla de Nodos-i en UNIX) en la partición, preparándola para almacenar archivos.
  • Mantenimiento: Incluye tareas como redimensionar, mover, fusionar o eliminar particiones, así como comprobar y reparar la integridad del sistema de archivos dentro de ellas. El sistema operativo es el responsable de la gestión del almacenamiento secundario, lo que implica asignar bloques a los ficheros y llevar un registro del espacio disponible.

Tablas de Particiones

Las tablas de particiones son estructuras de datos cruciales que describen cómo se divide el espacio de un disco en particiones. Son lo primero que lee el sistema al iniciar para entender la organización del disco.

  1. MBR (Master Boot Record – Registro de Arranque Maestro):
    • Es un esquema de particionado antiguo.
    • Se encuentra en el primer sector del disco duro.
    • Contiene el cargador de arranque primario (código para iniciar el proceso de arranque del sistema operativo) y la tabla de particiones,,.
    • La tabla de particiones MBR tiene un límite de cuatro entradas, lo que significa que solo puede definir hasta cuatro particiones primarias. Este límite llevó a la creación de las particiones extendidas y lógicas para organizar más de cuatro secciones en un disco.
    • También impone un límite en el tamaño máximo de los discos que puede gestionar (2 TB).
  2. GPT (GUID Partition Table – Tabla de Particiones GUID):
    • Es un esquema de particionado más moderno.
    • Supera las limitaciones del MBR, permitiendo discos de mucho mayor tamaño (hasta 9.4 ZB) y un número prácticamente ilimitado de particiones (normalmente 128 por defecto).
    • Utiliza identificadores únicos globales (GUID) para identificar las particiones, lo que asegura su unicidad.
    • Es el esquema preferido para los sistemas modernos y discos de gran capacidad.

Gestión de las Tablas de Particiones

La gestión de las tablas de particiones es una tarea de bajo nivel que se realiza principalmente mediante programas de gestión de discos o particiones.

  • Software de Gestión: Herramientas como fdisk (Linux), el Administrador de Discos de Windows o Utilidad de Discos de macOS interactúan con el MBR o GPT para crear, modificar o eliminar particiones.
  • Proceso:
    1. Cuando un usuario o administrador desea crear una partición, el software interactúa con la tabla de particiones (MBR/GPT) para registrar la nueva sección.
    2. Se define el tamaño y la ubicación de la partición en el disco.
    3. Una vez registrada en la tabla de particiones, la partición se puede formatear con un sistema de archivos específico.
    4. El sistema operativo es responsable de mantener tablas de memoria (para la memoria principal y virtual), tablas de E/S, tablas de ficheros y tablas de procesos. Dentro de las tablas de ficheros, por ejemplo, el S.O. debe registrar la existencia de ficheros, su posición en el almacenamiento secundario, estado actual y permisos. Estas tablas indirectamente reflejan la organización del disco proporcionada por el particionamiento.
    5. Para sistemas como NTFS, la Tabla Maestra de Ficheros (MFT) es el corazón del sistema de ficheros, describiendo todos los ficheros y carpetas de un volumen (partición),. Esta es una estructura que reside dentro de la partición formateada, no en la tabla de particiones MBR/GPT.
    6. En UNIX, un sistema de ficheros reside en una partición e incluye un Superbloque (información del sistema de ficheros) y una Tabla de nodos-i (metadatos de los ficheros).

Los programas de gestión y mantenimiento de particiones utilizan esta información para:

  • Visualizar la distribución actual del disco.
  • Crear, eliminar o redimensionar particiones, actualizando las tablas de particiones.
  • Formatear particiones con diferentes sistemas de archivos, creando las estructuras de datos internas de dicho sistema de archivos.
  • Gestionar el espacio libre del disco y asignarlo a nuevas particiones o extender las existentes,.
  • Realizar operaciones de recuperación, utilizando las particiones de recuperación o restaurando sistemas de archivos dañados.

En resumen, el particionamiento del disco es la base sobre la cual se construye la organización lógica del almacenamiento en un computador, permitiendo flexibilidad, seguridad y eficiencia en la gestión de los datos y los sistemas operativos. La correcta comprensión de los tipos de particiones y los esquemas de tablas (MBR, GPT) es esencial para cualquier tarea de administración de sistemas y para entender cómo las herramientas de software interactúan con el hardware de almacenamiento.

Cómo averiguar qué gestor de particiones tiene mi sistema.

En Linux
  1. Con lsblk y parted: sudo parted -l Te mostrará algo como: Partition Table: gpt o Partition Table: msdos (msdos = MBR).
  2. Con gdisk: sudo gdisk -l /dev/sda Si el disco es GPT, lo mostrará directamente. Si es MBR, lo indicará también.
  3. Con lsblk -f:
    Aunque lsblk no dice directamente MBR/GPT, puedes usarlo junto con parted para identificar la tabla.

🔹 En Windows
  1. Con diskpart:
    • Abre la consola (CMD o PowerShell) como administrador.
    • Escribe: diskpart list disk
    • Verás una lista de discos. Si un disco tiene un asterisco (*) en la columna GPT, entonces ese disco usa GPT. Si no, usa MBR.
    Ejemplo: DISK ### Status Size Free Dyn Gpt -------- ------- ----- ----- --- --- Disk 0 Online 476 GB 0 * Disk 1 Online 931 GB 0 Aquí, Disk 0 es GPT y Disk 1 es MBR.
  2. Con la utilidad de administración de discos (diskmgmt.msc):
    • Clic derecho sobre el disco (no sobre las particiones, sino en la parte izquierda donde dice “Disco 0”, “Disco 1”, etc.).
    • Selecciona Propiedades → pestaña Volúmenes.
    • Campo Estilo de partición → te dirá “Tabla de particiones GUID (GPT)” o “Registro de arranque maestro (MBR)”.

🔹 En macOS

Todos los Mac modernos (Intel y Apple Silicon) usan GPT por defecto, ya que arrancan con UEFI. Solo los muy antiguos (PowerPC o primeros Intel con compatibilidad BIOS) podían usar otro esquema.

Puedes comprobarlo con:

diskutil list

Verás el esquema de partición como GUID_partition_scheme (GPT) o FDisk_partition_scheme (MBR).


Diferencias rápidas que notarás
  • MBR: hasta 4 particiones primarias (o 3 primarias + 1 extendida). Máximo ~2 TB por disco. BIOS clásico.
  • GPT: hasta 128 particiones, soporta discos enormes (>2 TB). Requiere UEFI para arrancar.