¿Por qué los sistemas operativos tienen límites de tamaño de archivo?

10

¿Qué limita que un archivo tenga un tamaño máximo dependiendo del sistema operativo?

De esta página :

texto alternativo

No entiendo exactamente esto. Si tiene el espacio de almacenamiento, ¿qué más puede ser la limitación? Debería poder almacenar tantos datos como desee de la manera que desee (incluso en un solo archivo) a menos que se quede sin espacio de almacenamiento.

Moeb
fuente

Respuestas:

19

Los sistemas de archivos necesitan almacenar tamaños de archivo (ya sea en bytes o en alguna unidad dependiente del sistema de archivos, como sectores o bloques). El número de bits asignados al tamaño generalmente se fija en piedra cuando se diseña el sistema de archivos.

Si permite demasiados bits para el tamaño, hará que cada archivo tome un poco más de espacio y cada operación sea un poco más lenta. Por otro lado, si permite muy pocos bits para el tamaño, un día la gente se quejará porque están tratando de almacenar un archivo de 20EB y su sistema de archivos basura no los dejará.

En el momento en que los sistemas de archivos que mencionaste fueron diseñados, tener un disco lo suficientemente grande como para correr hasta el límite sonaba como ciencia ficción. (Excepto FAT32, pero la compañía que lo promovió lo pensó como una medida intermedia antes de que todos adoptaran su nuevo y brillante NTFS, además de que nunca fueron muy buenos para anticipar los crecientes requisitos).

Otra cosa es que hasta el final del siglo pasado, la mayoría del hardware del consumidor (e incluso del servidor) solo podía acomodar la computación rápida con valores de 32 bits, y los sistemas operativos tendían a usar valores de 32 bits para la mayoría de las cosas, incluidos los tamaños de archivo. 32 bits significa 4 GB, por lo que los sistemas operativos tendían a limitarse a archivos de 4 GB, independientemente del sistema de archivos, a menudo incluso de 2 GB porque usaban enteros con signo. Cualquier sistema operativo de escritorio o servidor serio en la actualidad utiliza 64 bits para tamaños de archivo y compensaciones, lo que pone el límite en 8EB.

Gilles 'SO- deja de ser malvado'
fuente
2
+1. Aclaración a los no iniciados - EB como en exabytes, como en un millón de terabytes.
Shinrai el
8

Las estructuras de datos en disco suelen ser el límite. Investigue cómo estos sistemas operativos formatean sus discos y cómo rastrean las porciones de archivos en el disco, y comprenderá por qué tienen estas limitaciones. El sistema de archivos FAT está bastante bien documentado en línea (consulte Wikipedia , por ejemplo) y puede ver que su elección de tamaños enteros para algunos campos de estructura de disco termina limitando el tamaño general del archivo que puede almacenar con este formato de disco.

Michael Kohne
fuente
1

La limitación se debe simplemente al hecho de que cuando se escribieron las especificaciones de los sistemas de archivo, nunca se pensó que los discos duros serían mucho más grandes ... u otras limitaciones técnicas al diseñar las especificaciones.

Creo que hoy en día, las limitaciones en los nuevos sistemas de archivo generalmente van hacia el uso esperado.

... Sería difícil para cualquier equipo técnico lanzar un sistema de archivo y decir que es compatible con 500 discos duros de Petabyte sin tener que probarlo.

Mi primera computadora portátil fue una 286 con un disco duro de 40MB ... ¡Nunca imagino que necesitaría (o alcanzaría el límite) de FAT en ese momento!

Creo que la limitación actual de NTFS es de alrededor de 16 TB por volumen, 2 TB por archivo ... francamente, eso es (y debería ser) bueno por algún tiempo; cualquier cosa capaz (o necesaria) de escribir archivos de más de 2 TB generalmente tiene la capacidad de archivos divididos y / o características administrativas similares (por ejemplo, servidor SQL).

William Hilsum
fuente
1

Respuesta simple: debe poder leer el archivo, por lo que debe poder direccionar el archivo. Este acceso será a través de estructuras de datos que tienen límites. Estarás atrapado con el mínimo común denominador de; límites físicos (disco, tarjeta SD, etc.), límites del sistema de archivos y límites del sistema operativo.

Rich Homolka
fuente
Puede abordar un archivo en múltiples fases, por ejemplo, segmento de banco de memoria, trozo, desplazamiento de bytes, etc.
yyny
0

Conocer el tamaño de cada archivo es solo una simplificación a la que nos hemos acostumbrado. No tiene por qué ser así y no siempre fue así.

Los viejos mainframes nunca supieron cuán grande era un archivo de cinta hasta que se leyó hasta el final (e incluso entonces puede que no haya hecho un seguimiento del tamaño). Incluso los archivos de disco a menudo se accedían secuencialmente y solo crecerían a medida que se extendieran. Sus tamaños (en bytes) no se registraron y, en general, no se pudieron calcular sin leerlos en su totalidad debido a los tamaños de sector variables y otras características extrañas.

No sería difícil diseñar un sistema de archivos que no hiciera un seguimiento del tamaño del archivo y les permitiera crecer sin límites.

Adrian Pronk
fuente