Estándar de Jerarquía de Sistema de Archivos

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org

Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.

Introducción

El estándar de jerarquía de archivos ―conocido como FHS por sus siglas en inglés de Filesystem Hierarchy Standard― define los directorios principales y sus contenidos en sistemas GNU/Linux y otros sistemas operativos similares a Unix. Este estándar es fundamental para mantener el orden, la compatibilidad y la predictibilidad en dónde se encuentran los archivos esenciales del sistema, las configuraciones, las bibliotecas y los datos de usuario.

La historia del FHS se remonta a agosto de 1993, cuando se inició un esfuerzo para estandarizar la estructura de archivos en Linux. El primer estándar, llamado FSSTND (Filesystem Standard), se publicó el 14 de febrero de 1994. A principios de 1996, el proyecto evolucionó para abarcar también otros sistemas Unix, cambiando su nombre a FHS. Hoy en día, el FHS es mantenido por la organización sin fines de lucro Linux Foundation, y su adopción es amplia en la gran mayoría de las distribuciones de Linux, aunque a menudo con extensiones o ligeras variaciones propias de cada distribución.

La versión 3.0 del FHS, publicada el 5 de junio de 2015, es el estándar de facto utilizado por las distribuciones modernas basadas en el ecosistema de Red Hat, como AlmaLinux, Rocky Linux, Red Hat Enterprise Linux 8/9/10 y Fedora, así como por ALDOS. Comprender esta jerarquía es el primer paso para administrar un sistema de manera eficiente y solucionar problemas.

Estructura de directorios

En un sistema Linux, todos los archivos y directorios residen bajo el directorio raíz, representado por una sola barra diagonal (/). Esta estructura unificada existe incluso si los datos están almacenados en varios dispositivos físicos diferentes, gracias al proceso de montaje. La siguiente tabla describe la función de los directorios esenciales definidos por el FHS v3.0.

Directorios raíz críticos

Directorio Descripción
/bin Contiene programas binarios esenciales para todos los usuarios. Son mandatos necesarios incluso en modo de un solo usuario, como ls, cp, mv, rm, cat y mkdir. En sistemas modernos, suele ser un enlace simbólico a /usr/bin.
/boot Alberga los archivos estáticos del cargador de arranque y el kernel de Linux. Es crítico para el inicio del sistema y a menudo se coloca en una partición separada.
/dev Contiene archivos especiales de dispositivo que representan todo el sustento físico (hardware) o dispositivos virtuales del sistema (discos, terminales, puertos, etc.).
/etc Directorio central para los archivos de configuración específicos del anfitrión. Contiene configuraciones de sistema y aplicaciones, scripts de inicio (en sistemas con SysVinit) y archivos como /etc/passwd o /etc/fstab.
/home (Opcional, pero universal). Contiene los directorios de inicio de los usuarios locales. Cada usuario tiene un subdirectorio aquí (ej: /home/darkshram) para almacenar sus archivos personales y configuraciones.
/lib y /lib64 Albergan las bibliotecas compartidas esenciales necesarias para los binarios en /bin y /sbin, y los módulos del kernel en /lib/modules. /lib64 existe en sistemas de 64 bits para bibliotecas de esa arquitectura.
/media Punto de montaje automático para medios extraíbles, como memorias USB, discos externos o DVDs.
/mnt Punto de montaje temporal para sistemas de archivos donde el administrador puede montar unidades manualmente.
/opt Destinado a la instalación de paquetes de aplicaciones de terceros autocontenidos. Cada aplicación suele residir en su propio subdirectorio (ej: /opt/google/chrome).
/proc Un sistema de archivos virtual que documenta el estado del kernel y los procesos en tiempo real. Sus "archivos" (como /proc/cpuinfo) son ventanas a la información del sistema.
/root Directorio de inicio del usuario root (superusuario). Distinto de /home/root por razones de recuperación del sistema.
/run Alberga datos volátiles de procesos en ejecución desde el último arranque. Contiene identificadores de proceso (PID), información de usuarios logueados y sockets. En sistemas modernos, /var/run es un enlace a este directorio.
/sbin Contiene binarios de administración del sistema esenciales, destinados principalmente al usuario root. Mandatos como fdisk, fsck, ifconfig e init residen aquí.
/srv Datos servidos por el sistema. Puede contener los directorios raíz para servicios como HTTP (/srv/www/) o FTP (/srv/ftp/). Su uso varía según la distribución.
/tmp Directorio para archivos temporales. Su contenido puede borrarse entre reinicios. Algunos sistemas lo montan en memoria (tmpfs) para mayor rendimiento.
/usr Jerarquía secundaria de datos de solo lectura compartibles entre hosts. Contiene la mayoría de las aplicaciones de usuario, bibliotecas y documentación. Es el directorio más grande después de /home.
/var Directorio para archivos variables. Almacena datos que crecen con el tiempo, como registros (/var/log), colas de impresión y correo (/var/spool), y cachés (/var/cache).

Subdirectorios importantes dentro de /usr y /var

Dentro de las jerarquías de /usr y /var existen subdirectorios clave con propósitos bien definidos.

Directorio Descripción
/usr/bin La ubicación primaria para ejecutables de aplicaciones de usuario no esenciales. Contiene la inmensa mayoría de los mandatos que utilizará un usuario común.
/usr/lib Bibliotecas compartidas para las aplicaciones ubicadas en /usr/bin y /usr/sbin.
/usr/lib64 En distribuciones de arquitectura 64-bit como ALDOS, Fedora, RHEL y sus derivados, este directorio alberga las bibliotecas compartidas para programas de 64 bits. En otras familias de distribuciones, estas bibliotecas pueden residir directamente en /usr/lib.
/usr/local Jerarquía terciaria para software compilado localmente por el administrador del sistema. Sigue la misma estructura que /usr (tiene sus propios bin, lib, share, etc.). Esto evita conflictos con el software gestionado por el gestor de paquetes (yum o dnf).
/usr/share Contiene datos independientes de la arquitectura, como documentación, iconos, fuentes y archivos de sonido, compartidos entre diferentes aplicaciones.
/var/log Registros del sistema y de aplicaciones. Archivos esenciales para la supervisión y solución de problemas (ej: messages, secure, boot.log).
/var/lib Almacena datos de estado variables de aplicaciones. Aquí residen bases de datos (MySQL, PostgreSQL), metadatos del gestor de paquetes (yum, dnf) y configuraciones dinámicas.
/var/cache Datos en caché de aplicaciones. Su contenido puede regenerarse, pero suele preservarse entre reinicios para mejorar el rendimiento.
/var/spool Colas de datos para trabajos pendientes, como colas de impresión (/var/spool/cups) o buzones de correo no leídos (en algunos sistemas).

🔍 Nota sobre /usr/lib64: La presencia de /usr/lib64 es una convención distintiva de las distribuciones basadas en Red Hat y sus ecosistemas ―como ALDOS, Fedora, CentOS Stream, AlmaLinux y Rocky Linux―, donde concentra la gran mayoría de las bibliotecas compartidas para aplicaciones de 64 bits. Distribuciones de otras familias, como las derivadas de Debian (Ubuntu, etc.), suelen alojar todas las bibliotecas en /usr/lib, haciendo de /usr/lib64 un directorio inexistente. Esta es una diferencia de empaquetado y organización, mas no de funcionalidad.

Particiones recomendadas para sistemas modernos

El diseño del esquema de particiones es un paso crucial durante la instalación de cualquier distribución Linux. Un diseño adecuado mejora la seguridad, facilita las copias de seguridad y puede optimizar el rendimiento. Las recomendaciones han evolucionado desde las versiones históricas del manual.

🖥️ Consideraciones generales y mínimas

Si las limitaciones del sistema imponen un número mínimo de particiones, es imprescindible crear al menos dos:

  1. / (raíz): Contendrá todo el sistema de archivos.
  2. Memoria de intercambio (swap): Espacio en disco utilizado por el kernel como memoria virtual cuando la RAM física se agota.

Para una estación de trabajo o servidor moderno, un esquema básico y robusto incluye particiones separadas para /, /home y swap. Esto aísla los datos del usuario del sistema operativo, facilitando reinstalaciones o actualizaciones sin perder información personal.

📏 Tamaños recomendados para distribuciones actuales

Las siguientes recomendaciones son aplicables a distribuciones modernas como AlmaLinux 8/9/10, Rocky Linux 8/9/10, Red Hat Enterprise Linux 8/9/10, Fedora y ALDOS.

Directorio/Particción Tamaño Mínimo Recomendado Tamaño Recomendado para Uso General Comentarios y Consideraciones
/boot 512 MiB 1 GiB Espacio suficiente para múltiples kernels. Usar ext4 por su robustez. A menudo es partición obligatoria en sistemas UEFI (como /boot/efi).
/ (raíz) 15 GiB 30-50 GiB Debe albergar /usr, /var, /opt, etc., si no tienen partición propia. Considere el equipamiento lógico base y futuro. Tanto ext4 como Xfs son excelentes opciones.
/home Variable El resto del espacio disponible Priorice espacio aquí para datos de usuario. El tamaño depende completamente de las necesidades.
/var 5 GiB 10-20 GiB (Servidores: >50 GiB) En servidores, crece con los registros y datos. En ALDOS o estaciones de trabajo, puede residir en /.
/tmp 1 GiB 2-5 GiB Si la carga de trabajo lo requiere (ej: edición de video), puede ser mayor. Algunos sistemas lo montan como tmpfs en RAM.
Memoria Swap Fórmula variable Igual al tamaño de la RAM Para sistemas con ≤ 2 GiB de RAM: use el doble de la RAM. Para sistemas con > 2 GiB de RAM: un valor igual al tamaño de la RAM suele ser suficiente. Para hibernación: debe ser mayor que la RAM instalada.

🔧 Notas técnicas específicas para SysVinit y SystemD

📚 Bibliografía y referencias

💡 Nota para fines educativos: Se recomienda experimentar con el mandato find para explorar estos directorios y comprender su contenido. Por ejemplo, ejecute find /etc -type f -name "*.conf" | head -20 para listar algunos archivos de configuración y ver dónde residen.