Comando lsblk: listar discos e partições no Linux

Terminal com o comando lsblk -f em destaque, a listar discos, partições e UUID, sobre fundo azul HJFR

Ligou um disco novo ao servidor, ou entregaram-lhe uma pen para analisar, e a primeira pergunta é sempre a mesma: o que é que esta máquina vê? Que discos existem, como estão divididos, que tamanho têm e onde está montado cada pedaço. Antes de formatar, montar ou copiar, é preciso este mapa — e errar um único nome de dispositivo pode significar apagar o disco errado.

O lsblk desenha esse mapa numa árvore clara. Neste artigo vemos a vista por omissão, os sistemas de ficheiros e os UUID com -f, as colunas à medida com -o, os filtros -d, -p, -e e -a, as permissões com -m e a saída para scripts com -J e -b. No fim, o ângulo de quem defende sistemas: detetar um dispositivo USB inesperado e confirmar o disco certo antes de um dd.

Veja o guia em vídeo

Prefere ver antes de experimentar? No canal HJFR-IT no YouTube mostramos o lsblk opção a opção, com o resultado de cada comando no ecrã — narrado em português e com legendas.

lsblk — Guia Completo: listar dispositivos de bloco no Linux — canal HJFR-IT no YouTube. Se o áudio não arrancar em português, abra as definições do vídeo (ícone da roda dentada) → Faixa de áudio → Português.

O que faz o lsblk

O lsblk lista os dispositivos de bloco: discos, partições, volumes LVM, volumes cifrados, leitores óticos e dispositivos loop. O mount liga um sistema de ficheiros à árvore de diretórios; o lsblk mostra o que existe para montar. Lê a informação do núcleo e do udev, por isso quase todas as colunas funcionam sem privilégios de root.

lsblk [opções] [dispositivo...]
lsblk                  # árvore de todos os dispositivos
lsblk /dev/sdb         # só o sdb e o que está dentro dele

A árvore: discos, partições e pontos de montagem

Sem argumentos, o lsblk desenha a árvore: no topo os dispositivos inteiros; por baixo, indentado, o que vive dentro deles. No servidor de exemplo há um SSD de 238.5G com LVM, um disco de 1.8T com uma partição cifrada, um leitor ótico e três snaps em loop:

NAME         MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0          7:0    0     4K  1 loop  /snap/bare/5
loop1          7:1    0  74.3M  1 loop  /snap/core22/1663
loop2          7:2    0  38.8M  1 loop  /snap/snapd/21759
sda            8:0    0 238.5G  0 disk
├─sda1         8:1    0   512M  0 part  /boot/efi
├─sda2         8:2    0     1G  0 part  /boot
└─sda3         8:3    0   237G  0 part
  ├─vg0-root 252:0    0   221G  0 lvm   /
  └─vg0-swap 252:1    0    16G  0 lvm   [SWAP]
sdb            8:16   0   1.8T  0 disk
├─sdb1         8:17   0   1.5T  0 part
│ └─dados    252:2    0   1.5T  0 crypt /srv/dados
└─sdb2         8:18   0   327G  0 part
sr0           11:0    1  1024M  0 rom
  • NAME — o nome: /dev/NOME (ou /dev/mapper/NOME no LVM e nos volumes cifrados).
  • MAJ:MIN — os números major e minor; o major indica o tipo: 8 discos SCSI/SATA/USB, 7 loop, 11 leitores óticos.
  • RM e RO — amovível (1 numa pen) e só de leitura (1 nos snaps).
  • SIZE — o tamanho, em potências de 1024 (238.5G são 238.5 GiB).
  • TYPE — disk, part, lvm, crypt, loop ou rom.
  • MOUNTPOINTS — a coluna mais útil: onde cada um está montado; [SWAP] indica swap ativa.

Ver também os dispositivos vazios: -a

Por omissão, o lsblk esconde os dispositivos vazios (0B) e os discos RAM. O -a desliga esses filtros: aparecem, por exemplo, loop3 a loop7 com 0B.

Sistemas de ficheiros e UUID (-f)

O -f, de filesystem, muda o foco para os sistemas de ficheiros e equivale a -o NAME,FSTYPE,FSVER,LABEL,UUID,FSAVAIL,FSUSE%,MOUNTPOINTS. Aqui limitado ao segundo disco:

lsblk -f /dev/sdb
NAME      FSTYPE      FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdb
├─sdb1    crypto_LUKS 2           e41c7a90-3b2d-4f6e-a8c5-17d9b0e2f3a6
│ └─dados ext4        1.0   dados 5a9e1c3f-7b2d-4e8a-9c6f-0d4b2a8e1f73  983.1G    31% /srv/dados
└─sdb2
  • FSTYPE — ext4, vfat, swap, mas também contentores: LVM2_member (volume físico LVM) e crypto_LUKS (partição cifrada).
  • LABEL — a etiqueta que lhe demos, como raiz ou dados.
  • UUID — o identificador único e estável que se usa no /etc/fstab, precisamente porque não muda se o disco passar de sda a sdb.
  • FSAVAIL e FSUSE% — espaço livre e ocupação dos sistemas montados.

Repare em sdb2: sem FSTYPE, ainda não foi formatada. Para acrescentar uma linha ao fstab, peça só o UUID, sem cabeçalho (-n):

lsblk -no UUID /dev/mapper/dados
5a9e1c3f-7b2d-4e8a-9c6f-0d4b2a8e1f73

# no /etc/fstab
UUID=5a9e1c3f-7b2d-4e8a-9c6f-0d4b2a8e1f73  /srv/dados  ext4  defaults  0 2

Colunas à medida (-o)

Com -o escolhe exatamente as colunas que quer, pela ordem que quiser. Juntar MODEL revela, sem abrir a máquina, o modelo de cada disco — o SSD de 238,5 G e o disco de 1,8 T:

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL
lsblk -o NAME,SIZE,ROTA,TRAN,SERIAL
lsblk -o +MODEL          # acrescenta MODEL às colunas por omissão
  • ROTA — 1 se o dispositivo é rotativo (disco mecânico), 0 se não é (SSD). Muitas pens USB declaram-se rotativas: é um indício, não uma prova.
  • TRAN — o tipo de ligação: sata, usb, nvme.
  • SERIAL — o número de série, que identifica o disco físico aconteça o que acontecer aos nomes.

Há dezenas de colunas: lsblk -H lista-as (nas versões antigas, lsblk --help).

Permissões dos nós: -m

O -m equivale a -o NAME,SIZE,OWNER,GROUP,MODE. O habitual é root disk brw-rw----: quem pertence ao grupo disk lê e escreve o disco em bruto, contornando as permissões de todos os ficheiros.

Só discos, caminhos completos e exclusões (-d, -p, -e)

  • -d (nodeps) — esconde partições, LVM e volumes cifrados e mostra só os dispositivos inteiros: a resposta a «quantos discos tenho, e de que capacidade?».
  • -p (paths) — escreve o caminho completo, /dev/sda1 ou /dev/mapper/vg0-root, pronto a copiar para o mount ou para um script.
  • -e LISTA (exclude) — exclui pelo número major: -e 7,11 esconde os loop e o leitor ótico, que enchem a lista.
lsblk -d
lsblk -p
lsblk -e 7,11
lsblk -d -e 7,11 -o NAME,SIZE,MODEL    # inventário limpo dos discos

Inventário de hardware: -S

O -S lista só os dispositivos SCSI — o que inclui SATA e USB — com HCTL, fabricante, modelo, revisão, número de série e ligação. Num relance vê o que está ligado à máquina e por onde.

Saída para scripts (-J, -b)

O -J devolve a mesma árvore em JSON, com os discos em blockdevices e as partições em children; o que está vazio vem como null. Ligado ao jq, responde a perguntas — por exemplo, que partições não têm ponto de montagem:

lsblk -J -o NAME,TYPE,MOUNTPOINT | jq -r '.. | objects | select(.type=="part" and .mountpoint==null) | .name'
sda3
sdb1
sdb2

O resultado pede interpretação: sda3 e sdb1 são contentores (LVM e LUKS) cujo conteúdo está montado; só sdb2 está realmente por usar. Já o -b mostra os tamanhos em bytes exatos — essencial quando um script precisa de comparar ou somar capacidades, porque «238.5G» e «1.8T» são texto, não números:

lsblk -bd -e 7,11 -o NAME,SIZE
NAME          SIZE
sda   256060514304
sdb  2000398934016

lsblk em cibersegurança

Detetar o dispositivo que ninguém pediu. Num servidor, um disco novo com RM a 1 e TRAN usb é um alerta, não uma curiosidade: pode ser uma pen deixada de propósito com uma etiqueta apelativa («SALARIOS», «CONFIDENCIAL») ou um meio para levar dados para fora. O lsblk mostra-a sem a montar — lsblk -f /dev/sdc revela o sistema de ficheiros e a etiqueta, lsblk -S o fabricante e o número de série. Documente-os e não abra o conteúdo numa máquina de produção.

Confirmar o disco certo antes de um dd ou de uma aquisição forense. Os nomes sdX seguem a ordem de deteção e podem mudar entre arranques. Trocar if= por of=, ou apontar para o disco errado, destrói dados ou evidência sem volta atrás. Antes de copiar, corra lsblk -dpo NAME,SIZE,TRAN,MODEL,SERIAL /dev/sdc e compare tamanho, ligação, modelo e série com o que tem à frente; numa aquisição, registe-os, use um bloqueador de escrita e calcule o hash da origem e da cópia.

Ver a cifra e os acessos de relance. Um crypto_LUKS no lsblk -f confirma que uma partição está cifrada; se o volume aberto (crypt) está montado, os dados estão acessíveis em claro enquanto a máquina estiver ligada — algo a pesar antes de a desligar. E o lsblk -m lembra que o grupo disk equivale, na prática, a acesso de root aos dados.

Experimente no simulador interativo

O simulador recria este servidor. À esquerda vê a árvore real da máquina — o que cada opção mostra fica realçado, o que esconde fica esbatido; à direita, a saída exata no terminal (deslize na horizontal nas saídas largas). Clique nas opções ou em Demonstrar tudo — a meio, alguém liga uma pen USB. Anterior e Seguinte avançam ao seu ritmo; Repor estado recomeça.

Erros comuns e boas práticas

  • Confiar no nome sdX: o sdb de hoje pode ser o sdc de amanhã. No fstab use o UUID; antes de escrever num disco, confirme modelo e série.
  • Formatar uma partição «vazia» sem verificar: sem ponto de montagem pode estar um volume LVM ou uma partição LUKS cheia de dados. Veja sempre o FSTYPE.
  • Fazer contas com tamanhos legíveis: «1.8T» é texto arredondado. Em scripts use -b, de preferência com -J.
  • Deixar os loop e o leitor ótico encher a lista: -e 7,11 (ou -d) dá uma vista limpa.
  • Tomar o ROTA como verdade absoluta: pens e alguns controladores declaram-se rotativos sem o serem. Cruze com TRAN e MODEL.
  • Montar uma pen desconhecida para «ver o que tem»: identifique-a com lsblk -f e -S, documente e analise-a num ambiente isolado.

Conclusão

O lsblk é o primeiro comando a correr quando se liga um disco ou uma pen: sem argumentos dá a árvore, -f os sistemas de ficheiros e os UUID, -o colunas como o modelo e a série, -d, -p e -e afinam a vista, e -J com -b alimenta scripts. Com o mount, forma a dupla do armazenamento: um mostra o que existe, o outro liga-o à árvore. Para ver quanto espaço resta em cada sistema montado, continue com o artigo sobre o df e o du; para procurar ficheiros dentro deles, veja o do find.

Workshop — Linha de Comandos Linux

Quer passar da leitura à prática, com exercícios reais e acompanhamento? No workshop Linha de Comandos Linux da HJFR trabalha estes e outros comandos da série — da administração do dia a dia à resposta a incidentes.

Este artigo faz parte da série «Comandos Linux, um a um» do blog HJFR — fique atento aos próximos comandos.