Si trabajas con servidores Linux, contenedores, bases de datos o simplemente desarrollas en una máquina con Linux,
tus aplicaciones viven sobre discos. Pero no todos los discos son iguales, y entender cómo Linux los maneja —desde
los nombres en /dev como /dev/sda, /dev/mmcblk0p1 o /dev/nvme0n1p2
hasta capas como LVM y RAID— puede salvarte de desastres y optimizar tu infraestructura.
1. Arquitectura de Almacenamiento: Más Allá de /dev
El kernel Linux organiza el almacenamiento en capas:
- Dispositivo físico → Disco HDD/SSD/NVMe
- Dispositivo de bloque →
/dev/sda,/dev/nvme0n1 - Particiones →
/dev/sda1,/dev/sda2 - Sistemas de archivos → EXT4, XFS, Btrfs
- Puntos de montaje →
/,/home,/var
Dispositivos de bloque vs dispositivos de carácter
En Linux, casi todo es un archivo. El hardware también.
-
Dispositivos de carácter
Se leen/escriben como un flujo de bytes.
Ejemplos: puertos serie, algunos dispositivos de consola, etc. -
Dispositivos de bloque
Se acceden en bloques de datos (sectorizado, con búfer).
Pensados para almacenamiento: discos, SSD, pendrives, tarjetas SD, etc.
Un “disco” en Linux es un archivo especial en /dev que el kernel expone como dispositivo de bloque.
Nombres típicos en /dev
Los dispositivos de bloque más comunes se nombran así:
-
Discos SATA/SCSI/USB:
/dev/sdX
Ejemplo: primer disco/dev/sda, segundo/dev/sdb.
Particiones:/dev/sda1,/dev/sda2, etc. -
Dispositivos SD/MMC:
/dev/mmcblkX
Ejemplo:/dev/mmcblk0con particiones/dev/mmcblk0p1,/dev/mmcblk0p2. -
Discos NVMe:
/dev/nvmeXnY
Ejemplo:/dev/nvme0n1y sus particiones/dev/nvme0n1p1,/dev/nvme0n1p2.
Para ver la relación disco → particiones → puntos de montaje:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 477G 0 disk
└─sda1 8:1 0 477G 0 part /
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part /data
Inspección Profunda con Herramientas del Sistema
Según el material LPI, estas herramientas son esenciales:
# Ver todos los dispositivos PCI (incluyendo controladores de almacenamiento)
lspci | grep -i storage
# Examinar dispositivos USB conectados
lsusb
# Ver módulos del kernel cargados para almacenamiento
lsmod | grep -E '(sd|nvme|usb)'
Ejemplo de diagnóstico avanzado:
# Información detallada de un dispositivo específico
lspci -s 01:00.0 -v
# Salida: kernel driver in use: nvme
2. /proc y /sys: Los Sistemas de Archivos que No Son Archivos
Linux expone información del kernel a través de pseudo-sistemas de archivos:
/sys/ - Información específica de dispositivos y drivers
# Archivos clave para diagnóstico de almacenamiento
cat /proc/partitions # Particiones reconocidas
cat /proc/mounts # Sistemas montados actualmente
ls /sys/block/ # Dispositivos de bloque detectados
ls /sys/class/block/ # Vista alternativa
Ejemplo práctico: Verificar si un disco está siendo detectado correctamente:
ls /sys/block/sd* # Discos SATA/SCSI
ls /sys/block/nvme* # Discos NVMe
ls /sys/block/mmcblk* # Tarjetas SD/MMC
udev, coldplug y hotplug: quién crea realmente /dev
Los archivos de /dev no están “hardcodeados”: se crean dinámicamente.
- El kernel detecta un dispositivo (arranque o conexión en caliente).
- Se genera un evento.
- udev recibe el evento en espacio de usuario.
- udev aplica reglas y crea (o elimina) las entradas correspondientes en
/dev.
Conceptos útiles:
- Coldplug: detección de dispositivos ya conectados al arrancar.
- Hotplug: detección de dispositivos conectados/desconectados con el sistema encendido (USB, discos externos, etc.).
Puedes inspeccionar cómo udev organiza los discos con:
ls -l /dev/disk/by-id
ls -l /dev/disk/by-uuid
ls -l /dev/disk/by-label
Usar UUID/labels es más robusto que depender de si algo se llama hoy /dev/sdb y mañana /dev/sdc.
3. LVM: Cuando las Particiones No Son Suficientes
El Logical Volume Manager (LVM) proporciona una capa de abstracción sobre el almacenamiento físico:
- Physical Volume (PV) → Disco o partición física
- Volume Group (VG) → Pool de múltiples PVs
- Logical Volume (LV) → "Partición virtual" creada desde el VG
# Flujo de trabajo típico de LVM
sudo pvcreate /dev/sdb1 # Crear volumen físico
sudo vgcreate mi_vg /dev/sdb1 # Crear grupo de volúmenes
sudo lvcreate -n mi_lv -L 50G mi_vg # Crear volumen lógico de 50GB
sudo mkfs.ext4 /dev/mi_vg/mi_lv # Formatear
sudo mount /dev/mi_vg/mi_lv /mnt/data # Montar
Ventajas de LVM en producción:
- Redimensionado en caliente: Aumentar/disminuir volúmenes sin desmontar (según FS).
- Snapshots: Instantáneas para backups consistentes.
- Agregación de almacenamiento: Combinar múltiples discos en un pool.
# Extender un volumen lógico (ejemplo común)
sudo lvextend -L +10G /dev/mi_vg/mi_lv # Agregar 10GB
sudo resize2fs /dev/mi_vg/mi_lv # Extender filesystem
4. MBR vs GPT: La Batalla de los Esquemas de Particionado
| Característica | MBR | GPT |
|---|---|---|
| Máximo tamaño disco | 2TB | ~9.4 ZB |
| Máximo particiones | 4 primarias | 128 (en Linux) |
| Compatibilidad | Universal | Requiere UEFI/BIOS moderno |
Identificando tu esquema actual:
sudo fdisk -l /dev/sda | grep "Disklabel"
# Salida: Disklabel type: gpt (o dos para MBR)
5. Estrategias de Montaje para Sistemas de Producción
El material LPI enfatiza la importancia de separar directorios críticos:
/boot→ 300-500MB (separado para recuperación)/→ 20-50GB (sistema operativo)/home→ Variable (datos de usuario)/var→ Variable (logs, datos de aplicaciones)swap→ Según RAM (ver tabla LPI)
Tabla de tamaño de swap recomendado (según LPI):
| RAM del sistema | Swap recomendado |
|---|---|
| < 2GB | 2x RAM |
| 2-8GB | Igual a RAM |
| 8-64GB | Mínimo 4GB |
Montar por /dev vs montar por UUID/LABEL
Montar directamente por /dev/sdXN funciona, pero es frágil cuando:
- Cambias el orden de los discos.
- Mueves discos entre máquinas.
- Agregas/quitas dispositivos y la enumeración cambia.
Es mucho más robusto montar por UUID o por LABEL del sistema de archivos.
lsblk -f
# o
blkid
Ejemplo de entrada en /etc/fstab por UUID:
UUID=5555-6666-7777-8888 /data ext4 defaults 0 2
Por LABEL:
LABEL=data_disk /data ext4 defaults 0 2
6. Casos Avanzados: Más Allá de los Discos Básicos
6.1. Sistemas Embebidos y Raspberry Pi
En dispositivos ARM, la nomenclatura cambia:
# Raspberry Pi típica
/dev/mmcblk0 # Tarjeta SD principal
/dev/mmcblk0p1 # Partición boot (FAT32)
/dev/mmcblk0p2 # Partición root (EXT4)
6.2. NVMe y Discos de Alto Rendimiento
Los discos NVMe siguen convenciones específicas:
# Estructura NVMe
/dev/nvme0 # Primer controlador NVMe
/dev/nvme0n1 # Primer namespace del primer controlador
/dev/nvme0n1p1 # Primera partición del primer namespace
6.3. Device Mapper y Capas de Virtualización
LVM, cifrado y otras tecnologías usan device mapper:
ls -la /dev/mapper/
# Ejemplos comunes:
# /dev/mapper/vg0-root # Volumen LVM
# /dev/mapper/cryptswap # Swap cifrado
# /dev/mapper/luks-* # Discos cifrados con LUKS
7. Resolución de Problemas: De la Teoría a la Práctica
7.1. Cuando el Sistema No Arranca
Síntoma: Mensaje "ALERT! /dev/sda3 does not exist"
Solución:
# Desde un live USB/CD
sudo mount /dev/sda2 /mnt # Montar root real
sudo mount /dev/sda1 /mnt/boot # Montar boot si está separado
sudo chroot /mnt
grub-install /dev/sda
update-grub
7.2. Discos que No Aparecen
Diagnóstico paso a paso:
# 1. Verificar detección hardware
dmesg | grep -i scsi
dmesg | grep -i nvme
# 2. Verificar módulos del kernel
lsmod | grep sd_mod
lsmod | grep nvme
# 3. Forzar rescaneo de buses
echo 1 > /sys/class/scsi_host/host0/scan
echo 1 > /sys/class/scsi_host/host1/scan
7.3. Gestión de Múltiples Discos en Producción
# Script para identificar discos únicamente
for disk in /dev/sd?; do
echo "=== $disk ==="
sudo smartctl -i $disk | grep -E "(Model|Serial|Capacity)"
done
7.4. Encontrar y montar un disco recién agregado
-
Ver últimos mensajes del kernel:
dmesg | tail -n 30 -
Ver dispositivos de bloque y comparar antes/después:
lsblk -
Confirmar el dispositivo por tamaño/modelo:
sudo smartctl -i /dev/sdb -
Crear partición, formatear y montar:
sudo fdisk /dev/sdb # crear /dev/sdb1 sudo mkfs.ext4 /dev/sdb1 sudo mkdir -p /data sudo mount /dev/sdb1 /data
7.5. Servidor headless: añadir un disco para /data
Escenario típico: servidor sin entorno gráfico al que le añaden un disco nuevo para datos.
- Detectar el nuevo disco con
dmesgylsblk. - Crear partición y filesystem como en el ejemplo anterior.
- Hacer el montaje permanente en
/etc/fstabusando UUID:
lsblk -f # Obtener UUID
sudoedit /etc/fstab # Agregar línea del tipo:
# UUID=xxxx-xxxx /data ext4 defaults 0 2
8. Kit de Herramientas del Administrador Profesional
lsblk- Vista jerárquica de dispositivosblkid- UUIDs y tipos de filesystemfdisk / gdisk- Particionado MBR/GPTparted- Herramienta de particionado avanzadamkfs.*- Creación de sistemas de archivosmount / umount- Montaje/desmontajedmesg- Mensajes del kernelsmartctl- Información de salud de discosefibootmgr- Gestión de entrada de arranque UEFI
Flujo de trabajo profesional:
# 1. Identificar el disco
lsblk
# 2. Verificar información detallada
sudo fdisk -l /dev/sdb
# 3. Crear partición (GPT example)
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 1MiB 100%
# 4. Formatear
sudo mkfs.ext4 /dev/sdb1
# 5. Montar con UUID (mejor práctica)
sudo blkid /dev/sdb1 # Obtener UUID
echo "UUID=1234-5678 /mnt/data ext4 defaults 0 2" | sudo tee -a /etc/fstab
9. Ejercicios Prácticos Basados en Certificación LPI
"Un sistema no puede iniciarse después de agregar un segundo disco SATA. ¿Posible causa?"
# Ver orden de arranque actual
efibootmgr # Para sistemas UEFI
# O revisar configuración BIOS manualmente
"¿Por qué falta lspci en Raspberry Pi?"
10. Conclusión: De Novato a crack del Almacenamiento
Dominar el almacenamiento en Linux implica entender múltiples capas:
- Capa física: Discos, controladores, buses.
- Capa de bloque:
/dev/sd*,/dev/nvme*,/dev/mmcblk*. - Capa de particionado: MBR vs GPT, tablas de particiones.
- Capa de abstracción: LVM, device mapper, RAID.
- Capa de filesystem: EXT4, XFS, Btrfs.
- Capa de montaje:
/etc/fstab, puntos de montaje, opciones.
Con este conocimiento podrás:
- Diagnosticar problemas de arranque y montaje.
- Diseñar esquemas de almacenamiento robustos.
- Gestionar discos en entornos virtualizados y cloud.
- Prepararte para certificaciones como LPIC-1.
- Practicar con máquinas virtuales añadiendo/quitando discos.
- Experimentar con LVM: crear, extender y hacer snapshots.
- Estudiar RAID software con mdadm.
- Explorar sistemas de archivos avanzados como XFS y Btrfs.
Y, de paso, la próxima vez que veas un nombre “raro” como /dev/mmcblk0p1 o
/dev/nvme0n1p2, ya no será magia negra: sabrás exactamente qué es, dónde encaja en la pila de
almacenamiento y cómo trabajar con él sin poner en riesgo tus datos.