Cómo funciona el almacenamiento en Linux

En Linux, los discos y particiones se representan como dispositivos dentro del directorio /dev. Cada disco puede contener varias particiones y cada partición puede contener un sistema de archivos donde se almacenan los datos.

A diferencia de otros sistemas operativos como Windows, Linux no utiliza letras de unidad como C: o D:. En su lugar, todo el almacenamiento se integra dentro de un único árbol de directorios que comienza en la raíz del sistema.

Esto significa que un disco puede montarse en cualquier punto del sistema de archivos. Por ejemplo, un disco puede montarse en /data, /home o incluso reemplazar una parte completa del sistema como /var.

Tipos de dispositivos de almacenamiento

Los dispositivos de almacenamiento pueden aparecer en el sistema con diferentes nombres dependiendo de la tecnología utilizada.

  • Discos SATA o SCSI: /dev/sda, /dev/sdb
  • Discos NVMe: /dev/nvme0n1
  • Tarjetas SD: /dev/mmcblk0
  • Dispositivos USB: /dev/sdc, /dev/sdd

Las particiones se identifican añadiendo un número al final del dispositivo.

  • /dev/sda1
  • /dev/sda2
  • /dev/nvme0n1p1

Ver discos y particiones con lsblk

Una de las herramientas más útiles para ver la estructura de almacenamiento del sistema es lsblk.

lsblk

Este comando muestra todos los discos del sistema y sus particiones en forma de árbol, lo que permite entender rápidamente la estructura del almacenamiento.

Una versión más completa permite ver también el sistema de archivos, la etiqueta, el UUID y el punto de montaje.

lsblk -f

Esta variante es especialmente útil cuando estás diagnosticando discos montados, comprobando si una partición tiene sistema de archivos o preparando entradas para fstab.

Identificar discos con blkid

El comando blkid permite ver los identificadores únicos de cada sistema de archivos. Estos identificadores se conocen como UUID y son muy importantes para referirse a una partición de forma estable.

Usar UUID es más seguro que usar nombres como /dev/sdb1, ya que el nombre del dispositivo puede cambiar si se conectan o desconectan otros discos.

blkid

Este comando resulta clave cuando vas a montar discos de forma automática en el arranque del sistema mediante /etc/fstab.

Comprobar espacio disponible con df

Para comprobar cuánto espacio libre queda en las particiones montadas se utiliza el comando df.

La opción -h muestra el tamaño en formato legible para humanos, algo mucho más cómodo que verlo en bloques.

df -h

Este comando no muestra discos físicos, sino sistemas de archivos montados. Por eso es la herramienta adecuada para comprobar si una ruta concreta se está quedando sin espacio.

Localizar qué ocupa espacio con du

Cuando un disco se llena, el siguiente paso no es tocar particiones, sino averiguar qué está ocupando espacio. Para eso se utiliza el comando du.

Una forma muy útil de comenzar el diagnóstico es revisar el primer nivel del sistema.

du -h --max-depth=1 /

Esto muestra cuánto ocupa cada directorio principal y ayuda a detectar rápidamente si el problema está en /var, /home, /tmp o cualquier otra ruta.

Si quieres medir un directorio concreto de forma resumida puedes usar:

du -sh /var

Usar ncdu para diagnosticar espacio

Una herramienta especialmente útil para diagnosticar problemas de espacio es ncdu. Ofrece una vista interactiva y navegable del uso de disco, muy cómoda para servidores y sistemas sin entorno gráfico.

Primero se instala:

sudo apt install ncdu

Y después se ejecuta sobre la ruta que quieras analizar:

ncdu /

Es una herramienta muy recomendable porque acelera muchísimo el diagnóstico de discos llenos.

Tabla de particiones: MBR y GPT

Los discos utilizan una tabla de particiones que describe cómo está dividido el espacio. Los dos formatos principales son MBR y GPT.

  • MBR es el formato clásico y tiene limitaciones como un máximo de 2 TB y 4 particiones primarias.
  • GPT es el formato moderno, soporta discos grandes y permite muchas más particiones.

Hoy en día, GPT es la opción recomendada para prácticamente cualquier sistema moderno.

Puedes ver información del disco y sus particiones con:

sudo fdisk -l

Crear particiones con fdisk

Una de las herramientas más conocidas para crear o modificar particiones es fdisk. Se utiliza de forma interactiva sobre el disco que quieras editar.

Ejemplo sobre un disco nuevo:

sudo fdisk /dev/sdb

Dentro de fdisk, los comandos más habituales son:

  • n para crear una nueva partición
  • d para borrar una partición
  • p para mostrar la tabla actual
  • w para guardar los cambios
  • q para salir sin guardar

Modificar particiones es una operación delicada. Si el disco contiene datos importantes, conviene trabajar siempre con copia de seguridad previa.

Crear un sistema de archivos

Una partición recién creada todavía no está lista para usarse. Antes necesita un sistema de archivos. Este es el formato interno que utilizará Linux para organizar carpetas, archivos, permisos e inodos.

El más común en Linux es ext4, aunque también existen otros como xfs, btrfs o vfat.

Ejemplo para crear un sistema de archivos ext4:

mkfs.ext4 /dev/sdb1

Este comando borra el contenido previo de la partición, así que debe utilizarse con muchísimo cuidado.

Montar discos en Linux

En Linux, un disco no está disponible automáticamente por el simple hecho de existir. Para poder acceder a él debe montarse en algún punto del árbol de directorios.

Primero se crea un punto de montaje, que no deja de ser un directorio vacío.

mkdir /data

Después se monta la partición en ese directorio.

mount /dev/sdb1 /data

A partir de ese momento, el contenido del disco será accesible a través de /data.

Montaje automático con fstab

Si quieres que el disco se monte automáticamente al arrancar el sistema, debes añadir una entrada en /etc/fstab.

Editar este archivo requiere cuidado, porque un error puede impedir que el sistema arranque correctamente o deje el disco sin montar.

nano /etc/fstab

Ejemplo de entrada utilizando UUID:

UUID=xxxx /data ext4 defaults 0 2

Después de modificar fstab, conviene probar la configuración antes de reiniciar:

mount -a

Si este comando no muestra errores, la configuración probablemente es correcta.

Diagnóstico de disco lleno

Uno de los problemas más habituales en Linux es encontrarse con un sistema que empieza a fallar porque la partición raíz o una ruta importante se ha quedado sin espacio.

El mensaje más típico es:

No space left on device

El primer paso debe ser comprobar qué sistema de archivos está lleno.

df -h

Después, hay que localizar qué directorios están creciendo demasiado.

du -h --max-depth=1 /

Y si necesitas una visión más clara, puedes apoyarte en ncdu.

Problema de inodos agotados

A veces el sistema muestra el error de falta de espacio aunque todavía quede almacenamiento libre. En estos casos, el problema puede no ser el espacio, sino los inodos.

Los inodos representan la capacidad de crear archivos. Si se consumen todos, no podrás crear más, aunque queden gigas libres en disco.

Para comprobarlo:

df -i

Esto suele ocurrir cuando hay millones de archivos pequeños, por ejemplo en cachés, colas, sesiones web o logs mal gestionados.

Comprobar el estado físico de un disco

Cuando sospechas de un problema físico en un disco, una herramienta muy útil es smartctl, incluida en el paquete smartmontools.

Primero se instala:

sudo apt install smartmontools

Después se puede consultar el estado SMART del disco:

sudo smartctl -a /dev/sda

Esto puede ayudarte a detectar sectores reasignados, errores de lectura, desgaste o señales tempranas de fallo.

Ampliar una partición y su sistema de archivos

Una situación muy común en servidores virtuales es ampliar el disco desde el hipervisor y después adaptar Linux para que aproveche el nuevo espacio.

El proceso general suele ser este:

  • ampliar el disco desde la plataforma de virtualización
  • hacer crecer la partición
  • hacer crecer el sistema de archivos

Primero comprobamos la estructura:

lsblk

Después, si el entorno lo permite, puede usarse growpart para ampliar la partición.

growpart /dev/sda 1

Y finalmente se amplía el sistema de archivos, por ejemplo en ext4:

resize2fs /dev/sda1

Qué es LVM y por qué es tan útil

LVM, o Logical Volume Manager, añade una capa de abstracción sobre los discos y particiones tradicionales. En lugar de depender directamente de una única partición física, puedes trabajar con volúmenes lógicos mucho más flexibles.

La arquitectura de LVM suele seguir esta secuencia:

  • PV: Physical Volume
  • VG: Volume Group
  • LV: Logical Volume

Esto permite ampliar volúmenes con mucha más facilidad, combinar discos e incluso crear snapshots.

Los comandos básicos para inspeccionar un sistema LVM son:

pvs
vgs
lvs

Laboratorio práctico: añadir un disco nuevo

Este laboratorio simula una situación muy común: añades un disco nuevo al sistema y quieres prepararlo para almacenar datos.

1 Ver discos disponibles

Lo primero es identificar el disco nuevo y comprobar que no contiene particiones previas.

lsblk

2 Crear una partición

Una vez detectado el disco, se crea una partición nueva con fdisk.

fdisk /dev/sdb

Dentro del asistente interactivo puedes usar n para nueva partición y w para guardar.

3 Crear el sistema de archivos

Una vez creada la partición, se formatea con ext4.

mkfs.ext4 /dev/sdb1

4 Crear punto de montaje

El siguiente paso es preparar el directorio donde se integrará el disco dentro del árbol de Linux.

mkdir /data

5 Montar el disco

Después se monta la partición sobre el punto elegido.

mount /dev/sdb1 /data

Ahora el disco ya está listo para usarse mientras el sistema permanezca encendido.

6 Preparar el montaje automático

Para que no se pierda el montaje al reiniciar, se obtiene el UUID y se añade una entrada en fstab.

blkid
nano /etc/fstab
mount -a

Laboratorio práctico: diagnosticar un disco lleno

Este segundo laboratorio reproduce una situación real de administración: el sistema empieza a fallar porque una partición importante está llena.

1 Comprobar qué filesystem está lleno

df -h

Busca una partición con poco o ningún espacio libre, especialmente si se trata de /, /var o /home.

2 Localizar el directorio problemático

du -h --max-depth=1 /

Después repite el proceso sobre la ruta sospechosa, por ejemplo /var o /home.

du -h --max-depth=1 /var

3 Revisar visualmente con ncdu

ncdu /

Con esta herramienta podrás navegar por los directorios y detectar rápidamente backups olvidados, logs gigantes o contenedores mal gestionados.

4 Comprobar si el problema son los inodos

df -i

Si el porcentaje de uso de inodos está al 100%, el problema no es el espacio en gigas, sino la cantidad de archivos.

Laboratorio práctico: ampliar una partición existente

Este laboratorio representa otro caso muy habitual: una máquina virtual ha aumentado el tamaño de su disco, pero Linux todavía no está utilizando ese espacio adicional.

1 Ver la situación actual

lsblk
df -h

Así comprobarás cuánto mide el disco y cuánto está aprovechando actualmente la partición y el sistema de archivos.

2 Ampliar la partición

Si la herramienta está disponible en tu sistema, growpart simplifica mucho este paso.

growpart /dev/sda 1

3 Ampliar el sistema de archivos

Después de ampliar la partición, el sistema de archivos sigue teniendo el tamaño anterior. Por eso también hay que expandirlo.

resize2fs /dev/sda1

Al terminar, vuelve a comprobar el resultado con df -h.

Laboratorio práctico: crear un volumen LVM

Este laboratorio introduce una gestión de discos más flexible mediante LVM. Es muy habitual en servidores y entornos donde se prevé crecimiento futuro.

1 Crear un Physical Volume

Suponiendo que tienes un disco nuevo en /dev/sdb, primero lo conviertes en volumen físico.

pvcreate /dev/sdb

2 Crear un Volume Group

Después agrupas el almacenamiento dentro de un grupo lógico.

vgcreate vgdatos /dev/sdb

3 Crear un Logical Volume

Ahora creas el volumen lógico que realmente utilizarás.

lvcreate -L 10G -n datos vgdatos

4 Crear filesystem y montar

El volumen lógico aparece como un dispositivo más y se trata de forma muy parecida a una partición normal.

mkfs.ext4 /dev/vgdatos/datos
mkdir /datos
mount /dev/vgdatos/datos /datos

5 Ampliar el volumen más adelante

Si más adelante necesitas más espacio, puedes ampliar el volumen lógico y luego el sistema de archivos.

lvextend -L +5G /dev/vgdatos/datos
resize2fs /dev/vgdatos/datos

Buenas prácticas

  • Comprobar siempre la estructura de discos con lsblk antes de tocar particiones.
  • Utilizar UUID en fstab para evitar problemas si cambia el nombre del dispositivo.
  • Hacer copia de seguridad antes de modificar particiones o ampliar sistemas de archivos.
  • Probar mount -a después de editar fstab y antes de reiniciar.
  • Revisar tanto el espacio libre como los inodos cuando aparezcan errores de almacenamiento.
  • Utilizar LVM en servidores donde preveas crecimiento o necesites mayor flexibilidad.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Nivel:

archivos arranque backup buscar completa conexiones configuración copiar copias de seguridad cortafuegos cpu deshabilitar disco escaneo espacio espacio ocupado filtrar firewall habilitar herramienta incremental inicio interfaz lectura listar log mantenimiento monitorización monousuario patrones procesos pruebas ram recursos red redes seguridad servicios sincronización sockets tcp texto udp uso ver

  • grep

    El comando grep se utiliza para buscar patrones de texto dentro de archivos o en la salida de otros comandos en sistemas Unix y Linux.…

  • cp

    El comando cp se utiliza para copiar archivos y directorios en sistemas Unix y Linux. Proporciona una forma rápida de duplicar archivos y directorios en…

  • ls

    El comando ls se utiliza para listar el contenido de directorios en sistemas Unix y Linux. Proporciona una forma rápida de ver qué archivos y…