Disco cheio, mas não consigo encontrar onde é o espaço usado (Ubuntu)

Disco cheio, mas não consigo encontrar onde é o espaço usado (Ubuntu)

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.

dfrelatando 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 --totalme 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. dfmostrará o espaço em disco ocupado (espaço total do inode contado), enquanto dumostrará 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 /tmpsistema de arquivos)? Isso pode acontecer se você colocar coisas lá enquanto o /tmpsistema 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 usando du -hs /mnt/readonlyroote comparar com du -hxs /# -ximpede que você desça para outro sistema de arquivos montado abaixo /, como o /tmpsistema 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 de mountver de onde /vem seu sistema de arquivos...)

informação relacionada