AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1538123
Accepted
raph
raph
Asked: 2025-01-14 21:57:39 +0800 CST2025-01-14 21:57:39 +0800 CST 2025-01-14 21:57:39 +0800 CST

Uso inconsistente do disco/espaço livre disponível dependendo das ferramentas utilizadas

  • 772

Problema

Depois de ler muitas postagens/tópicos de fórum, ainda não entendi se ainda há espaço no meu disco rígido ou não...

Comecei a pesquisar porque instalei o Syncthing hoje e uma notificação de erro diz que meu disco está quase cheio e o Syncthing não pode ser executado, mas pensei que tinha cerca de 40 GB restantes...

O que eu fiz para tentar entender e resolver

  • executou o analisador de disco (na raiz do sistema): diz 441,3 Go ocupados / 45,4 Go disponíveis em um total de 470,9 Go em um disco de 480 GB
  • executei o Disk analyzer como sudo (na raiz do sistema): diz 443,6 Go ocupados / 45,4 Go disponíveis em um total de 470,9 Go em um disco de 480 GB

Nota: Não entendo por que somente o tamanho "ocupado" é diferente... E suponho que a diferença de 10 GB entre 470 e 480 seja devido à memória reservada para o sistema ou algo assim (?).

  • corridodf

que produz /dev/sda5 459849800 433180284 3236916 100% /o que diz que está completo...

  • corridosudo du -h --max-depth=1 /

que produz:

48G /var
0   /sys
4,0K    /srv
4,0K    /mnt
72M /root
63G /snap
4,0K    /cdrom
1,9G    /opt
22M /etc
du: impossible de lire le répertoire '/proc/3353/task/3353/net': Argument invalide
du: impossible de lire le répertoire '/proc/3353/net': Argument invalide
du: impossible de lire le répertoire '/proc/6203/task/6203/net': Argument invalide
du: impossible de lire le répertoire '/proc/6203/net': Argument invalide
du: impossible d'accéder à '/proc/80737/task/80737/fd/3': Aucun fichier ou dossier de ce nom
du: impossible d'accéder à '/proc/80737/task/80737/fdinfo/3': Aucun fichier ou dossier de ce nom
du: impossible d'accéder à '/proc/80737/fd/4': Aucun fichier ou dossier de ce nom
du: impossible d'accéder à '/proc/80737/fdinfo/4': Aucun fichier ou dossier de ce nom
0   /proc
325G    /home
16K /lost+found
0   /dev
368K    /tmp
272M    /boot
21G /usr
8,0K    /media
du: impossible d'accéder à '/run/user/1000/gvfs': Permission non accordée
du: impossible d'accéder à '/run/user/1000/doc': Permission non accordée
4,0M    /run
460G    /

então diz que há cerca de 10G livres no total de 470 Go.

  • instalado ncduque como dudiz que o uso do disco é459,2 GiB

  • corridolsof -nP +L1

que gera 1413 linhas de arquivos "deletados" (a grande maioria são "memfd:mozilla-ipc"...) de vários tamanhos. Mas não descobri como somar todos esses arquivos para verificar o uso total do disco.

  • correu find /proc/[0-9]*/fd -lname '*(deleted)' 2>/dev/null | perl -lne '($l = readlink) =~ s/ (deleted)$//; print -s, " $_ $l"' | sort -g(comando encontrado em outro tópico do askubuntu ) para classificar o resultado por tamanho de arquivo

que produz 1516 linhas, e aqui estão as dez principais linhas - suponho que o primeiro número seja o tamanho em bytes (?):

2482816 /proc/2758/fd/378 /memfd:gdk-wayland (deleted)
5439888 /proc/2758/fd/322 /memfd:gdk-wayland (deleted)
6031750 /proc/22782/fd/28 /tmp/.org.chromium.Chromium.7Uj5wU (deleted)
6987776 /proc/5122/fd/30 /memfd:mozilla-ipc (deleted)
8087040 /proc/2758/fd/351 /memfd:gdk-wayland (deleted)
8294400 /proc/2758/fd/224 /memfd:gdk-wayland (deleted)
8783424 /proc/2758/fd/327 /memfd:gdk-wayland (deleted)
8783424 /proc/2758/fd/360 /memfd:gdk-wayland (deleted)
9216000 /proc/2758/fd/331 /memfd:gdk-wayland (deleted)
67108864 /proc/2671/fd/6 /memfd:pulseaudio (deleted)

Questões

  • Estou no estado em que não sei se meu disco está realmente cheio ou não... há muitas inconsistências nos números (não estou dizendo que os números estão errados, suponho que eles nem sempre significam a mesma coisa, mas isso não é inteligível para mim). Então, se alguém puder me ajudar a entender esse ponto, ficarei grato!
  • Não sei se está cheio por causa de arquivos "deletados" que consomem espaço ou não. Qualquer ajuda sobre como medir o uso do disco de arquivos deletados também seria apreciada
  • Finalmente, não entendo por que vejo 63G /snapcom duenquanto o Disk analyzer diz que é apenas 188,4 ko. Entendo que há links simbólicos para snaps nesta pasta e parece que esses links simbólicos (para /var/lib/snapd/snaps/) são responsáveis ​​por 24 G, diz du. Esses 24 G também estão nos 63 G de /snap? Verifiquei a dusaída de /snape não parece... Mas adicionar 63 G à saída do Disk analyzer resulta em um total acima do tamanho real do disco... Isso me perdeu totalmente...

Por favor, diga-me se precisar de mais informações. Terei prazer em lhe dar :)

Edições

Saída completa df(os números para /dev/sda5 são diferentes porque criei algum espaço...):

Sys. de fichiers blocs de 1K   Utilisé Disponible Uti% Monté sur
tmpfs                1625812      2204    1623608   1% /run
/dev/sda5          459849800 414179712   22237488  95% /
tmpfs                8129044     24768    8104276   1% /dev/shm
tmpfs                   5120         4       5116   1% /run/lock
/dev/sda1             523248         4     523244   1% /boot/efi
tmpfs                1625808      1720    1624088   1% /run/user/1000

Investigando mais para entender melhor tudo isso, percebi que o programa Discos no meu sistema diz que tenho uma sda2partição de:

  • 480 GB (479 564 137 472 bytes)

Mas esses bytes são, na verdade, 480 gigabytes (10^9 bytes), mas apenas 446,6 GB . O programa também diz que sda5a partição tem 47 GB livres, o que corresponde aos 46,8 Go fornecidos pelo Disk Analyzer...

Nunca percebi que o espaço de armazenamento em disco era fornecido em gigabytes "vantajosos" (10^9), e agora entendo melhor por que vejo uma diferença tão "grande" entre a dfsaída e o Disk Analyzer.

22.04
  • 2 2 respostas
  • 58 Views

2 respostas

  • Voted
  1. Best Answer
    raj
    2025-01-15T09:31:37+08:002025-01-15T09:31:37+08:00

    Você misturou muitas coisas diferentes na sua pergunta, e provavelmente é por isso que é difícil entender o que está acontecendo.

    Vamos começar pelo último, os arquivos "excluídos" em /proc. /procnão são um diretório real no seu disco; são um sistema de arquivos virtual que reflete o estado dos processos no seu sistema. Os "arquivos" em /proc/xxxx/fdrepresentam descritores de arquivo que estão abertos no momento pelo número do processo xxxx. Descritores de arquivo podem se referir a arquivos reais no disco, mas também podem se referir a praticamente qualquer outra coisa, como em sistemas do tipo Unix, quase tudo que o programa pode ler dados ou gravar dados é representado como um "arquivo".

    O comando que você digitou exibe no final da linha os objetos reais aos quais esses descritores de arquivo se referem. Como você pode ver, a maioria deles começa com , /memfd:o que significa que eles são apenas blocos de memória, usados ​​para comunicação entre programas, que um programa alocou e então "deletou", como mencionado na outra resposta (o que efetivamente faz com que o bloco de memória seja automaticamente desalocado quando o programa para de usá-lo). Há apenas um arquivo real lá, que é /tmp/.org.chromium.Chromium.7Uj5wU.

    Se você não é um programador interessado em depurar nenhum software que esteja sendo executado no seu sistema, você basicamente não precisa se importar com o conteúdo de /proc. Similarmente para /sys, ele também é um pseudodiretório usado para se comunicar com o kernel do sistema operacional, e /dev, que representa vários dispositivos presentes no seu computador e reconhecidos pelo SO.

    O que nos leva ao próximo tópico, a saída do seu ducomando. É enganoso, pois inclui "diretórios" que são apenas pontos de montagem para outro sistema de arquivos que não aquele que lhe interessa, ou seja, sistema de arquivos raiz colocado na /dev/sda5partição do disco, como dfmostra a saída do seu comando. (A propósito. Sua dfsaída é apenas aquela linha que se refere àquela partição que você postou? Normalmente, dfdeve ser exibida uma porção de outras linhas também, referindo-se a todos os sistemas de arquivos.) Uma das entradas enganosas nesta saída é /snapsobre o que você está se perguntando. Todos os subdiretórios em são, na /snapverdade, pontos de montagem para sistemas de arquivos virtuais contidos em *.snaparquivos no /var/lib/snapd/snapsdiretório e esse diretório é o lugar onde eles estão realmente ocupando espaço em disco. O Disk Analyzer parece estar contando apenas o tamanho da estrutura real do subdiretório em /snap, ignorando essas montagens, enquanto duapenas as conta como se fossem arquivos regulares em um diretório regular. Então o Disk Analyzer está correto sobre isso.

    O que está faltando é -xo parâmetro to du- ele diz dupara ignorar diretórios que pertencem a sistemas de arquivos diferentes. Dessa forma, você se livrará de entradas enganosas na dusaída.

    BTW. Se você quiser saber o que está montado onde, basta digitar o mountcomando - ele mostrará todos os sistemas de arquivos e seus pontos de montagem. Você pode ver que há vários sistemas de arquivos virtuais (ou "pseudo-sistemas de arquivos") como sysfs, tmpfs, cgroupetc. montados em vários diretórios, você também verá as montagens de loop de arquivos em /var/lib/snapd/snapssubdiretórios do /snapdiretório.

    Em seguida, chegamos à sua dfsaída. Ela diz que dos 459849800 Kbytes disponíveis no seu sistema de arquivos raiz, 433180284 são usados ​​e 3236916 Kbytes são livres. No entanto, a soma 433180284+3236916 não é igual a 459849800, é apenas 436417200. Por que isso? Conforme mencionado na outra resposta, cerca de 5% do espaço em disco é reservado para processos raiz, o que significa que os processos em execução como raiz podem usar os 459849800-436417200=23432600 Kbytes restantes, enquanto os processos em execução como usuários regulares não podem. Do espaço disponível para processos do usuário (436417200 Kbytes), 433180284 Kbytes já foram usados, o que representa 99,2% - dfaparentemente arredondando para 100%.

    Em caso de dúvidas e números inconsistentes, você deve confiar no que dflhe mostra, pois ele exibe os mesmos dados que o sistema operacional realmente "vê" quando tenta alocar espaço para um novo arquivo. Se dfmostrar 0 Kbytes livres, então você não conseguirá gravar nada no disco. No seu caso, você ainda tem cerca de 3 Gbytes livres. Então dfé a resposta definitiva para a pergunta se seu disco está cheio ou não.

    Finalmente, por que o Disk Analyzer rodando como root mostra um tamanho ocupado diferente do que rodando como usuário regular? Simplesmente, é uma questão de permissões. Se rodando como não root, o programa simplesmente não consegue acessar alguns diretórios, então ele não consegue contar o tamanho dos arquivos neles. Então esses arquivos estão faltando na contagem "ocupados". Nesse caso, o Disk Analyzer deve mostrar um aviso bem visível no topo de uma janela que ele não conseguiu escanear alguns dos diretórios.

    O que eu não entendo, no entanto, é por que ele mostra 45G livres, enquanto esse não é o caso na verdade. Pelos meus experimentos, parece que o Disk Analyzer está levando em conta o espaço livre reservado para o root (que dfomite), mas no seu caso a soma do espaço disponível para o root e disponível para programas do usuário é de cerca de 26G, não 45. Também notei que o Disk Analyzer está aparentemente exibindo os números usando gigabytes decimais (1000x1000x1000 bytes), enquanto ferramentas como due dfquando executadas com -hparametr usam gigabytes binários (1024x1024x1024 bytes), então os números no Disk Analyzer serão ligeiramente maiores (pelo fator de cerca de 1,07), mas isso ainda não mudará 26G para 45G. Então, não entendo de onde veio 45G. Talvez seja algum bug no Disk Analyzer, talvez outra pessoa possa explicar.

    • 1
  2. waltinator
    2025-01-15T07:35:51+08:002025-01-15T07:35:51+08:00

    "Espaço em disco" é um conceito por sistema de arquivos, não por disco ou por partição.

    Como um resquício dos dias de discos minúsculos, para evitar que administradores de sistemas fiquem acordados à noite, 5% do espaço em disco é reservado para processos root( UID 0). Então, sudo df | grep -v loope df | grep -v loopobterá resultados diferentes.

    (deleted)arquivos são arquivos usados ​​por processos para uso temporário (por exemplo, cache). O método geral é:

    1. Crie o arquivo no disco
    2. Inicializa o arquivo, usando espaço em disco.
    3. Abra o arquivo, aumentando a "contagem de uso" no arquivo inode.
    4. unlink()(excluir) o arquivo, o que limpa a entrada do diretório para o arquivo, mas não libera espaço em disco, já que a "contagem de uso" foi incrementada na etapa 3.
    5. Agora, o processo tem um arquivo privado (acessível apenas ao processo e seus filhos) no disco.
    6. Quando o arquivo é close()ed (todos os arquivos abertos são fechados quando o processo exits), o "use-count" no inode é decrementado. Se o "use-count" for zero, o espaço em disco é liberado.

    Esta é uma maneira do programador gerenciar arquivos temporários que os apaga automaticamente quando o programa termina. A outra maneira ruim requer que o programador mantenha o controle de todos os arquivos temporários e pegue todas as falhas possíveis do programa para fazer a limpeza.

    • 0

relate perguntas

  • Conexão lenta à Internet no Ubuntu 22.04 Beta [fechado]

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve