Questão Como o tamanho de um arquivo no disco pode ser de 0 bytes quando há dados nele?


Eu tenho um arquivo no Windows 10 com 362 bytes de dados, mas o "tamanho no disco" é apenas 0 bytes. É um programa simples "Hello world" escrito em assembly e salvo em Notepad ++.

Como é possível que o tamanho no disco seja zero quando o tamanho do arquivo é de 362 bytes?

Eu tenho um SSD, não um disco rígido normal.

Captura de tela da caixa de diálogo Propriedades:

Screenshot of the Properties dialog


96


origem


Resposta curta: Se não for necessário espaço adicional no disco para armazenar seu conteúdo. - David Schwartz
@ Thomas Não é uma duplicata. O nome parece semelhante, mas essa pergunta é perguntar por que o Windows declara que um arquivo de zero bytes tem tamanho zero, apesar de exigir registro em algum lugar. Esta questão pergunta por que o tamanho no disco pode ser zero mesmo se houver dados no arquivo. - Ben N
Relacionado: Como um arquivo grande pode ter um valor zero “Tamanho no disco”? - BlueRaja - Danny Pflughoeft
@BenN Está sinalizando inadequado porque você está certo, certamente não é uma duplicata. - William
Oi Coder88, eu acredito que a pessoa que sinalizou sua mensagem como duplicata estava errada - a outra pergunta estava perguntando algo diferente; você realmente fez uma boa pergunta. Se você quis indicar que sua pergunta foi solucionada, clique na marca de seleção ao lado de uma resposta aqui. - Ben N


Respostas:


Isso acontece quando o arquivo é tão pequeno que seu conteúdo e a contabilidade do sistema de arquivos cabem em 1 KB. Para economizar espaço em disco, o NTFS mantém arquivos pequenos "residentes", armazenando seu conteúdo diretamente no registro do arquivo, portanto, nenhum cluster deve ser alocado para ele. Portanto, o tamanho no disco é zero porque não há nada além do registro do arquivo. Quando o arquivo fica suficientemente grande, o NTFS o torna "não residente", aloca um ou mais clusters para ele (criando um "tamanho diferente de zero no disco") e cria um "par de mapeamento" no registro de arquivo no lugar dos dados aponte para o cluster.

Discos rígidos SSD ou Windows 10 não afetam isso; é simplesmente um recurso NTFS. Leitura adicional: Os quatro estágios do crescimento de arquivos NTFS.

Observe que a métrica "tamanho no disco" não está exatamente correta. Por exemplo, ele nunca inclui a constante 1 KB que o registro do arquivo NTFS ocupa. A métrica foi introduzida no Windows 95, que não usava NTFS e, portanto, não poderia ter sido responsável por esse fenômeno; Ele apenas mostrou o tamanho do arquivo arredondado para o próximo múltiplo do tamanho do cluster. Esse algoritmo de estimação foi realizado para o Windows 7, embora muitas versões do Windows entre eles usassem NTFS e armazenamento residente. Foi finalmente atualizado no Windows 8 para contar arquivos com apenas dados residentes como tamanho zero no disco. Leitura adicional: Apenas o que é 'tamanho no disco'?


148



Por um momento, pensei que estávamos analisando os efeitos da Deduplicação de Dados (blog.fosketts.net/2012/01/03/…), mas acredito que o recurso funcione em um nível transparente para algo como a métrica "tamanho no disco". - misha256
Mas espere ... Eu sou incapaz de replicar o comportamento OPs no meu volume NTFS (Windows 7). Independentemente de como eu criar arquivos minúsculos (alguns com apenas um byte), cada um deles ocupa 4KB "espaço em disco" de acordo com a caixa de diálogo Propriedades do arquivo. Hmm... - misha256
@ misha256 Huh, eu posso reproduzi-lo com um arquivo em ~ 700 bytes no Windows 8.1. Meu palpite é que o algoritmo se tornou mais inteligente em algum lugar entre o Windows 7 e 8.1, uma vez que originalmente, ele não sabia sobre qualquer material de fantasia NTFS (fonte). Observe que, quando um arquivo passa para o segundo estágio, ele nunca diminui de tamanho. - Ben N
@ Philip Acho que se poderia argumentar de qualquer maneira. Tradicionalmente, o "arquivo no disco" era "o tamanho dos clusters alocados" (assim, por exemplo, você pode ver os efeitos de escolher um tamanho de cluster muito grande). Nunca, a meu conhecimento, incluiu o espaço de "catálogo" necessário para o sistema de arquivos (por exemplo, o tamanho da "entrada de diretório" ou "o comprimento da cadeia de entradas de FAT"). - TripeHound
@ Phillip: Enfim, incluindo a escrituração no tamanho do arquivo fica rápido: Como você descreveria um arquivo de 1 cluster com 3 nomes? - Deduplicator