Por que o uso do disco é maior que o tamanho de todos os arquivos nele?

3

Eu tenho um disco rígido de 3 TB. Na tela de propriedades do HDD, ele diz que eu usei 471,4 GB, mas quando eu seleciono todos os arquivos no nautilus, ele diz que 321.0GB está selecionado. Se eu tiver apenas 321.0GB de arquivos no HDD, por que ele está usando 471.4 GB?

O particionamento do HDD está usando o GUID e o sistema de arquivos que estão sendo usados no EXT4. Quando eu seleciono o HDD usando o aplicativo Disk Utility, recebo um aviso dizendo:

WARNING: The partition is misaligned by 3072 bytes.
This may result in very poor performance.  Repartitioning is suggested.

Isso tem algo a ver com os 150.4GB ausentes?

    
por oshirowanen 01.01.2013 / 13:37

2 respostas

10

Os arquivos no disco têm dois tamanhos: o "tamanho aparente" e o "tamanho no disco". Vários motivos podem causar uma discrepância grande :

  • Um grande número de arquivos resultará em uma grande quantidade de sobrecarga, devido à fragmentação interna. Por exemplo. O Ext4 tem um tamanho de bloco padrão 4KiB; arquivos menores que isso consumirão sempre 4KiB, e os tamanhos acima serão "arredondados" para este alinhamento de blocos.
  • Os diretórios também são arquivos e a mesma regra se aplica também a eles. Além disso, se você criar uma grande quantidade de arquivos em um diretório e removê-los novamente mais tarde, o uso no arquivo de diretório não poderá ser recuperado (recriar o diretório ajuda).
  • Arquivos esparsos são arquivos especiais, que parecem grandes, mas não estão "consumindo" o espaço. Isso é comum na virtualização de imagens de discos virtuais; eles aparecerão grandes, mas o tamanho "real" pode ser muito menor. Muitos utilitários (e gerenciadores de arquivos) são incapazes de mostrar o uso real do disco.
  • O uso de links físicos. O conteúdo de um arquivo pode existir no disco enquanto várias referências estão apontando para ele. Alguns gerenciadores de arquivos podem contabilizar o tamanho para cada referência.

Sugiro usar uma ferramenta de uso de disco capaz de listar os dois tamanhos para ver se esse é o problema. Tente ncdu em um terminal e use a para alternar entre o uso real e do disco.

Uma breve demonstração sobre fragmentação interna devido a um sistema de arquivos de tamanho de bloco 4KiB usando du :

$ sudo tune2fs -l /dev/path-to-device | grep "Block size"
Block size:               4096

$ echo blaataaap > myfile                      # creates a 10-byte file

$ du --block-size=1 myfile                     # prints the usage on disk (filesystem)
4096   myfile

$ du --apparent-size --block-size=1 myfile     # prints the apparent size, i.e.
10     myfile                                  # content length when seeking

$ ls -al
-rw-rw-r-- 1 gert gert 10 Jan 1 23:24 myfile   # ls uses apparent sizes

Isso significa que este arquivo de 10 bytes é 4086 bytes maior no disco do que seria exibido em uma listagem e está sofrendo de fragmentação interna.

Uma breve demonstração sobre links físicos e uso de disco mostrados incorretamente ao listar arquivos ( ls neste caso):

$ dd if=/dev/zero of=1MBfile bs=1M count=1 # create a 1MB file
$ ln 1MBfile a_hard_link                   # create a hard link to it

$ ls -alht                                 # ls will report 2MB
total 2.1M
drwxrwxr-x  2 gert gert 4.0K Jan  2 11:21 .
-rw-rw-r--  2 gert gert 1.0M Jan  2 11:21 1MBfile
-rw-rw-r--  2 gert gert 1.0M Jan  2 11:21 a_hard_link

$ du -B 1024 .                             # du reports 1028K total for directory
1028    .

$ du -B 1024 a_hard_link                   # and 1024K for each file individually
1024    a_hard_link
$ du -B 1024 1MBfile
1024    1MBfile
    
por gertvdijk 01.01.2013 / 22:56
1

Isso acontece porque o uso total do disco nunca é igual à soma de todos os arquivos (que é o que o Nautilius mostra quando você seleciona todos os arquivos).

A razão para isso é que os próprios sistemas de arquivos tendem a ocupar algum espaço na partição. Provavelmente, se você eliminou todos os dados armazenados nesse disco rígido, o uso do disco seria de cerca de 150 GB. Esse espaço é reservado para o sistema de arquivos - é necessário, pois o sistema de arquivos precisa armazenar os dados sobre os arquivos em algum lugar. O ext4 pré-aloca este espaço aéreo antes que quaisquer arquivos sejam criados, ao contrário de - por exemplo - ext3, onde esse espaço cresce à medida que mais arquivos são adicionados à partição.

Se você considerar esses 150 GB como um problema, observe que são apenas 5% do tamanho total do seu HDD . Se você precisa de mais de 95% em seu disco rígido, provavelmente precisará comprar um maior, em vez de se preocupar com esses 150 GB que estão fora do seu alcance.

Além disso, tenha em mente que, no caso do ext4, esse espaço não é desperdiçado. A fragmentação de dados não é um problema aqui, mas o custo dessa vantagem é esse espaço extra ocupado. Existem maneiras de diminuí-lo e forçar o ext4 a usar muito menos desse espaço, mas isso não é recomendado, já que - por causa das chances de fragmentação e outras otimizações que não poderão acontecer - isso provavelmente resultará em sua máquina funcionando muito mais lento, pois o acesso a dados não será tão suave.

    
por Rafał Cieślak 01.01.2013 / 22:09