Eu tenho um pequeno Intel NUC com uma unidade de 30 GB. Meu problema é que esta unidade está cheia, mas não consegue encontrar a causa disso.
df
relatando o seguinte
Filesystem 1K-blocks Used Available Use% Mounted on
udev 899412 0 899412 0% /dev
tmpfs 189284 2676 186608 2% /run
/dev/sda2 28414508 27751116 0 100% /
tmpfs 946404 0 946404 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 946404 0 946404 0% /sys/fs/cgroup
/dev/loop0 128 128 0 100% /snap/bare/5
/dev/loop1 56832 56832 0 100% /snap/core18/2128
/dev/loop2 56832 56832 0 100% /snap/core18/2246
tmpfs 946404 0 946404 0% /tmp
/dev/loop3 314880 314880 0 100% /snap/makemkv/381
/dev/loop4 66688 66688 0 100% /snap/gtk-common-themes/1515
/dev/loop5 63360 63360 0 100% /snap/core20/1169
/dev/loop6 63360 63360 0 100% /snap/core20/1081
/dev/loop7 33280 33280 0 100% /snap/snapd/13270
/dev/loop8 317184 317184 0 100% /snap/makemkv/385
/dev/loop9 33280 33280 0 100% /snap/snapd/13640
/dev/loop10 66816 66816 0 100% /snap/gtk-common-themes/1519
/dev/sda1 306584 5356 301228 2% /boot/efi
tmpfs 189280 4 189276 1% /run/user/1000
Calculando isso, dá algo em torno de aproximadamente 14 GB de espaço em disco usado.
Correndosudo lsof | grep REG | grep -v "stat: No such file or directory" | grep -v DEL | awk '{if ($NF=="(deleted)") {x=3;y=1} else {x=2;y=0}; {print $(NF-x) " " $(NF-y) } }' | sort -n -u | numfmt --field=1 --to=iec | tail -10
me dá uma lista com alguns processos importantes:
5,5M /usr/lib/php/20190902/fileinfo.so
6,8M /usr/lib/jellyfin/bin/libcoreclr.so
8,0M /var/log/journal/6296b00d07874d0a9533eed0efb81840/user-1000.journal
8,2M /usr/lib/jellyfin/bin/System.Private.Xml.dll
8,3M /usr/lib/locale/locale-archive
8,9M /usr/lib/jellyfin/bin/System.Private.CoreLib.dll
10M /usr/lib/udev/hwdb.bin
24M /snap/snapd/13640/usr/lib/snapd/snapd
27M /usr/lib/x86_64-linux-gnu/libicudata.so.66.1
64M /memfd:pulseaudio
Correr sudo du -sh / --exclude=disks --total
me dá um total de 13 GB.
Então, basicamente, estou sem ideias sobre como descobrir onde estão os ~ 16 GB ausentes que o sistema relata como estando em algum lugar preenchendo minha unidade.
E o relatório realmente se comporta como tal, executando
cd ~/ && touch example && echo "FooBar" > example
-bash: echo: write error: No space left on device
Desde já agradeço, e qualquer ideia é uma boa ideia, basicamente ter um dispositivo que no momento está inutilizável e minhas opções estão acabando (basicamente uma reinstalação limpa / comprar um SSD maior para um dispositivo que não deveria usar mais de 20 GB)
Responder1
Algumas possibilidades para tentar encontrar o que preenche sua partição "/":
lsof -nP +L1
# deve listar todos os arquivos que foram excluídos (desvinculados), mas ainda estão abertos por um processo e, portanto, ainda ocupam o dist- Veja também essa resposta:https://unix.stackexchange.com/a/68532/27616que fornece algumas informações adicionais e coisas para tentar
- Outra possibilidade: verifique (com
df -ih /
) se você não possui "milhões" de arquivos pequenos nesse/
sistema de arquivos: cada arquivo ocupa pelo menos uma quantidade "pequena" de disco (geralmente porque ocupa pelo menos 1 inode, cujo tamanho varia dependendo de o tamanho do arquivo e o sistema de arquivos). Isso pode somar... se o espaço mínimo em disco ocupado for 512 bytes, ter 1 milhão de arquivos de 1 byte cada ainda ocupará 512 milhões de bytes em vez de 1 milhão de bytes.df
mostrará o espaço em disco ocupado (espaço total do inode contado), enquantodu
mostrará os tamanhos dos arquivos adicionados (ou seja, apenas o conteúdo desses arquivos, não o espaço que o(s) inode(s) contendo esse conteúdo ocupam) - Outra possibilidade: pode haver arquivos grandes ocultos por um sistema de arquivos montado. Ou seja, alguns arquivos podem estar "embaixo" de um sistema de arquivos montado (talvez você coloque muitos arquivos grandes no
/tmp
diretório(aquele que está no/
sistema de arquivos e que é usado como ponto de montagem para montar o/tmp
sistema de arquivos)? Isso pode acontecer se você colocar coisas lá enquanto o/tmp
sistema de arquivos não estiver montado. Para verificar isso, você pode, no Linux, remontar/
(usando um dispositivo de loop livre) como somente leitura em algum lugar (digamos: montá-lo abaixo de um/mnt/readonlyroot/
ponto de montagem) e navegar usandodu -hs /mnt/readonlyroot
e comparar comdu -hxs /
#-x
impede que você desça para outro sistema de arquivos montado abaixo/
, como o/tmp
sistema de arquivos, por exemplo).- comando para montar (uma segunda vez)
/
como somente leitura abaixo de algum ponto de montagem: você pode (do topo da minha memória ... não posso verificar isso no Linux agora):mkdir -p /mnt/rootreadonly/
para criar o ponto de montagem do diretório (que estará, ironicamente, dentro do sistema de arquivos "/"...)mount -o loop -o ro /dev/sda2 /mnt/rootreadonly
(para fazer com que o sistema de arquivos "/" apareça lá como somente leitura. Eu especifico sda2 aqui enquanto você mostra que seu sistema de arquivos "/" está em "/dev/sda2" em sua pergunta. Outra pessoa que estiver lendo esta resposta deve primeiro verificar a saída demount
ver de onde/
vem seu sistema de arquivos...)
- comando para montar (uma segunda vez)