Na maioria das vezes, os valores para ‘Tamanho’ e ‘Tamanho no disco’ serão muito próximos da correspondência ao verificar o tamanho de uma pasta ou arquivo, mas e se houver uma grande discrepância entre os dois? A postagem de perguntas e respostas do superusuário de hoje analisa a resposta para esse problema confuso.
A sessão de perguntas e respostas de hoje chega até nós como cortesia do SuperUser - uma subdivisão do Stack Exchange, um grupo de sites de perguntas e respostas voltado para a comunidade
A questão
O leitor de superusuário, o último preto, quer saber por que há uma diferença tão grande entre 'Tamanho' e 'Tamanho no disco' para uma pasta no cartão SD de seu telefone:
Como você pode ver abaixo, há muita diferença entre os campos ‘Tamanho’ e ‘Tamanho no disco’ para esta pasta. Por que é que?
![]()
Eu sei que o ‘Tamanho no disco’ deve ser um pouco mais do que ‘Tamanho’ devido às unidades de alocação no Windows, mas por que há tanta diferença? Será por causa do grande número de arquivos?
BTW, esta pasta está no cartão SD do meu telefone Android. Dentro dele, meu aplicativo de mapas armazena seus mapas em cache e o aplicativo obtém seus mapas do Google Maps.
Olhando para a captura de tela, há definitivamente uma grande discrepância entre 'Tamanho' e 'Tamanho no disco', então o que aconteceu aqui para causar isso?
A resposta
O contribuidor do SuperUser Bob tem a resposta para nós:
Presumo que você esteja usando o sistema de arquivos FAT / FAT32 aqui, já que mencionou que se trata de um cartão SD. NTFS e exFAT se comportam de maneira semelhante em relação às unidades de alocação. Outros sistemas de arquivos podem ser diferentes, mas não são compatíveis com o Windows de qualquer maneira.
Se você tiver muitos arquivos pequenos, isso certamente é possível. Considere isto:
- 50.000 arquivos
- Tamanho do cluster de 32 KB (unidades de alocação), que é o máximo para FAT32
Ok, agora o mínimo o espaço ocupado é 50.000 * 32.000 = 1,6 GB (usando prefixos SI, não binários, para simplificar a matemática). O espaço que cada arquivo ocupa no disco é sempre um múltiplo do tamanho da unidade de alocação - e aqui estamos assumindo que cada arquivo é realmente pequeno o suficiente para caber em uma única unidade, com algum espaço (desperdiçado) restante.
Se cada arquivo tivesse em média 2 KB, você obteria cerca de 100 MB no total - mas também estaria perdendo 15x isso (30 KB por arquivo) em média devido ao tamanho da unidade de alocação.
Explicação aprofundada
Por que isso acontece? Bem, o sistema de arquivos FAT32 precisa controlar onde cada arquivo está armazenado. Se fosse para manter uma lista de cada byte, a tabela (como um catálogo de endereços) cresceria na mesma velocidade que os dados - e desperdiçaria muito espaço. Então o que eles fazem é usar “unidades de alocação”, também conhecidas como “tamanho do cluster”. O volume é dividido nessas unidades de alocação e, no que diz respeito ao sistema de arquivos, elas não podem ser subdivididas - esses são os menores blocos que podem ser endereçados. Assim como você tem o número da casa, mas seu carteiro não se importa quantos quartos você tem ou quem mora neles.
Então, o que acontece se você tiver um arquivo muito pequeno? Bem, o sistema de arquivos não se importa se o arquivo tem 0 KB, 2 KB ou mesmo 15 KB, ele dará a ele o mínimo de espaço possível - no exemplo acima, isso é 32 KB. Seu arquivo está usando apenas uma pequena parte desse espaço e o resto é basicamente desperdiçado, mas ainda pertence ao arquivo - como um quarto que você deixa desocupado.
Por que existem diferentes tamanhos de unidades de alocação? Bem, torna-se uma troca entre ter uma mesa maior (livro de endereços, por exemplo, dizendo que John possui uma casa na 123 Fake Street, 124 Fake Street, 666 Satan Lane, etc.), ou mais espaço desperdiçado em cada unidade (casa) . Se você tiver arquivos maiores, faz mais sentido usar unidades de alocação maiores - porque um arquivo não recebe uma nova unidade (casa) até que todas as outras sejam preenchidas. Se você tiver muitos arquivos pequenos, bem, você terá uma mesa grande (catálogo de endereços) de qualquer maneira, então pode dar a eles unidades pequenas (casas).
Grandes unidades de alocação, como regra geral, desperdiçarão muito espaço se você tiver muitos arquivos pequenos. Normalmente não há um bom motivo para ir acima de 4 KB para uso geral.
Fragmentação?
Quanto à fragmentação, a fragmentação não deve desperdiçar espaço dessa maneira. Arquivos grandes podem ser fragmentados, ou seja, divididos, em várias unidades de alocação, mas cada unidade deve ser preenchida antes que a próxima seja iniciada. Desfragmentar pode economizar um pouco de espaço nas tabelas de alocação, mas este não é o seu problema específico.
Soluções possíveis
As gladiador 2345 sugerido , suas únicas opções reais neste momento são conviver com ele ou reformatar com unidades de alocação menores.
Seu cartão pode ser formatado em FAT16, que tem um limite menor no tamanho da mesa e, portanto, requer unidades de alocação muito maiores para lidar com um volume maior (com um limite superior de 2 GB com unidades de alocação de 32 KB). Fonte cortesia de Braiam . Se for esse o caso, você deve ser capaz de formatar com segurança como FAT32 de qualquer maneira.
Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui .