Arquivos “Ghost” no ext4? (espaço em disco alocado pelo ktorrent)

3

Estou baixando com o KTorrent e notei que quando eu seleciono "alocar espaço em disco antes de iniciar o torrent", ele cria todos os arquivos no início, presumivelmente vazios, para evitar a fragmentação.

Quando estou na pasta e uso ls , mostra os tamanhos alocados, mas também o tamanho total, e esses dois não se somam. df também reporta apenas o espaço realmente usado.

ls -lH

total 745M
-rw-r--r-- 1 ##### ##### 542M Feb  8 15:55 Star Trek - 1x01 - The Cage.avi
-rw-r--r-- 1 ##### ##### 351M Feb  8 14:37 Star Trek - 1x02 - Where No Man Has Gone Before.avi
-rw-r--r-- 1 ##### ##### 346M Feb  8 16:04 Star Trek - 1x03 - The Corbomite Maneuver.avi
-rw-r--r-- 1 ##### ##### 350M Feb  8 16:02 Star Trek - 1x04 - Mudd's Women.avi
-rw-r--r-- 1 ##### ##### 350M Feb  8 15:35 Star Trek - 1x05 - The Enemy Within.avi
-rw-r--r-- 1 ##### ##### 350M Feb  8 15:37 Star Trek - 1x06 - The Man Trap.avi
... (many more)

No entanto, com a opção -s , obtenho tamanhos reais:

ls -s

total 728M
   0 Star Trek - 1x01 - The Cage.avi
351M Star Trek - 1x02 - Where No Man Has Gone Before.avi
 42M Star Trek - 1x03 - The Corbomite Maneuver.avi
195M Star Trek - 1x04 - Mudd's Women.avi
5.8M Star Trek - 1x05 - The Enemy Within.avi
9.7M Star Trek - 1x06 - The Man Trap.avi
.... (size matches)

Como isso é possível? Existe alguma configuração de "tamanho de arquivo" no sistema de arquivos (ext4), que ls lê (às vezes) e df ignora?

    
por MightyPork 08.02.2015 / 15:56

1 resposta

3

O Ktorrent está usando arquivos esparsos . Basicamente, um arquivo esparso é um arquivo com "buracos": nenhum espaço em disco real é usado para áreas do arquivo que estão "vazias" (isto é, contém apenas zeros).

Seu arquivo, portanto, parece ser de um certo tamanho (no seu caso, o tamanho do seu vídeo Star Trek), mas na verdade não está usando espaço em disco para as áreas que ainda não estão "preenchidas" (no seu caso, partes que o Ktorrent ainda tem que baixar), evitando assim desperdiçar espaço em disco até que seja realmente necessário.

Em vez disso, os metadados são usados pelo sistema de arquivos para indicar que essas áreas estão vazias. Se você fosse ler deles, você teria apenas zeros.

Você pode ver o uso real do disco de um arquivo com du ou ls -s e seu aparente uso de disco com du -b ou ls -l .

df e o tamanho total informado por ls -l estão mostrando apenas o uso real do disco.

    
por 08.02.2015 / 16:30