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

10

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

A partir desta página :

texto alternativo

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

Moeb
fonte

Respostas:

19

Os sistemas de arquivos precisam armazenar tamanhos de arquivo (em bytes ou em algumas unidades dependentes do sistema de arquivos, como setores ou blocos). O número de bits alocados para o tamanho é geralmente fixo quando o sistema de arquivos é projetado.

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

Na época, os sistemas de arquivos mencionados foram projetados, tendo um disco grande o suficiente para atingir o limite soava como ficção científica. (Exceto o FAT32, mas a empresa que o promoveu o pretendia ser uma medida intermediária antes que todos adotassem seu novo e brilhante NTFS, além de nunca serem muito bons em antecipar requisitos crescentes.)

Outra coisa é que até o final do século passado, a maioria dos hardwares de consumo (e até servidor) só conseguia acomodar computação rápida com valores de 32 bits, e os sistemas operacionais tendiam a usar valores de 32 bits para a maioria das coisas, incluindo tamanhos de arquivo. 32 bits significa 4 GB; portanto, os sistemas operacionais tendem a se limitar a arquivos de 4 GB, independentemente do sistema de arquivos, geralmente até 2 GB, porque usam números inteiros assinados. Atualmente, qualquer sistema operacional sério de desktop ou servidor usa 64 bits para tamanhos e compensações de arquivos, o que coloca o limite em 8EB.

Gilles 'SO- parar de ser mau'
fonte
2
+1. Esclarecimentos ao EB não iniciado - em exabytes, como em um milhão de terabytes.
Shinrai 13/08/10
8

As estruturas de dados em disco geralmente são o limite. Pesquise como esses sistemas operacionais formatam seus discos e como rastreiam as partes dos arquivos no disco, e você entenderá por que 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 de tamanhos inteiros para alguns campos da estrutura de disco acaba limitando o tamanho geral do arquivo que você pode armazenar com esse formato de disco.

Michael Kohne
fonte
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.

Penso que hoje em dia, as limitações em novos sistemas de arquivamento normalmente vão para qual será o uso esperado.

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

Meu primeiro laptop foi um 286 com um disco rígido de 40 MB ... 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 ... francamente, isso é (e deve ser) bom por algum tempo - qualquer coisa capaz (ou precisando) de gravar arquivos maiores que 2 TB geralmente tem a capacidade de arquivos divididos e / ou recursos administrativos similares (por exemplo, servidor SQL).

William Hilsum
fonte
1

Resposta simples: você precisa poder ler o arquivo, portanto, precisa poder endereçá-lo. Esse acesso será através de estruturas de dados que têm limites. Você ficará preso ao menor denominador comum de; limites físicos (disco, cartão SD, etc.), limites do sistema de arquivos e limites do SO.

Rich Homolka
fonte
Você pode endereçar um arquivo em várias fases, por exemplo, segmento, banco de memória, bloco, deslocamento de bytes, etc.
yyny
0

Saber o tamanho de cada arquivo é apenas uma simplificação à qual nos acostumamos. Não precisa ser assim e nem sempre foi o caso.

Os mainframes antigos nunca descobriram o tamanho de um arquivo de fita até que ele fosse lido até o final (e mesmo assim ele pode não ter acompanhado o tamanho). Até os arquivos do disco eram frequentemente acessados ​​sequencialmente e aumentavam à medida que eram estendidos. Seus tamanhos (em bytes) não foram gravados e, em geral, não puderam ser calculados sem a leitura completa devido aos tamanhos de setor variáveis ​​e outros recursos estranhos.

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

Adrian Pronk
fonte