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.
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/NOMEno 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.RMeRO— 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,loopourom.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) ecrypto_LUKS(partição cifrada).LABEL— a etiqueta que lhe demos, comoraizoudados.UUID— o identificador único e estável que se usa no/etc/fstab, precisamente porque não muda se o disco passar desdaasdb.FSAVAILeFSUSE%— 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/sda1ou/dev/mapper/vg0-root, pronto a copiar para omountou para um script.-e LISTA(exclude) — exclui pelo número major:-e 7,11esconde 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: osdbde hoje pode ser osdcde amanhã. Nofstabuse 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
ROTAcomo verdade absoluta: pens e alguns controladores declaram-se rotativos sem o serem. Cruze comTRANeMODEL. - Montar uma pen desconhecida para «ver o que tem»: identifique-a com
lsblk -fe-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.
