← ← Volver a todas las notas

Domina los dispositivos de bloque: discos, particiones y nombres “raros” en /dev

2025-11-23 · Benja

Guía práctica para entender qué son los dispositivos de bloque en Linux, qué significan nombres como /dev/sda, /dev/mmcblk0p1 o /dev/nvme0n1p2, y cómo identificar, montar y usar discos y particiones sin arriesgar tus datos.

Domina los dispositivos de bloque: discos, particiones y nombres “raros” en /dev

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:

Jerarquía de almacenamiento:
  • 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/mmcblk0 con particiones /dev/mmcblk0p1, /dev/mmcblk0p2.
  • Discos NVMe: /dev/nvmeXnY
    Ejemplo: /dev/nvme0n1 y 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:

/proc/ - Información de procesos y recursos del sistema
/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.

  1. El kernel detecta un dispositivo (arranque o conexión en caliente).
  2. Se genera un evento.
  3. udev recibe el evento en espacio de usuario.
  4. 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:

Conceptos clave de LVM:
  • 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:

Mejores prácticas de particionado:
  • /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

  1. Ver últimos mensajes del kernel:
    dmesg | tail -n 30
  2. Ver dispositivos de bloque y comparar antes/después:
    lsblk
  3. Confirmar el dispositivo por tamaño/modelo:
    sudo smartctl -i /dev/sdb
  4. 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.

  1. Detectar el nuevo disco con dmesg y lsblk.
  2. Crear partición y filesystem como en el ejemplo anterior.
  3. Hacer el montaje permanente en /etc/fstab usando 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

Comandos esenciales (según objetivos LPI):
  • lsblk - Vista jerárquica de dispositivos
  • blkid - UUIDs y tipos de filesystem
  • fdisk / gdisk - Particionado MBR/GPT
  • parted - Herramienta de particionado avanzada
  • mkfs.* - Creación de sistemas de archivos
  • mount / umount - Montaje/desmontaje
  • dmesg - Mensajes del kernel
  • smartctl - Información de salud de discos
  • efibootmgr - 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

Ejercicio guiado (LPI 101.1):
"Un sistema no puede iniciarse después de agregar un segundo disco SATA. ¿Posible causa?"
Solución: El orden de arranque en BIOS/UEFI debe configurarse correctamente.
# Ver orden de arranque actual
efibootmgr  # Para sistemas UEFI
# O revisar configuración BIOS manualmente
Ejercicio exploratorio (LPI 101.1):
"¿Por qué falta lspci en Raspberry Pi?"
Solución: Las máquinas ARM como Raspberry Pi no tienen bus PCI, por lo que lspci es innecesario.

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.
Próximos pasos recomendados:
  • 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.