Por que os sistemas operacionais têm limites de tamanho de arquivo?

9

O que limita um arquivo a ter algum tamanho máximo, dependendo do sistema operacional?

De esta página :

Eu não entendo exatamente isso. Se você tiver o espaço de armazenamento, o que mais pode ser a limitação? Você deve ser capaz de armazenar quantos dados desejar da maneira que quiser (mesmo em um único arquivo), a menos que fique sem espaço de armazenamento.

    
por Moeb 13.08.2010 / 21:30

5 respostas

18

Os sistemas de arquivos precisam armazenar os tamanhos dos arquivos (em bytes ou em alguma unidade dependente do sistema de arquivos, como setores ou blocos). O número de bits alocados ao tamanho geralmente é fixo em pedra quando o sistema de arquivos é projetado.

Se você permitir muitos bits para o tamanho, você fará com que cada arquivo tenha um pouco mais de espaço e cada operação seja um pouco mais lenta. Por outro lado, se você permitir muito poucos bits para o tamanho, um dia as pessoas irão reclamar porque estão tentando armazenar um arquivo de 20EB e seu sistema de arquivos não permitirá.

No momento em que os sistemas de arquivos que você mencionou foram projetados, ter um disco grande o suficiente para entrar no limite soava como ficção científica. (Exceto o FAT32, mas a empresa que o promoveu pretendia que fosse uma medida intermediária antes que todos adotassem seu novo NTFS brilhante, além de nunca terem sido muito bons em antecipar as exigências crescentes.)

Outra coisa é que até o final do século passado, a maioria dos hardwares do consumidor (e até do servidor) só podia acomodar cálculos rápidos com valores de 32 bits, e sistemas operacionais tendiam a usar valores de 32 bits para a maioria das coisas, incluindo arquivos tamanhos. 32 bits significa 4GB, portanto, os sistemas operacionais tendem a ser limitados a arquivos de 4 GB, independentemente do sistema de arquivos, geralmente até 2 GB, porque usaram números inteiros assinados. Qualquer ambiente de trabalho sério ou sistema operacional de servidor atualmente usa 64 bits para tamanhos e deslocamentos de arquivos, o que coloca o limite em 8 EB.

    
por 13.08.2010 / 21:51
8

As estruturas de dados no disco geralmente são o limite. Pesquise como esses sistemas operacionais formatam seus discos e como eles rastreiam as partes dos arquivos no disco, e você entenderá porque eles têm essas limitações. O sistema de arquivos FAT é muito bem documentado on-line (veja Wikipedia , por exemplo) e você pode ver que a escolha do inteiro tamanhos para alguns campos de estrutura de disco acabam limitando o tamanho total do arquivo que você pode armazenar com este formato de disco.

    
por 13.08.2010 / 21:39
1

A limitação é simplesmente devido ao fato de que, quando as especificações dos sistemas de arquivamento foram escritas, nunca se pensou que os discos rígidos seriam muito maiores ... ou outras limitações técnicas ao projetar as especificações.

Eu acho que hoje em dia, limitações em novos sistemas de arquivamento tipicamente vão para o que o uso esperado será.

... Seria difícil para qualquer equipe técnica liberar um sistema de arquivamento e dizer que ele suporta discos rígidos de 500 petabytes sem nunca fazer os testes nele.

Meu primeiro laptop foi um 286 com um disco rígido de 40MB ... Eu nunca imaginaria precisar (ou atingir o limite) de FAT na época!

Eu acho que a limitação atual do NTFS é de cerca de 16 TB por volume, 2 TB por arquivo ... muito francamente, isso é (e deve ser) bom por algum tempo - qualquer coisa capaz (ou precisando) de escrever arquivos maiores que 2 TB normalmente tem a capacidade de dividir arquivos e / ou recursos administrativos semelhantes (por exemplo, servidor SQL).

    
por 13.08.2010 / 21:38
1

Resposta simples: você precisa ler o arquivo, então você precisa poder endereçar o arquivo. Esse acesso será por meio de estruturas de dados com limites. Você estará preso com o menor denominador comum de; limites físicos (disco, cartão SD, etc), limites do sistema de arquivos e limites do sistema operacional.

    
por 13.08.2010 / 22:49
0

Conhecer o tamanho de cada arquivo é apenas uma simplificação com a qual nos acostumamos. Não tem que ser assim e nem sempre foi o caso.

Os mainframes antigos nunca mostram o tamanho de um arquivo de fita até que ele tenha lido até o final (e mesmo assim ele pode não ter rastreado o tamanho). Até mesmo os arquivos de disco eram freqüentemente acessados seqüencialmente e apenas aumentavam à medida que eram estendidos. Seus tamanhos (em bytes) não foram registrados e não puderam, em geral, ser calculados sem lê-los na íntegra devido a tamanhos de setor variáveis e outros recursos estranhos.

Não seria difícil criar um sistema de arquivos que não acompanhasse o tamanho do arquivo e permitisse que eles crescessem sem limites.

    
por 14.08.2010 / 13:02