Sistema de archivos en Linux (FHS)

El sistema de archivos es una de las piezas más importantes de Linux. Como sysadmin, entender dónde está cada cosa y por qué es fundamental para administrar, depurar y recuperar sistemas.


¿Qué es el sistema de archivos?

Es la forma en la que Linux:

  • Organiza los datos
  • Almacena archivos
  • Estructura directorios
  • Accede a dispositivos

En Linux, todo parte de un único punto:

/

Esto se llama root filesystem (no confundir con el usuario root).


Estructura jerárquica

A diferencia de otros sistemas, Linux usa una estructura en árbol:

/
├── home
├── etc
├── var
├── usr
├── tmp
└── ...

Todo cuelga de /


FHS (Filesystem Hierarchy Standard)

Es el estándar que define qué va en cada directorio.

No es opcional en la práctica: todas las distros importantes lo siguen.


Directorios principales

/home

  • Directorios personales de usuarios
  • Ej: /home/david

Aquí va todo lo del usuario (docs, configs personales, etc.)


/root

  • Home del usuario root

No está en /home por seguridad


/etc

  • Archivos de configuración del sistema

Ejemplos:

/etc/passwd
/etc/ssh/sshd_config
/etc/fstab

Regla de oro: aquí no hay binarios, solo config


/usr

  • Programas y librerías del sistema

Subdirectorios:

  • /usr/bin → comandos
  • /usr/sbin → comandos de admin
  • /usr/lib → librerías

Software instalado desde paquetes


/bin y /sbin

  • Binarios esenciales

  • /bin → comandos básicos (ls, cp, bash)

  • /sbin → herramientas de sistema

Necesarios para que el sistema arranque


/var

  • Datos variables (cambian constantemente)

Ejemplos:

  • Logs → /var/log
  • Spool → /var/spool
  • Cache → /var/cache

Muy importante en troubleshooting


/tmp

  • Archivos temporales

Se puede limpiar automáticamente


/opt

  • Software opcional/manual

Ejemplo:

  • Aplicaciones instaladas fuera del sistema de paquetes

/dev

  • Dispositivos del sistema

Ejemplos:

/dev/sda
/dev/null
/dev/random

“Todo es un archivo”


/proc

  • Información del sistema en tiempo real

Ejemplo:

/proc/cpuinfo
/proc/meminfo

No son archivos reales (pseudo filesystem)


/sys

  • Información del kernel y hardware

Más moderno que /proc


/boot

  • Archivos de arranque

Ejemplo:

  • Kernel
  • GRUB

/mnt y /media

  • Montajes

  • /mnt → manual

  • /media → automático (USB, etc.)


Tipos de archivos en Linux

No todo son “archivos normales”:

  • - archivo normal
  • d directorio
  • l enlace simbólico
  • c dispositivo de caracteres
  • b dispositivo de bloques
  • s socket
  • p pipe

Ver tipo:

ls -l

  • Apunta al mismo inode
  • No distingue entre original y copia
  • Apunta a otro archivo por ruta

Ejemplo:

ln -s /home/david/web.html /var/www/html/

Inodos (inodes)

Cada archivo tiene un identificador único:

  • Contiene metadatos
  • No contiene el nombre del archivo

Ver inode:

ls -i

Importante para debugging (espacio, links, corrupción)


Rutas

Absolutas

/home/user/file.txt

Relativas

./file.txt
../file.txt

Montaje de sistemas de archivos

Linux “monta” dispositivos en el árbol:

Ejemplo:

mount /dev/sdb1 /mnt

Archivo clave:

/etc/fstab

Define montajes automáticos


Puntos críticos para sysadmins

/etc roto

→ sistema inutilizable

/var lleno

→ servicios fallan (logs, DBs, etc.)

/ lleno

→ todo falla

permisos incorrectos

→ problemas de acceso


Ejercicios prácticos

Ver uso de disco

df -h

Ver tamaño de carpetas

du -sh *

Explorar filesystem

tree /

Ver montajes

mount | grep "^/dev"

Mentalidad sysadmin

Cuando algo falla, piensa:

  • ¿Dónde debería estar este archivo?
  • ¿Está montado el filesystem?
  • ¿Hay espacio en disco?
  • ¿Los permisos son correctos?

El filesystem suele ser el origen de muchos problemas


Resumen

  • Linux usa una estructura jerárquica desde /
  • El FHS define dónde va cada cosa
  • Todo (incluyendo dispositivos) se representa como archivos
  • Entender /etc, /var y /home es clave
  • Montajes y espacio en disco son críticos

Siguiente paso

En el siguiente módulo entrarás en:

Conceptos de linux: (conceptos.md)

Donde verás:

  • Redirecciones
  • Pipes
  • stdin / stdout / stderr
  • Cómo combinar herramientas Linux