El comando lsblk en Linux: listar dispositivos de bloque

Introducción

En el mundo de la administración de sistemas Linux, conocer los dispositivos de bloque disponibles es fundamental para tareas como particionado, formateo, montaje y solución de problemas de almacenamiento. El comando lsblk (list block devices) se ha convertido en una herramienta indispensable gracias a su salida clara y estructurada, que muestra jerárquicamente discos, particiones, volúmenes lógicos y otros dispositivos de bloque. A diferencia de herramientas más antiguas como fdisk -l, lsblk no requiere privilegios de root para mostrar la mayor parte de la información y se adapta bien a scripts y entornos de automatización.

¿Qué es lsblk?

lsblk pertenece al paquete util-linux y lee la información del sistema de archivos virtual /sys y del gestor de dispositivos udev para construir un árbol de dispositivos de bloque. Cada fila de la salida representa un dispositivo y sus columnas indican el nombre, los mayores y menores números, el tamaño, el tipo de dispositivo, el punto de montaje y otros atributos útiles. La herramienta está diseñada para ser legible tanto por humanos como por programas, ya que admite formatos de salida como JSON.

Sintaxis básica

La forma más simple de usar lsblk es ejecutarlo sin argumentos:

lsblk

Esto mostrará todos los dispositivos de bloque detectados en el sistema. Si deseas limitar la vista a un dispositivo concreto, puedes especificar su nombre:

lsblk /dev/sda

Además, lsblk acepta numerosas opciones que modifican la cantidad y el formato de la información mostrada.

Opciones más útiles

  • -a o --all: muestra dispositivos vacíos, como aquellos de loop sin archivo asociado.
  • -b o --bytes: muestra el tamaño en bytes en lugar de unidades legibles.
  • -f o --fs: agrega información sobre el sistema de archivos, como el tipo, el UUID y el punto de montaje.
  • -i or --ascii: fuerza el uso de caracteres ASCII en el árbol, útil cuando la salida se copia a terminales que no soportan Unicode.
  • -J or --json: genera la salida en formato JSON, ideal para su integración en scripts.
  • -o or --output: permite definir exactamente qué columnas se mostrarán, por ejemplo lsblk -o NAME,SIZE,TYPE,MOUNTPOINT.

Ejemplos prácticos

Supongamos que quieres obtener una lista rápida de todos los discos y sus particiones, con tamaños legibles y el punto de montaje:

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT

Esto producirá una tabla donde cada línea muestra el nombre del dispositivo, su tamaño, el tipo de sistema de archivos y dónde está montado.

Si necesitas identificar los dispositivos de tipo loop que están asociados a archivos de imagen, puedes combinar -a con un filtro de tipo:

lsblk -a -o NAME,TYPE,SIZE,MOUNTPOINT | grep loop

Para obtener la salida en JSON y procesarla con jq, simplemente ejecuta:

lsblk -J | jq '.blockdevices[] | {name:.name, size:.size, mountpoint:.mountpoint}'

Este enfoque es muy útil en pipelines de automatización donde se requiere crear o eliminar volúmenes basándose en su tamaño actual.

Interpretación de la salida

La salida de lsblk está organizada en forma de árbol. Los dispositivos que aparecen sin sangría son los discos físicos o unidades de almacenamiento de nivel superior. Sus particiones aparecen indentadas bajo ellos, indicando una relación de contención. Los dispositivos de tipo rom, disk, part, lvm y loop se distinguen en la columna TYPE. El campo SIZE muestra el tamaño total del dispositivo, mientras que ROTA indica si el medio es rotatorio (valor 1) o de estado sólido (valor 0). La columna MOUNTPOINT muestra dónde está montado el sistema de archivos; si está vacío, el dispositivo no está montado en ese momento.

Otra columna útil es MODEL, que, cuando se combina con la opción -o, muestra el modelo del disco según lo reportado por el kernel, lo que ayuda a identificar unidades específicas en servidores con múltiples discos.

Consejos y trucos

  • Usa lsblk -f para ver rápidamente el UUID de cada partición, información esencial al editar el archivo /etc/fstab.
  • Si trabajas con entornos de contenedores o máquinas virtuales, la opción -d (--nodeps) omite los dispositivos esclavos y muestra solo los dispositivos principales.
  • Para monitorizar cambios en tiempo real, combina lsblk con watch: watch -n 1 lsblk actualiza la lista cada segundo.
  • En scripts, prefiere la salida JSON (-J) y procesa con herramientas como jq or python -m json.tool para evitar problemas de parsing de texto.
  • Recuerda que lsblk solo muestra dispositivos de bloque; para dispositivos de carácter (como /dev/tty or /dev/random) necesitas usar lsdev o inspeccionar /dev directamente.

Conclusión

El comando lsblk es una herramienta versátil y amigable que brinda una visión clara y estructurada de los dispositivos de bloque en cualquier sistema Linux. Desde la simple visualización de discos y particiones hasta la generación de datos JSON para automatización, lsblk se adapta a múltiples escenarios de administración y diagnóstico. Dominar sus opciones y saber interpretar su árbol de salida te permitirá gestionar el almacenamiento de forma más eficiente, reducir errores en el particionado y acelerar la resolución de problemas relacionados con discos y volúmenes. Ya seas un administrador de sistemas experimentado o un recién llegado al mundo de Linux, incorporar lsblk a tu conjunto de herramientas diarias es una inversión que se paga rápidamente en productividad y claridad.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol