lsblk e blkid: Inspecionando Dispositivos de Bloco e UUIDs

lsblk e blkid: Inspecionando Dispositivos de Bloco e UUIDs

Qual a diferença entre lsblk e blkid?

Conclusão: lsblk mostra topologia e tamanhos dos dispositivos; blkid lê UUID, LABEL e tipo de filesystem. Servem para trabalhos diferentes, então você usa ambos.

O primeiro passo em qualquer tarefa de armazenamento é saber exatamente qual dispositivo conecta onde e qual é 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 --> partição --> LVM/crypt, além de tamanho e pontos de montagem
  • blkid: lê o UUID / LABEL / TYPE (filesystem) / PARTUUID de cada dispositivo

Qual usar

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

Premissas (ambiente alvo)

  • Distro: famílias Ubuntu e RHEL (comandos vêm com util-linux)
  • Uma varredura completa pode requerer root (sudo)

Como listo dispositivos de bloco com lsblk?

Conclusão: Execute lsblk sem argumentos para obter uma árvore 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 (indentação em árvore mostra pai/filho)
  • RM: 1 se removível (pen drives, etc.)
  • SIZE: capacidade
  • RO: 1 se somente leitura
  • TYPE: disk / part / lvm / crypt / rom / loop
  • MOUNTPOINTS: alvo de montagem (vazio se não montado)

lsblk só lê sysfs / udev, então um usuário normal pode executá-lo (não precisa de root).

Opções úteis

$ 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?

Conclusão: lsblk -f mostra tipo de filesystem, LABEL, UUID e uso em uma única árvore. Para verificações do dia a dia, isso geralmente é 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 árvore. Ver tipo de FS, UUID e espaço livre de relance faz desta sua opção padrão de uso.

Para imprimir somente as colunas desejadas, use -o:

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

Liste os nomes de colunas disponíveis na seção COLUMNS de lsblk --help, ou use lsblk -O (todas as colunas).

Como verifico UUID, LABEL e tipo com blkid?

Conclusão: blkid é 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, você 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, então uma varredura completa precisa de root. Como usuário normal, retorna somente o que está em cache em /run/blkid/blkid.tab, que pode vir vazio.

Qual a diferença entre UUID e PARTUUID?

Conclusão: UUID pertence ao filesystem; PARTUUID pertence à tabela de partições (principalmente GPT). Reformatar muda o UUID mas mantém o PARTUUID.

Identificador Origem Muda ao reformatar Uso típico
UUID superbloco do filesystem sim Entradas de montagem no fstab (mais comum)
LABEL string de label do filesystem editável livremente Identificação legível por humanos
PARTUUID tabela de partições GPT sobrevive a reformatação Bootloaders / áreas sem FS
PARTLABEL label de partição GPT editável livremente Identificação por partição

Swap e áreas não formatadas podem não ter UUID de filesystem. Aponte para elas com PARTUUID para estabilidade.

Como uso UUID no fstab?

Conclusão: Nomes como /dev/sda2 podem mudar na inicialização, então UUID= é a escolha segura no fstab. Cole o valor obtido do blkid.

O número em /dev/sdX pode trocar quando você adiciona um disco ou a ordem de inicialização 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 Básico de Mount e fstab para o passo a passo completo.

Armadilhas comuns e correções

Conclusão: A maioria dos problemas "sem UUID" ou "dispositivo ausente" se resume a privilégios faltando, área não formatada ou cache desatualizado.

  • blkid está vazio / parcial --> adicione sudo. A sondagem precisa de root
  • Um USB recem-conectado não aparece no lsblk --> re-execute lsblk; se ainda ausente, verifique dmesg | tail para logs de detecção
  • Alguma área não mostra UUID --> está não formatada ou é swap. Aponte para ela com PARTUUID
  • Sistema não inicia após editar fstab --> crie o hábito 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 / Próximas Leituras