Comando lsblk: estructura de discos y particiones y consulta del UUID

Entorno de pruebaFamilia RHELAlmaLinux 9.8Cuenta root
Comandos de disco y montajelsblkUbicación/usr/bin/lsblk

El comando lsblk muestra en forma de árbol los discos y particiones conectados a un servidor y sus puntos de montaje, y permite ver de una vez el tamaño de los discos, el tipo de sistema de archivos e incluso el UUID. Al ejecutar lsblk en un servidor AlmaLinux 9, los dispositivos loop creados por los paquetes snap aparecieron antes que el disco, así que los filtramos con -e 7. Después comprobamos con -f el sistema de archivos xfs y el UUID de la partición raíz.

Los tamaños de disco y los UUID de la salida de abajo son valores de ejemplo.

1️⃣ Cómo leer la salida básica del comando lsblk

En un servidor con programas instalados mediante snap, al ejecutar lsblk sin opciones aparece antes que el disco una fila de dispositivos loop montados, uno por cada versión de paquete; por eso se indica con -e el número de dispositivo de los loop, 7, para excluirlos.

lsblk -e 7
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0   80G  0 disk 
├─nvme0n1p1 259:1    0    1M  0 part 
├─nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─nvme0n1p3 259:3    0    1G  0 part /boot
└─nvme0n1p4 259:4    0 78.8G  0 part /

nvme0n1 en la columna NAME es el disco. Las que cuelgan debajo con [├─] y [└─], de nvme0n1p1 a nvme0n1p4, son las particiones en las que se divide este disco. Es como el directorio de la entrada de un edificio, que muestra bajo el nombre del edificio lo que hay en cada planta.

En la columna TYPE, los discos aparecen como [disk] y las particiones como [part], y la columna MOUNTPOINTS indica la carpeta en la que está montada cada partición. En el servidor que revisamos, la partición raíz nvme0n1p4 estaba montada en / y nvme0n1p3 en /boot. nvme0n1p1, de 1M, es una partición de arranque BIOS que se usa para arrancar desde un disco GPT, por lo que no tiene punto de montaje.

MAJ:MIN son los números mayor y menor que el kernel asigna a un dispositivo; los dispositivos loop tienen 7 y el disco NVMe que revisamos tenía 259. RM indica con 1 o 0 si el dispositivo es extraíble, y RO si es de solo lectura.

Es fácil leer SIZE como el espacio libre, pero SIZE es el tamaño total del disco o de la partición. El espacio libre del sistema de archivos se consulta en la columna FSAVAIL, que aparece al añadir -f.

En el diagrama de abajo puedes comparar paso a paso cómo cambian las filas y columnas de la salida según la opción.

🧭 Salida de lsblk por opción: discos y particiones
Diagrama explicativo
⚙️ Opción
$ lsblk -f -d -p -e 7
Nombre del dispositivo
Tamaño
Sistema de archivos
Punto de montaje
/dev/nvme0n1
80G
├─/dev/nvme0n1p1
1M
├─/dev/nvme0n1p2
200M
vfat, 5A1E-…
/boot/efi
├─/dev/nvme0n1p3
1G
xfs, 6d2f…
/boot
└─/dev/nvme0n1p4
78.8G
xfs, 2b9e…
/
🖥️ Lo que se muestra en pantalla
1 fila de disco y 4 de partición, 7 columnas básicas (de NAME a MOUNTPOINTS)
1 fila de disco y 4 de partición, 8 columnas de sistema de archivos (FSTYPE, UUID, FSAVAIL, etc.)
Solo 1 fila de disco, 7 columnas básicas
1 fila de disco y 4 de partición, nombres que empiezan por /dev/
Sin opciones, las particiones cuelgan como ramas debajo del disco. También se muestran el tamaño y el punto de montaje.
-f muestra, en lugar del tamaño, el tipo de sistema de archivos, el UUID y el espacio libre. El disco nvme0n1 y nvme0n1p1, que no tiene sistema de archivos, quedan en blanco.
-d quita las filas de partición y muestra solo la fila del disco.
Con -p se añade /dev/ delante de los nombres de dispositivo, así que puedes pasar las rutas mostradas directamente a otros comandos.

2️⃣ lsblk -f: consultar sistemas de archivos y UUID

La salida básica no muestra el tipo de sistema de archivos, así que el formato con el que se formateó una partición se comprueba con -f. -f muestra ocho columnas: NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE% y MOUNTPOINTS.

lsblk -f -e 7
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                                            
├─nvme0n1p1                                                                        
├─nvme0n1p2 vfat   FAT16       5A1E-3B7C                             192.1M     4% /boot/efi
├─nvme0n1p3 xfs                6d2f0c4e-8b1a-4f3d-a7e2-9c5b1d0e4f28  691.4M    28% /boot
└─nvme0n1p4 xfs                2b9e7f41-c3d6-4a85-b0f1-7e4a2c9d6b13   68.5G    13% /

Al ejecutarlo, las particiones raíz y /boot eran xfs, y /boot/efi era vfat en la versión FAT16. El disco nvme0n1 y nvme0n1p1 no tienen sistema de archivos, así que quedaron en blanco. El UUID es un número único asignado a cada sistema de archivos y se usa en /etc/fstab para indicar la partición que se montará por UUID en lugar de por nombre de dispositivo.

Para consultar la información del sistema de archivos con la mayor precisión, se usa el comando blkid.

FSAVAIL y FSUSE% son el espacio libre y el porcentaje de uso de un sistema de archivos montado. Las particiones que no están montadas no muestran valores. El comando df solo muestra el tamaño y el uso de los sistemas de archivos montados. lsblk muestra también la estructura de discos y particiones, estén montados o no.

3️⃣ lsblk -o para elegir columnas y -b para bytes

Si escribes nombres de columna separados por comas después de -o, solo aparecen esas columnas en ese orden. Los nombres de columna disponibles están en la lista al final de [lsblk --help].

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e 7
NAME         SIZE FSTYPE MOUNTPOINT
nvme0n1       80G        
├─nvme0n1p1    1M        
├─nvme0n1p2  200M vfat   /boot/efi
├─nvme0n1p3    1G xfs    /boot
└─nvme0n1p4 78.8G xfs    /

MOUNTPOINT muestra un solo punto de montaje, mientras que MOUNTPOINTS los muestra todos cuando el mismo sistema de archivos está montado en varios lugares. Para añadir solo una columna detrás de las básicas, pon + delante del nombre de la columna, como en [-o +UUID].

-b muestra los tamaños como números enteros en bytes. Para comparar a simple vista se leen mejor las unidades básicas, así que -b es adecuado para scripts que calculan o comparan tamaños.

lsblk -b -o NAME,SIZE -e 7
NAME               SIZE
nvme0n1     85899345920
├─nvme0n1p1     1048576
├─nvme0n1p2   209715200
├─nvme0n1p3  1073741824
└─nvme0n1p4 84613774848

La G y la M de la salida básica son unidades de 1024, así que el disco de 80G aparece como 85.899.345.920 bytes.

4️⃣ lsblk -d para la lista de discos y -p para rutas completas

En un servidor con varios discos, las filas de partición se mezclan y cuesta revisar la lista de discos, así que se usa -d para quitar las particiones y mostrar solo las filas de disco.

lsblk -d -e 7
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0    0  80G  0 disk 

En la salida solo quedó la fila del disco nvme0n1, y las cuatro filas de partición de debajo no aparecieron.

Con -p se añade /dev/ delante de los nombres de dispositivo y aparecen como rutas completas. Estas rutas se pueden pasar tal cual a otros comandos, como mount.

lsblk -p -e 7
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1     259:0    0   80G  0 disk 
├─/dev/nvme0n1p1 259:1    0    1M  0 part 
├─/dev/nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─/dev/nvme0n1p3 259:3    0    1G  0 part /boot
└─/dev/nvme0n1p4 259:4    0 78.8G  0 part /

Solo la columna NAME cambia a rutas completas, de /dev/nvme0n1 a /dev/nvme0n1p4, y el resto de columnas es igual que en la salida básica.

Si pasas como argumento la ruta de un dispositivo, se muestran solo ese dispositivo y sus particiones; si pasas la ruta de una partición, aparece solo la fila de esa partición.

lsblk /dev/nvme0n1p4
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1p4 259:4    0 78.8G  0 part /

En la salida aparece solo la fila de nvme0n1p4, sin la fila del disco ni las marcas de rama. Al pasar la ruta de un dispositivo que no existe, apareció el error [not a block device] y el código de salida fue 32.

5️⃣ Salida y opciones del comando lsblk para scripts

Es tentador recortar la salida básica en los scripts, pero la composición de columnas de la salida básica y de -f puede cambiar en el futuro, así que en los scripts se indican las columnas directamente con -o.

-n quita la fila de cabecera y muestra solo los valores, así que es adecuado cuando solo necesitas un valor, como el tipo de sistema de archivos de una partición.

lsblk -no FSTYPE /dev/nvme0n1p4
xfs

Sin fila de cabecera aparece solo una palabra, xfs, el tipo de sistema de archivos de la partición raíz, así que puedes guardarla directamente en una variable de shell.

-P muestra cada columna en una línea con la forma [nombre=”valor”]. En util-linux 2.37 de AlmaLinux 9, basta con añadir -P para que los nombres cambien y se lean fácilmente como variables de shell: MAJ:MIN pasa a MAJ_MIN y FSUSE% a FSUSE_PCT.

lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4
NAME="nvme0n1p4" FSTYPE="xfs" MOUNTPOINT="/"

Las tres columnas indicadas aparecen en una línea en el orden NAME, FSTYPE, MOUNTPOINT. Todos los valores van entre comillas dobles.

-J muestra la salida en JSON. Sin -d, las particiones entran en el array children debajo del disco. Si se usa junto con -b, solo size pasa a ser un número, y las demás columnas de tamaño, como FSAVAIL, siguen siendo cadenas.

lsblk -J -d -o NAME,SIZE,TYPE -e 7
{
   "blockdevices": [
      {
         "name": "nvme0n1",
         "size": "80G",
         "type": "disk"
      }
   ]
}

Con -d, el array blockdevices contiene solo el disco y el array children no aparece.

🔲 Opciones del comando lsblk

OpciónCopiarDescripción
-e, --excludeExcluye los dispositivos con el número mayor indicado. Si indicas 7, se excluyen los dispositivos loop.
-f, --fsMuestra el tipo de sistema de archivos, el UUID, el espacio libre y el porcentaje de uso.
-o, --outputMuestra en orden solo las columnas indicadas separadas por comas.
-b, --bytesMuestra la columna SIZE como números enteros en bytes.
-d, --nodepsQuita las filas de partición y muestra solo las filas de disco.
-p, --pathsMuestra los nombres de dispositivo como rutas completas que empiezan por /dev/.
-n, --noheadingsQuita la fila de cabecera y muestra solo los valores.
-P, --pairsMuestra los nombres de columna y sus valores por parejas en una sola línea.
-J, --jsonMuestra la salida en formato JSON.
-a, --allMuestra también los dispositivos vacíos de tamaño 0.
OpciónCopiarDescripción
-I, --includeMuestra solo los dispositivos con el número mayor indicado.
-l, --listMuestra la salida en formato de lista en lugar de árbol.
-r, --rawMuestra la salida en formato raw, sin alinear las columnas.
-i, --asciiMuestra las líneas del árbol con caracteres ASCII.
-s, --inverseInvierte las dependencias y muestra los discos debajo de las particiones.
-S, --scsiMuestra solo la información de dispositivos SCSI.
-t, --topologyMuestra información de topología, como el tamaño de sector y el planificador de E/S.
-m, --permsMuestra el propietario, el grupo y los permisos de los dispositivos.
-x, --sortOrdena según la columna indicada y muestra la salida en formato de lista.
-O, --output-allMuestra todas las columnas disponibles.

🔲 Simulador del comando lsblk

En el simulador de abajo puedes escribir tú mismo los comandos vistos hasta ahora y comprobar cómo cambia la salida con cada opción.

Simulador del comando lsblkutil-linux 2.37.4
[root@server work]#
Con las teclas ↑↓ recuperas los comandos que escribiste antes.

🔢 FAQ & contenido recomendado

Al ejecutar -f con una cuenta normal, UUID y FSAVAIL se mostraron igual que con la cuenta root. lsblk lee la información de sysfs y udev. Cuando la información de udev no está disponible, tiene que leer el dispositivo directamente, y para eso necesita permisos de root.

Justo después de añadir o cambiar un dispositivo, puede que udev aún no haya reunido toda la información, así que ejecuta udevadm settle y vuelve a ejecutar lsblk.

-a muestra también los dispositivos vacíos de tamaño 0, así que se usa para comprobar si falta algún dispositivo en la salida básica. En el mismo servidor, al añadir -a apareció una fila más: un dispositivo loop de 0B sin nada conectado.

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

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

Demuestra que eres humano: 2   +   4   =