lsblk e blkid: Inspecionando Dispositivos de Bloco e UUIDs

lsblk e blkid: Inspecionando Dispositivos de Bloco e UUIDs

Qual a diferenca entre lsblk e blkid?

Conclusao: lsblk mostra topologia e tamanhos dos dispositivos; blkid le UUID, LABEL e tipo de filesystem. Servem para trabalhos diferentes, entao voce usa ambos.

O primeiro passo em qualquer tarefa de armazenamento e saber exatamente qual dispositivo conecta onde e qual e seu UUID. Errar nisso pode resultar em uma linha ruim no /etc/fstab que deixa o sistema sem inicializar.

  • lsblk: lista a hierarquia de disco --> particao --> LVM/crypt, alem de tamanho e pontos de montagem
  • blkid: le o UUID / LABEL / TYPE (filesystem) / PARTUUID de cada dispositivo

Qual usar

  • Ver a visao geral, capacidade, estado de montagem --> lsblk / lsblk -f
  • Obter um unico UUID para o fstab --> blkid -s UUID -o value <dev>

Premissas (ambiente alvo)

  • Distro: familias Ubuntu e RHEL (comandos vem com util-linux)
  • Uma varredura completa pode requerer root (sudo)

Como listo dispositivos de bloco com lsblk?

Conclusao: Execute lsblk sem argumentos para obter uma arvore de todos os dispositivos de bloco. A coluna TYPE distingue disk / part / lvm / crypt.

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   100G  0 disk
├─sda1        8:1    0     1G  0 part /boot
└─sda2        8:2    0    99G  0 part /
sdb           8:16   1  14.5G  0 disk
└─sdb1        8:17   1  14.5G  0 part /media/usb
nvme0n1     259:0    0 476.9G  0 disk
└─nvme0n1p1 259:1    0 476.9G  0 part /data

O que as colunas principais significam:

  • NAME: nome do dispositivo (indentacao em arvore mostra pai/filho)
  • RM: 1 se removivel (pen drives, etc.)
  • SIZE: capacidade
  • RO: 1 se somente leitura
  • TYPE: disk / part / lvm / crypt / rom / loop
  • MOUNTPOINTS: alvo de montagem (vazio se nao montado)

lsblk so le sysfs / udev, entao um usuario normal pode executa-lo (nao precisa de root).

Opcoes uteis

$ lsblk -p          # caminhos completos (ex: /dev/sda1)
$ lsblk -d          # somente discos, colapsar particoes
$ lsblk -b          # tamanhos em bytes (para scripts)
$ lsblk -J          # saida JSON (facil de encadear com jq)

Como vejo UUIDs e filesystems com lsblk -f?

Conclusao: lsblk -f mostra tipo de filesystem, LABEL, UUID e uso em uma unica arvore. Para verificacoes do dia a dia, isso geralmente e suficiente.

$ lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1      ext4   1.0   boot  6e1f...-a2c1                           812M    12%  /boot
└─sda2      ext4   1.0         9b3d...-77e0                          61.2G    35%  /
nvme0n1
└─nvme0n1p1 xfs          data  c4a8...-1f93                          410G     8%   /data

-f (--fs) usa libblkid internamente e incorpora os mesmos dados que blkid reporta na arvore. Ver tipo de FS, UUID e espaco livre de relance faz desta sua opcao padrao de uso.

Para imprimir somente as colunas desejadas, use -o:

$ lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINT

Liste os nomes de colunas disponiveis na secao COLUMNS de lsblk --help, ou use lsblk -O (todas as colunas).

Como verifico UUID, LABEL e tipo com blkid?

Conclusao: blkid e a ferramenta dedicada para atributos de filesystem. Combine -s e -o value para extrair apenas o UUID.

Execute sem argumentos para enumerar atributos dos dispositivos conhecidos.

$ sudo blkid
/dev/sda1: LABEL="boot" UUID="6e1f...-a2c1" TYPE="ext4" PARTUUID="2b1c...-01"
/dev/sda2: UUID="9b3d...-77e0" TYPE="ext4" PARTUUID="2b1c...-02"
/dev/nvme0n1p1: LABEL="data" UUID="c4a8...-1f93" TYPE="xfs" PARTUUID="8f0a...-01"

Passe um dispositivo para inspecionar somente ele:

$ sudo blkid /dev/sda2

Extrair somente o UUID (para scripts)

Para copiar no fstab ou para scripts, voce quer somente o valor. Use -s (nome do atributo) e -o value (somente valor).

$ sudo blkid -s UUID -o value /dev/sda2
9b3d...-77e0

blkid sonda o superbloco do dispositivo, entao uma varredura completa precisa de root. Como usuario normal, retorna somente o que esta em cache em /run/blkid/blkid.tab, que pode vir vazio.

Qual a diferenca entre UUID e PARTUUID?

Conclusao: UUID pertence ao filesystem; PARTUUID pertence a tabela de particoes (principalmente GPT). Reformatar muda o UUID mas mantem o PARTUUID.

Identificador Origem Muda ao reformatar Uso tipico
UUID superbloco do filesystem sim Entradas de montagem no fstab (mais comum)
LABEL string de label do filesystem editavel livremente Identificacao legivel por humanos
PARTUUID tabela de particoes GPT sobrevive a reformatacao Bootloaders / areas sem FS
PARTLABEL label de particao GPT editavel livremente Identificacao por particao

Swap e areas nao formatadas podem nao ter UUID de filesystem. Aponte para elas com PARTUUID para estabilidade.

Como uso UUID no fstab?

Conclusao: Nomes como /dev/sda2 podem mudar na inicializacao, entao UUID= e a escolha segura no fstab. Cole o valor obtido do blkid.

O numero em /dev/sdX pode trocar quando voce adiciona um disco ou a ordem de inicializacao muda. Um UUID fixo elimina esse risco.

# 1. Obter o UUID
$ sudo blkid -s UUID -o value /dev/sda2
9b3d...-77e0

# 2. Escrever no /etc/fstab (separado por tab/espaco)
# <dispositivo>      <montagem> <tipo> <opcoes>       <dump> <pass>
UUID=9b3d...-77e0   /data       xfs    defaults       0      2

Veja Basico de Mount e fstab para o passo a passo completo.

Armadilhas comuns e correcoes

Conclusao: A maioria dos problemas "sem UUID" ou "dispositivo ausente" se resume a privilegios faltando, area nao formatada ou cache desatualizado.

  • blkid esta vazio / parcial --> adicione sudo. A sondagem precisa de root
  • Um USB recem-conectado nao aparece no lsblk --> re-execute lsblk; se ainda ausente, verifique dmesg | tail para logs de deteccao
  • Alguma area nao mostra UUID --> esta nao formatada ou e swap. Aponte para ela com PARTUUID
  • Sistema nao inicia apos editar fstab --> crie o habito de validar com mount -a antes de reiniciar

Copiar e colar: construa uma linha fstab em um comando

DEV=/dev/sda2
echo "UUID=$(sudo blkid -s UUID -o value "$DEV")  /data  $(sudo blkid -s TYPE -o value "$DEV")  defaults  0  2"

Resumo / Proximas Leituras