Ubuntu lsblk, df e du
Três comandos respondem às perguntas mais comuns sobre armazenamento. lsblk diz quais discos existem, df diz quanto espaço livre sobrou e du diz quem está ocupando o espaço. Nenhum deles altera nada, então você pode usá-los à vontade.
- Como o Linux dá nome aos discos e às partições (
nvme0n1p2,sda1…). - A ler cada coluna do
lsblk, dodfe dodu. - Três formas de descobrir o que está enchendo o disco.
- O que fazer quando aparece "No space left on device".
Antes dos comandos: disco, partição e sistema de arquivos
Pense num armário. O disco é o armário inteiro (SSD, HD ou pendrive). As partições são as prateleiras: o disco é dividido em pedaços independentes. O sistema de arquivos é a forma como cada prateleira é organizada por dentro (ext4, FAT32, NTFS…).
No Linux, cada disco aparece como um arquivo especial dentro de /dev (de devices, "dispositivos"):
| Nome | O que é |
|---|---|
/dev/nvme0n1 | O primeiro SSD NVMe (o tipo mais comum em notebooks novos). |
/dev/nvme0n1p1 | A partição 1 desse SSD (p de partition). |
/dev/sda | O primeiro disco SATA ou USB (HD, SSD SATA, pendrive). O segundo é sdb, depois sdc… |
/dev/sda1 | A partição 1 do disco sda. |
/dev/loop0… | "Discos virtuais" usados pelos pacotes Snap. Não são discos de verdade. |
Para usar uma partição, o Linux a monta numa pasta, chamada ponto de montagem. A partição principal fica montada em /, e um pendrive costuma aparecer em /media/ana/NOME. Você vai aprender a montar em mount e fstab.
lsblk: quais discos existem
lsblk vem de list block devices, "listar dispositivos de bloco". Dispositivo de bloco é qualquer coisa que guarda dados em blocos: discos, partições, pendrives.
- lsblk
- O programa. Sem opções, mostra todos os discos e partições em forma de árvore.
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 4K 1 loop /snap/bare/5 « discos virtuais do Snap loop1 7:1 0 73,9M 1 loop /snap/core22/2045 sda 8:0 1 29,3G 0 disk « o pendrive (RM = 1: removível) └─sda1 8:1 1 29,3G 0 part /media/ana/PENDRIVE nvme0n1 259:0 0 476,9G 0 disk « o SSD do notebook ├─nvme0n1p1 259:1 0 1G 0 part /boot/efi └─nvme0n1p2 259:2 0 475,9G 0 part / « a partição do sistema
| Coluna | Significado |
|---|---|
NAME | Nome do dispositivo. Os traços ├─ e └─ mostram que a partição pertence ao disco de cima. |
MAJ:MIN | Números internos do kernel. O 7 identifica os loops; você raramente vai precisar disso. |
RM | Removable: 1 se é removível (pendrive, cartão). |
SIZE | Tamanho total. |
RO | Read-only: 1 se for somente leitura. |
TYPE | disk (disco), part (partição), loop (virtual). |
MOUNTPOINTS | Onde está montado. Vazio = não montado. |
Esconder os loops do Snap: -e7
Num Ubuntu com vários Snaps, a lista de loop fica enorme. A opção -e (de exclude, "excluir") esconde um tipo pelo número; os loops são o tipo 7.
- lsblk
- O programa.
- -e7
- Exclui os dispositivos de número 7 (os loops).
$ lsblk -e7 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 1 29,3G 0 disk └─sda1 8:1 1 29,3G 0 part /media/ana/PENDRIVE nvme0n1 259:0 0 476,9G 0 disk ├─nvme0n1p1 259:1 0 1G 0 part /boot/efi └─nvme0n1p2 259:2 0 475,9G 0 part /
Ver o sistema de arquivos e o UUID: -f
Com -f (de filesystems), o lsblk mostra o tipo de cada partição, o rótulo (LABEL) e o UUID, um código único que identifica a partição. O UUID é o que você usa no /etc/fstab.
$ lsblk -f -e7 NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sda └─sda1 vfat FAT32 PENDRIVE 4A1B-2C3D 21,7G 26% /media/ana/PENDRIVE nvme0n1 ├─nvme0n1p1 vfat FAT32 8E3F-1A2B 1G 1% /boot/efi └─nvme0n1p2 ext4 1.0 3f6c1e2a-9b7d-4c1e-8a5f-2d4b6c8e0f12 324G 26% /
FSAVAIL é o espaço livre e FSUSE% é quanto já foi usado. Só aparecem nas partições montadas.
Escolher as colunas: -o
Com -o (de output, "saída") você escolhe só as colunas que quer, na ordem que quiser:
$ lsblk -e7 -o NAME,SIZE,FSTYPE,MOUNTPOINTS NAME SIZE FSTYPE MOUNTPOINTS sda 29,3G └─sda1 29,3G vfat /media/ana/PENDRIVE nvme0n1 476,9G ├─nvme0n1p1 1G vfat /boot/efi └─nvme0n1p2 475,9G ext4 /
Rode lsblk, conecte o pendrive e rode de novo. O dispositivo que apareceu é ele. Faça isso sempre antes de formatar ou gravar uma ISO: errar o nome apaga o disco errado.
Outro comando parecido é o blkid, que mostra só os UUIDs e tipos. Ele precisa de sudo para ler tudo: sudo blkid.
df: quanto espaço livre sobrou
df vem de disk free, "disco livre". Ele mostra, para cada sistema de arquivos montado, o tamanho, quanto foi usado e quanto sobra.
- df
- O programa.
- -h
- Human-readable: tamanhos em K, M, G em vez de blocos de 1 KB.
$ df -h Sist. Arq. Tam. Usado Disp. Uso% Montado em tmpfs 1,6G 2,3M 1,6G 1% /run /dev/nvme0n1p2 468G 121G 324G 28% / « o que importa tmpfs 7,7G 0 7,7G 0% /dev/shm /dev/nvme0n1p1 1,1G 6,2M 1,1G 1% /boot/efi tmpfs 1,6G 132K 1,6G 1% /run/user/1000
| Coluna | Significado |
|---|---|
Sist. Arq. | Qual partição (ou sistema virtual, como tmpfs). |
Tam. | Tamanho total. |
Usado / Disp. | Usado e disponível. |
Uso% | Porcentagem usada. Acima de 90%, comece a limpar. |
Montado em | A pasta onde a partição aparece. |
tmpfs é um "disco" que mora na memória RAM e some ao desligar. Você pode ignorá-lo quando a pergunta for "meu disco está cheio?".
Na linha do /, 121G + 324G = 445G, e não 468G. O ext4 reserva cerca de 5% do espaço para o administrador. Assim o sistema ainda consegue funcionar quando um usuário enche o disco.
Formas diferentes de perguntar a mesma coisa
| Comando | O que mostra |
|---|---|
df -h / | Só a partição onde está a pasta /. Funciona com qualquer pasta: df -h ~. |
df -hT | Acrescenta a coluna Tipo (ext4, vfat…). |
df -h -x tmpfs -x squashfs | Esconde os sistemas virtuais e os Snaps. |
df -i | Mostra inodes em vez de bytes (veja "Quando não funciona"). |
| App Analisador de uso de disco | A versão gráfica (pacote baobab). |
$ df -hT / Sist. Arq. Tipo Tam. Usado Disp. Uso% Montado em /dev/nvme0n1p2 ext4 468G 121G 324G 28% /
Missão: rode df -h e descubra quanto espaço livre a partição / da máquina fictícia tem. Depois rode free -h e compare: o free fala da memória RAM, não do disco.
du: quem está ocupando espaço
df diz que o disco está cheio; du (de disk usage, "uso de disco") diz onde. Ele soma o tamanho dos arquivos de uma pasta.
- du
- O programa.
- -s
- Summarize: mostra só o total, em vez de cada subpasta.
- -h
- Tamanhos legíveis.
- ~/Downloads
- A pasta a medir.
$ du -sh ~/Downloads 6,0G /home/ana/Downloads
Sem o -s, o du lista todas as subpastas, uma por linha, o que pode ser muito longo.
Um nível de cada vez: -d 1
A opção -d (de depth, "profundidade") limita quantos níveis de pastas o du mostra. Com -d 1, ele mostra só as pastas de primeiro nível e o total.
$ du -h -d 1 ~ 4,0K /home/ana/Modelos 2,1G /home/ana/Imagens 6,0G /home/ana/Downloads 1,3G /home/ana/.cache « oculta, mas ocupa espaço 84M /home/ana/Documentos 9,6G /home/ana « total da pasta pessoal
Ordenar pelo tamanho: | sort -h
A saída do du vem fora de ordem. Mandando-a para o sort -h (que entende K, M e G), o maior fica por último:
- du -h -d 1 ~
- Tamanho de cada pasta de primeiro nível.
- |
- O pipe: entrega a saída para o próximo comando (veja Pipes).
- sort -h
- Ordena tamanhos legíveis, do menor para o maior.
- | tail -5
- Mostra só as 5 últimas linhas: as maiores.
$ du -h -d 1 ~ | sort -h | tail -5 84M /home/ana/Documentos 1,3G /home/ana/.cache 2,1G /home/ana/Imagens 6,0G /home/ana/Downloads 9,6G /home/ana
Agora a Ana sabe: o culpado é Downloads. Ela pode repetir o comando dentro dela para descer mais um nível.
Três formas de achar o que enche o disco
Forma 1: du + sort, descendo pasta por pasta
É o método acima. Funciona em qualquer Ubuntu, inclusive em servidor sem interface gráfica.
Forma 2: ncdu, interativo
O ncdu (NCurses Disk Usage) mostra as pastas ordenadas e deixa você navegar com as setas. Instale com sudo apt install ncdu.
$ ncdu ~
--- /home/ana -----------------------------------------
6,0 GiB [##########] /Downloads
2,1 GiB [### ] /Imagens
1,3 GiB [## ] /.cache
84,0 MiB [ ] /Documentos
Total disk usage: 9,6 GiB Apparent size: 9,5 GiB Items: 1834
Use ↑ ↓ para escolher, Enter para entrar na pasta, d para apagar (pede confirmação) e q para sair. A saída acima é ilustrativa.
Forma 3: arquivos grandes com find
Às vezes o problema é um arquivo enorme escondido. O find procura por tamanho:
$ find ~ -type f -size +1G /home/ana/Downloads/ubuntu-26.04-desktop-amd64.iso
Veja mais em find e locate.
| Forma | Melhor quando… |
|---|---|
du -h -d 1 | sort -h | Você quer saber qual pasta cresceu. Funciona em qualquer lugar. |
ncdu | Você vai investigar e limpar várias pastas. |
find -size +1G | Você suspeita de poucos arquivos gigantes. |
| Analisador de uso de disco | Você está no desktop e prefere gráficos. |
Quando não funciona
$ cp video.mp4 ~/Vídeos/ cp: erro de escrita de '/home/ana/Vídeos/video.mp4': Não há espaço disponível no dispositivo
O que aconteceu: a partição encheu. Programas podem travar e o sistema pode não conseguir salvar configurações.
Como confirmar: df -h / mostra Uso% perto de 100%.
Como resolver: ache o culpado com du -h -d 1 ~ | sort -h. Lugares que costumam crescer: ~/Downloads, ~/.cache, a lixeira (~/.local/share/Trash), os logs (sudo journalctl --vacuum-size=200M) e o cache do apt (sudo apt clean). Veja Manutenção.
$ df -h /srv Sist. Arq. Tam. Usado Disp. Uso% Montado em /dev/sdb1 20G 9,1G 9,9G 48% /srv $ df -i /srv Sist. Arq. Inodes IUsado IDisp. IUso% Montado em /dev/sdb1 1310720 1310720 0 100% /srv « os inodes acabaram
O que aconteceu: cada arquivo gasta um inode (uma "ficha" que guarda suas informações). Milhões de arquivos pequenos, como caches e sessões, esgotam as fichas antes do espaço.
Como resolver: ache a pasta com mais arquivos e apague o que não serve. Saída ilustrativa.
$ du -sh /etc du: cannot read directory '/etc/cups/ssl': Permission denied 17M /etc
O que aconteceu: algumas pastas só o root pode ler. O total mostrado fica menor que o real. Repare que, no Ubuntu 26.04, essa mensagem do du aparece em inglês.
Como resolver: para medir pastas do sistema, use sudo du -sh /etc. Para só esconder os avisos: du -sh /etc 2>/dev/null.
O que aconteceu: se um programa ainda está com o arquivo aberto (por exemplo, um log que um serviço continua escrevendo), o espaço só é liberado quando o programa fecha o arquivo. Outra possibilidade: o arquivo foi para a lixeira.
Como resolver: esvazie a lixeira, ou reinicie o serviço que usava o arquivo. Para listar arquivos apagados que ainda estão abertos: sudo lsof +L1.
Referência de opções
lsblk
| Opção | Descrição | Exemplo |
|---|---|---|
-f | Mostra tipo, rótulo, UUID e espaço livre | lsblk -f |
-e7 | Esconde os loops do Snap | lsblk -e7 |
-o | Escolhe as colunas | lsblk -o NAME,SIZE,MOUNTPOINTS |
-d | Só os discos, sem as partições | lsblk -d |
-p | Mostra o caminho completo (/dev/sda1) | lsblk -p |
df
| Opção | Descrição | Exemplo |
|---|---|---|
-h | Tamanhos legíveis | df -h |
-T | Mostra o tipo do sistema de arquivos | df -hT |
-x TIPO | Esconde um tipo | df -h -x tmpfs |
-i | Mostra inodes | df -i |
--total | Acrescenta uma linha de total | df -h --total |
du
| Opção | Descrição | Exemplo |
|---|---|---|
-s | Só o total | du -sh pasta |
-h | Tamanhos legíveis | du -h |
-d N | Mostra até N níveis | du -h -d 1 |
-a | Inclui arquivos, não só pastas | du -ah pasta |
-c | Acrescenta uma linha de total | du -ch *.iso |
--exclude | Ignora um padrão | du -sh --exclude=.cache ~ |
Exercícios
1. Discos sem os loops
Complete para listar os discos escondendo os dispositivos do Snap:
2. Total de uma pasta
Complete para ver só o tamanho total da pasta Imagens, em formato legível:
3. As maiores pastas
Complete para ordenar o resultado do du pelo tamanho:
4. O sistema diz "Não há espaço disponível no dispositivo". Qual comando você roda primeiro?
5. No lsblk, o que é nvme0n1p2?
Resumo
lsblklista discos e partições;-fmostra tipo e UUID;-e7esconde os Snaps.df -hmostra o espaço livre de cada partição montada.du -sh pastamede uma pasta;du -h -d 1 | sort -hacha a maior.- Disco "cheio" com
dfmostrando espaço livre: confira os inodes comdf -i. - Nenhum dos três altera nada: use sem medo.