El comando lsblk en Linux con ejemplos prácticos

LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, exploraremos el comando lsblk de Linux, el cual muestra información sobre todos los dispositivos de bloque disponibles en tu sistema. Los dispositivos de bloque incluyen discos duros, unidades de estado sólido (SSD), unidades USB y otros medios de almacenamiento. El comando lsblk presenta esta información en un formato claro en forma de árbol, lo que facilita la comprensión de la relación entre los diferentes dispositivos de almacenamiento y sus particiones.

Comprender los dispositivos de almacenamiento es fundamental para cualquier persona que trabaje con sistemas Linux. Ya sea que necesites identificar el almacenamiento disponible, verificar el tamaño de las particiones o comprobar los puntos de montaje, el comando lsblk ofrece una forma rápida y eficiente de recopilar esta información.

Al finalizar este laboratorio, podrás utilizar el comando lsblk con varias opciones para obtener información detallada sobre los dispositivos de almacenamiento en tu sistema Linux.

Hoja de referencia de comandos de Linux

Uso básico del comando lsblk

En este paso, utilizarás el comando lsblk para mostrar información sobre los dispositivos de bloque disponibles en tu sistema Linux. Los dispositivos de bloque son dispositivos de almacenamiento como discos duros, SSD y unidades USB.

Abre la terminal si aún no está abierta. Luego, ejecuta el comando básico lsblk:

lsblk

Deberías ver una salida similar a esta:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0  55.5M  1 loop /snap/core18/2128
loop1    7:1    0  55.4M  1 loop /snap/core18/2284
loop2    7:2    0  43.6M  1 loop /snap/snapd/15534
loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535
loop4    7:4    0  31.1M  1 loop /snap/snapd/16292
sda      8:0    0   50G  0 disk
├─sda1   8:1    0   49G  0 part /
└─sda2   8:2    0  976M  0 part [SWAP]

Esta salida muestra todos los dispositivos de bloque de tu sistema con las siguientes columnas:

  • NAME: El nombre del dispositivo
  • MAJ:MIN: Los números de dispositivo mayor y menor
  • RM: Indicador de dispositivo extraíble (1 significa extraíble, 0 significa no extraíble)
  • SIZE: El tamaño del dispositivo
  • RO: Indicador de solo lectura (1 significa solo lectura, 0 significa lectura/escritura)
  • TYPE: Tipo de dispositivo (disco, partición, bucle/loop, etc.)
  • MOUNTPOINT: Dónde está montado el dispositivo (si corresponde)

En el ejemplo anterior, puedes ver:

  • Varios dispositivos loop utilizados por los paquetes snap
  • Un dispositivo de almacenamiento principal sda (que es un disco de 50 GB)
  • Dos particiones en sda: sda1 (montada en la raíz /) y sda2 (utilizada como espacio de intercambio o swap)

La estructura en forma de árbol en la salida facilita visualizar qué particiones pertenecen a qué discos. Por ejemplo, puedes ver que tanto sda1 como sda2 son particiones del disco sda.

Ahora que entiendes la salida básica del comando lsblk, vamos a explorar algunas opciones útiles en los siguientes pasos.

Mostrar información adicional con lsblk

En este paso, aprenderemos a utilizar el comando lsblk con diferentes opciones para mostrar información más detallada sobre los dispositivos de bloque.

Usar la opción -f para mostrar información del sistema de archivos

La opción -f muestra información del sistema de archivos, incluyendo su tipo, etiqueta (label), UUID y punto de montaje. Esto resulta especialmente útil cuando necesitas identificar dispositivos por su UUID o comprobar qué tipos de sistemas de archivos se están utilizando.

Ejecuta el siguiente comando en tu terminal:

lsblk -f

Deberías ver una salida similar a esta:

NAME   FSTYPE   LABEL UUID                                 MOUNTPOINT
loop0  squashfs                                            /snap/core18/2128
loop1  squashfs                                            /snap/core18/2284
loop2  squashfs                                            /snap/snapd/15534
loop3  squashfs                                            /snap/gtk-common-themes/1535
loop4  squashfs                                            /snap/snapd/16292
sda
├─sda1 ext4           5fbb8eed-12a3-4b5c-9d67-9594ff4e2d1c /
└─sda2 swap           b409ae25-7589-44eb-a909-b56f1d42c5ab [SWAP]

La salida ahora incluye columnas adicionales:

  • FSTYPE: El tipo de sistema de archivos (ext4, swap, squashfs, etc.)
  • LABEL: Cualquier etiqueta asignada al sistema de archivos
  • UUID: El identificador único universal (Universal Unique Identifier) del sistema de archivos

Usar la opción -m para mostrar información de propietario y permisos del dispositivo

La opción -m muestra los permisos y la información del propietario de los dispositivos de bloque. Esto es útil para solucionar problemas relacionados con los permisos.

Ejecuta el siguiente comando:

lsblk -m

Deberías ver una salida como esta:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT OWNER GROUP MODE
loop0    7:0    0  55.5M  1 loop /snap/core18/2128 root  disk  brw-rw----
loop1    7:1    0  55.4M  1 loop /snap/core18/2284 root  disk  brw-rw----
loop2    7:2    0  43.6M  1 loop /snap/snapd/15534 root  disk  brw-rw----
loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535 root  disk  brw-rw----
loop4    7:4    0  31.1M  1 loop /snap/snapd/16292 root  disk  brw-rw----
sda      8:0    0   50G  0 disk            root  disk  brw-rw----
├─sda1   8:1    0   49G  0 part /          root  disk  brw-rw----
└─sda2   8:2    0  976M  0 part [SWAP]     root  disk  brw-rw----

Las nuevas columnas muestran:

  • OWNER: El usuario propietario del dispositivo (normalmente root)
  • GROUP: El grupo propietario del dispositivo (normalmente disk)
  • MODE: El modo de permisos del dispositivo

Usar la opción -o para seleccionar columnas de salida específicas

La opción -o te permite especificar qué columnas deseas mostrar. Esto es útil cuando solo necesitas cierta información y prefieres una salida más limpia y directa.

Vamos a mostrar únicamente las columnas de nombre, tamaño y punto de montaje:

lsblk -o NAME,SIZE,MOUNTPOINT

La salida será mucho más sencilla:

NAME    SIZE MOUNTPOINT
loop0  55.5M /snap/core18/2128
loop1  55.4M /snap/core18/2284
loop2  43.6M /snap/snapd/15534
loop3  61.9M /snap/gtk-common-themes/1535
loop4  31.1M /snap/snapd/16292
sda     50G
├─sda1   49G /
└─sda2  976M [SWAP]

Esta salida personalizada facilita la concentración en la información que realmente necesitas. Puedes combinar varias opciones para obtener exactamente los datos que buscas en el formato que mejor se adapte a tus necesidades.

Filtrar dispositivos de bloque con lsblk

En este paso, aprenderemos a limitar la salida del comando lsblk y a mostrar la información en diferentes formatos.

Mostrar únicamente los dispositivos de nivel superior

La opción --nodeps, abreviada como -d, omite los dispositivos dependientes, como las particiones. Esto es útil cuando deseas una vista concisa de los dispositivos de bloque principales (nivel superior).

Ejecuta el siguiente comando:

lsblk --nodeps

La salida mostrará los dispositivos principales sin sus árboles de particiones. Los nombres y tamaños de los dispositivos pueden variar entre sistemas:

NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda  253:0    0   40G  0 disk
vdb  253:16   0  100G  0 disk /etc/hosts

Excluir dispositivos por número mayor

La opción --exclude, abreviada como -e, acepta una lista separada por comas de los números de dispositivo mayor que se desean omitir. Por ejemplo, los dispositivos loop utilizan el número mayor 7, por lo que el siguiente comando los excluye:

lsblk --exclude 7

Este filtro se aplica a los dispositivos principales. Sus particiones dependientes aún pueden aparecer en el árbol.

Mostrar las rutas de los dispositivos

La opción --paths muestra las rutas completas de los dispositivos en lugar de solo sus nombres. Esto resulta útil cuando necesitas hacer referencia a los dispositivos dentro de scripts o comandos.

Ejecuta el siguiente comando:

lsblk --paths

La salida incluirá las rutas completas de los dispositivos:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/loop0    7:0    0  55.5M  1 loop /snap/core18/2128
/dev/loop1    7:1    0  55.4M  1 loop /snap/core18/2284
/dev/loop2    7:2    0  43.6M  1 loop /snap/snapd/15534
/dev/loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535
/dev/loop4    7:4    0  31.1M  1 loop /snap/snapd/16292
/dev/sda      8:0    0   50G  0 disk
├─/dev/sda1   8:1    0   49G  0 part /
└─/dev/sda2   8:2    0  976M  0 part [SWAP]

Mostrar la salida en formato JSON

La opción --json presenta la información en formato JSON, lo cual resulta muy práctico para el procesamiento mediante scripts o al integrar los resultados con otras herramientas.

Ejecuta el siguiente comando:

lsblk --json

La salida se mostrará en formato JSON:

{
  "blockdevices": [
    {
      "name": "loop0",
      "maj:min": "7:0",
      "rm": false,
      "size": "55.5M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/core18/2128"
    },
    {
      "name": "loop1",
      "maj:min": "7:1",
      "rm": false,
      "size": "55.4M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/core18/2284"
    },
    {
      "name": "loop2",
      "maj:min": "7:2",
      "rm": false,
      "size": "43.6M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/snapd/15534"
    },
    {
      "name": "loop3",
      "maj:min": "7:3",
      "rm": false,
      "size": "61.9M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/gtk-common-themes/1535"
    },
    {
      "name": "loop4",
      "maj:min": "7:4",
      "rm": false,
      "size": "31.1M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/snapd/16292"
    },
    {
      "name": "sda",
      "maj:min": "8:0",
      "rm": false,
      "size": "50G",
      "ro": false,
      "type": "disk",
      "children": [
        {
          "name": "sda1",
          "maj:min": "8:1",
          "rm": false,
          "size": "49G",
          "ro": false,
          "type": "part",
          "mountpoint": "/"
        },
        {
          "name": "sda2",
          "maj:min": "8:2",
          "rm": false,
          "size": "976M",
          "ro": false,
          "type": "part",
          "mountpoint": "[SWAP]"
        }
      ]
    }
  ]
}

Combinar opciones para un control preciso

Puedes combinar varias opciones para obtener exactamente la información que requieres. Por ejemplo, para omitir los dispositivos dependientes y los dispositivos loop mientras se muestran las rutas completas en formato JSON:

lsblk --nodeps --exclude 7 --paths --json

El resultado será una representación en JSON de los dispositivos principales restantes junto con sus rutas completas:

{
  "blockdevices": [
    {
      "name": "/dev/vda",
      "maj:min": "253:0",
      "rm": false,
      "size": "40G",
      "ro": false,
      "type": "disk"
    }
  ]
}

Estas opciones de filtrado hacen que el comando lsblk sea sumamente flexible, permitiéndote obtener con precisión milimétrica los datos que necesitas sobre los dispositivos de bloque de tu sistema.

Uso avanzado de lsblk en escenarios prácticos

En este paso, exploraremos escenarios del mundo real donde el comando lsblk demuestra ser una herramienta valiosa para la administración de sistemas y tareas de resolución de problemas.

Comprobar el uso del disco y el espacio disponible

Para verificar el uso del disco y el espacio disponible, puedes combinar lsblk con la opción -b (para mostrar los tamaños en bytes) y seleccionar columnas específicas:

lsblk -b -o NAME,SIZE,FSAVAIL,FSUSE%,MOUNTPOINT

La salida mostrará la información de uso del disco:

NAME     SIZE FSAVAIL FSUSE% MOUNTPOINT
loop0  58195968        0     - /snap/core18/2128
loop1  58130432        0     - /snap/core18/2284
loop2  45719552        0     - /snap/snapd/15534
loop3  64897024        0     - /snap/gtk-common-themes/1535
loop4  32604160        0     - /snap/snapd/16292
sda   53687091200       -     -
├─sda1 52613349376 39128932352  26% /
└─sda2 1023410176        0     - [SWAP]

Las columnas muestran:

  • SIZE: El tamaño total en bytes
  • FSAVAIL: El espacio disponible en el sistema de archivos
  • FSUSE%: El porcentaje de uso del sistema de archivos
  • MOUNTPOINT: Dónde está montado el dispositivo

Identificar unidades USB

Al conectar una unidad USB, puedes usar lsblk para identificarla rápidamente buscando dispositivos extraíbles:

lsblk -o NAME,SIZE,TYPE,RM,MOUNTPOINT

En la salida, busca los dispositivos cuyo valor en la columna RM (extraíble) sea 1:

NAME   SIZE TYPE RM MOUNTPOINT
loop0  55.5M loop  0 /snap/core18/2128
loop1  55.4M loop  0 /snap/core18/2284
loop2  43.6M loop  0 /snap/snapd/15534
loop3  61.9M loop  0 /snap/gtk-common-themes/1535
loop4  31.1M loop  0 /snap/snapd/16292
sda     50G disk  0
├─sda1   49G part  0 /
└─sda2  976M part  0 [SWAP]

Si tuvieras una unidad USB conectada, normalmente aparecería como un disco adicional (como sdb) con un valor de 1 en la columna RM.

Encontrar números de serie de dispositivos

Para el inventario de hardware o la resolución de problemas, es posible que necesites averiguar los números de serie de los dispositivos. El comando lsblk puede mostrar esta información:

lsblk -o NAME,SIZE,TYPE,SERIAL

La salida incluirá los números de serie de aquellos dispositivos que proporcionan esta información:

NAME   SIZE TYPE SERIAL
loop0  55.5M loop
loop1  55.4M loop
loop2  43.6M loop
loop3  61.9M loop
loop4  31.1M loop
sda     50G disk ABCD1234
├─sda1   49G part
└─sda2  976M part

Ten en cuenta que no todos los dispositivos informan su número de serie, y los dispositivos virtuales (como los dispositivos loop) por lo general no disponen de uno.

Analizar los atributos de rendimiento del disco

Para ver los atributos de rendimiento del disco, puedes utilizar la opción --topology o -t:

lsblk --topology

La salida incluye información de topología, como la alineación y el tamaño óptimo de E/S (I/O):

NAME   ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED     RQ-SIZE  RA WSAME
loop0          0    512      0     512     512    1 mq-deadline     256 128    0B
loop1          0    512      0     512     512    1 mq-deadline     256 128    0B
loop2          0    512      0     512     512    1 mq-deadline     256 128    0B
loop3          0    512      0     512     512    1 mq-deadline     256 128    0B
loop4          0    512      0     512     512    1 mq-deadline     256 128    0B
sda            0    512      0     512     512    1 mq-deadline     256 128    0B
├─sda1         0    512      0     512     512    1 mq-deadline     256 128    0B
└─sda2         0    512      0     512     512    1 mq-deadline     256 128    0B

Esta información puede ser muy útil para el ajuste de rendimiento (tuning) y la resolución de problemas relacionados con las operaciones de entrada/salida.

Estos ejemplos prácticos demuestran la gran versatilidad del comando lsblk para las tareas cotidianas de administración de sistemas. Al dominar estas técnicas, podrás recopilar rápidamente información clave sobre los dispositivos de almacenamiento en tu sistema Linux.

Resumen

En este laboratorio, exploramos el comando lsblk de Linux, una potente herramienta para listar y mostrar información sobre los dispositivos de bloque de tu sistema. Cubrimos varios aspectos importantes de este comando:

  • El uso básico de lsblk para mostrar una lista en forma de árbol de todos los dispositivos de bloque
  • Cómo mostrar información adicional, incluyendo los detalles del sistema de archivos, propietario/permisos y la selección de columnas personalizadas
  • Técnicas de filtrado para centrarse en tipos de dispositivos específicos o formatos de salida determinados
  • Escenarios de uso avanzado para tareas de administración de sistemas

El comando lsblk es una utilidad indispensable para los administradores de sistemas Linux y usuarios que necesitan gestionar dispositivos de almacenamiento. Sus flexibles opciones te permiten obtener de manera rápida la información exacta que requieres sobre discos, particiones y otros dispositivos de bloque en tu equipo.

Al dominar el comando lsblk, podrás realizar con mayor eficacia las siguientes tareas:

  • Identificar y gestionar dispositivos de almacenamiento
  • Monitorear el uso del disco y el espacio disponible
  • Solucionar problemas relacionados con el almacenamiento
  • Documentar la configuración de almacenamiento de tu sistema

Estas habilidades forman una base sólida para tareas más avanzadas de administración de sistemas Linux relacionadas con la gestión del almacenamiento.

Hoja de referencia de comandos de Linux