Estructura FHS (Filesystem Hierarchy Standard)

Introduccion a la Estructura FHS (Filesystem Hierarchy Standard)

Introduccion

El Filesystem Hierarchy Standard (FHS) define una organización estándar de directorios en sistemas tipo Unix (especialmente Linux) para que el sistema operativo, los administradores y las aplicaciones encuentren archivos en ubicaciones previsibles.

Su objetivo es asegurar consistencia entre distribuciones y facilitar:

  • Administración del sistema, si un administrador sabe donde estan las cosas no tiene porque volverse loco a la hora de localizar los directorios y archivos tipicos.
  • Instalación de software, ya esta definido donde van por ejemplo los ejecutables dependiendo de su uso.
  • Scripts portables, ya que en teoria los directorios deberian ser muy similars, facilita su reutilizacion entre distros.

Principios básicos del FHS

  • Todo cuelga de / (raíz)
  • Se separa lo esencial para arrancar y reparar de lo opcional
  • Se diferencian:
    • datos estáticos (binarios, configuración)
    • datos variables (logs, colas)
    • datos compartibles entre máquinas
    • datos específicos del host

Directorios principales y su función

/ (root)

Directorio raíz. Contiene lo mínimo para que el sistema pueda arrancar o montarse y acceder a estructuras esenciales.

/bin

Binarios esenciales para todos los usuarios (especialmente necesarios en modo rescate / single-user).

Ejemplos típicos: ls, cp, mv, cat, sh.

Nota actual: en muchas distros modernas /bin puede ser un enlace a /usr/bin (por unificación de /usr), pero el significado lógico se mantiene.

/sbin

Binarios esenciales del sistema, orientados a administración (normalmente usados por root).

Ejemplos: ip, fsck, mount, reboot.

/boot

Archivos necesarios para el arranque: kernel, initramfs/initrd, cargador (GRUB) y configuración relacionada.

Ejemplos: vmlinuz-* initramfs-* grub/

/boot/efi

Archivos necesarios para el arranque en siste UEFI: cargadores, drivers y configuración específica para UEFI.

Ejemplos: EFI/BOOT/BOOTX64.EFI EFI/ubuntu/grubx64.efi

Esta opcion permite la carga de múltiples sistemas operativos en la misma máquina, ya que cada uno puede tener su propia carpeta dentro de /boot/efi con su cargador específico.

Normalmente suele ir formateada en Fat32, para que Windows sea capaz de escribir en ella

/dev

Dispositivos representados como archivos (interfaz hacia el kernel).

Ejemplos:

  • /dev/sda, /dev/nvme0n1 (discos)
  • /dev/eht0, /dev/enp0s1

/etc

Configuración del sistema (archivos de texto normalmente). Debe ser host-specific (propio de la máquina).

Ejemplos:

  • /etc/passwd, /etc/shadow
  • /etc/fstab
  • /etc/systemd/

/home

Directorios personales de usuarios.

Ejemplo:

  • /home/usuario

/lib y /lib64

Bibliotecas esenciales necesarias para binarios de /bin y /sbin, y módulos del kernel.

Ejemplos:

  • bibliotecas del cargador dinámico
  • /lib/modules/mi-kernel/

/media

Puntos de montaje para medios extraíbles montados automáticamente (USB, CD/DVD).

Ejemplos:

  • /media/usb
  • /media/usuario/pendrive

/mnt

Punto de montaje “temporal” o manual para administradores.

Ejemplo:

  • montar un disco para recuperación: /mnt/rescate

/opt

Software “opcional” o de terceros, normalmente auto-contenido.

Ejemplos:

  • /opt/resolve
  • /opt/vendor/app/

/proc

Pseudo-sistema de archivos con información del kernel y procesos (no son archivos “reales” en disco).

Ejemplos:

  • /proc/cpuinfo
  • /proc/meminfo
  • /proc/pid/

/root

Directorio personal del usuario root. No confundir con / (raíz del sistema).

/run

Datos volátiles en runtime (desde el arranque), normalmente en tmpfs.

Ejemplos:

  • PID files
  • sockets
  • estado de servicios
  • /run/user/uid/

/srv

Datos servidos por servicios del sistema (contenido “servido”).

Ejemplos:

  • /srv/www/
  • /srv/ftp/

No todas las distros lo usan “por defecto”, pero es el lugar estándar según FHS

/sys

Pseudo-sistema con información de dispositivos, drivers y kernel (sysfs). Se usa para inspección/configuración a bajo nivel.

/tmp

Archivos temporales. Normalmente se permite borrado al reiniciar. Algunos sistemas lo montan en memoria (tmpfs).

/usr

Contenido “user system resources”: la mayor parte de aplicaciones y bibliotecas. Suele ser compartible y relativamente estático.

Ejemplos:

  • /usr/bin → la mayoría de comandos
  • /usr/sbin → administración no esencial para rescate
  • /usr/lib → bibliotecas
  • /usr/share → datos independientes de arquitectura (docs, iconos, locales)

/var

Datos variables: cambian con el uso del sistema.

Ejemplos:

  • /var/log → logs
  • /var/lib → estado persistente de servicios (bases de datos internas, metadatos)
  • /var/www → común en algunas distros/stack web (aunque también se usa /srv/www)

Buenas prácticas (muy aplicables en empresa)

Separar particiones:

  • / (raíz)
  • /boot/efi (Sistema UEFI)
  • /home (usuarios)
  • /var (logs y datos variables)

Vigilar crecimiento:

  • /var/log
  • /var/lib
  • /home (usuarios)
  • /var (logs y datos variables)

“todo tiene su lugar”

Navegación del sistema de archivos: ls, cd, pwd, find, locate

Índice de la sección

Índice del curso