Por alguma razão, quando eu faço um arquivo de texto no OS X, ele sempre é de pelo menos 4kB, a menos que esteja em branco. Por que é isso? Poderia haver 4.000 bytes de metadados sobre 1 byte de texto sem formatação?
filesystems
disk-usage
tkbx
fonte
fonte
:P
Respostas:
O tamanho do bloco do sistema de arquivos deve ser 4 kB. Quando os dados são gravados em um arquivo contido em um sistema de arquivos, o sistema operacional deve alocar blocos de armazenamento para conter os dados que serão gravados no arquivo.
Normalmente, quando um sistema de arquivos é criado, o armazenamento contido nesse sistema de arquivos é segmentado em blocos de tamanho fixo. Este artigo da Wikipedia explica brevemente esse processo.
O tamanho do bloco subjacente do sistema de arquivos para esse arquivo deve ter um tamanho de bloco de 4K bytes. Este arquivo está usando 1 bloco de 4K e apenas um byte dentro desse bloco contém dados reais.
fonte
Todos os sistemas de arquivos têm um tamanho de cluster ou bloco ou a menor quantidade de espaço em disco que pode ser alocada para manter um arquivo. Mesmo que o tamanho real do arquivo seja menor que o tamanho do cluster / bloco, ele ainda consumirá um cluster ou 4K no seu sistema de arquivos. O tamanho do cluster depende do sistema de arquivos e das opções do sistema de arquivos.
Se ele contiver zero bytes, como Gilles apontou , usa zero blocos / clusters, mas um inode em sistemas de arquivos * nix típicos, o que responde melhor à ressalva, "a menos que esteja em branco".
fonte
Um pequeno experimento para ajudar a ilustrar isso:
Primeiro, vamos ver qual é o tamanho real do bloco da minha partição raiz ext4 (LVM):
É 4096 (4 KiB), conforme o esperado. Agora, vamos criar três arquivos: O primeiro tem zero bytes, o segundo tem apenas um byte e o terceiro tem 4 KiB (o tamanho do bloco):
Agora, nós
ls
o diretório. Usamos a-s
opção para ver o tamanho alocado (a coluna mais à esquerda), em número de "blocos" de 1024 bytes.(ls não sabe que o tamanho real do bloco é 4096 - poderíamos especificar,
--block-size
mas isso dimensiona tudo por esse valor, e também queremos ver o tamanho real do arquivo em bytes) .Duas coisas podem ser observadas aqui:
Arquivos esparsos
Arquivos esparsos são arquivos com grandes blocos de zeros. Como os dados são conhecidos como zero, não há sentido em armazená-los no disco. Dessa maneira, o tamanho aparente de um arquivo pode realmente ser maior que o tamanho do disco.
Dados embutidos
Observe que alguns sistemas de arquivos permitem que arquivos muito pequenos sejam armazenados no próprio inode . Consulte É possível armazenar dados diretamente dentro de um inode em um sistema de arquivos Unix / Linux? .
fonte