Почему операционные системы имеют ограничения по размеру файлов?

10

Что ограничивает максимальный размер файла в зависимости от операционной системы?

С этой страницы :

альтернативный текст

Я не совсем понимаю это. Если у вас есть место для хранения, что еще может быть ограничением? Вы должны иметь возможность хранить столько данных, сколько хотите (даже в одном файле), если вы не исчерпали место для хранения.

Moeb
источник

Ответы:

19

Файловые системы должны хранить размеры файлов (либо в байтах, либо в некоторых зависимых от файловой системы единицах, таких как секторы или блоки). Количество бит, выделяемых для размера, обычно фиксируется в камне при проектировании файловой системы.

Если вы разрешите слишком много битов для размера, каждый файл будет занимать немного больше места, а каждая операция - немного медленнее. С другой стороны, если вы допустите слишком мало битов для размера, то однажды люди будут жаловаться, потому что они пытаются сохранить файл размером 20EB, а ваша файловая система дерьма не позволит им.

В то время файловые системы, о которых вы упомянули, были спроектированы, имея достаточно большой диск, чтобы достичь предела, звучащего как научная фантастика. (За исключением FAT32, но компания, которая его продвигала, намеревалась сделать это как промежуточную меру, прежде чем все приняли свою блестящую новую NTFS, плюс они никогда не были очень хороши в ожидании растущих требований.)

Другое дело, что до конца прошлого века большинство потребительских (и даже серверных) аппаратных средств могли выполнять только быстрые вычисления с 32-разрядными значениями, а операционные системы обычно использовали 32-разрядные значения для большинства вещей, включая размеры файлов. 32 бита означают 4 ГБ, поэтому операционные системы, как правило, ограничиваются файлами 4 ГБ независимо от файловой системы, часто даже 2 ГБ, поскольку они используют целые числа со знаком. Любая серьезная настольная или серверная операционная система в настоящее время использует 64-битные размеры и смещения файлов, что ограничивает 8EB.

Жиль "ТАК - перестань быть злым"
источник
2
+1. Разъяснение непосвященным - EB как в экзабайтах, так и в миллионах терабайт.
Shinrai
8

Структуры данных на диске обычно являются пределом. Изучите, как эти операционные системы форматируют свои диски и как они отслеживают части файлов на диске, и вы поймете, почему у них есть эти ограничения. Файловая система FAT довольно хорошо документирована в режиме онлайн (см. , Например, Википедию ), и вы можете видеть, что выбор целочисленных размеров для некоторых полей структуры диска в конечном итоге ограничивает общий размер файла, который вы можете сохранить в этом формате диска.

Майкл Кон
источник
1

Ограничение просто связано с тем, что когда были написаны спецификации файловых систем, никогда не предполагалось, что жесткие диски будут намного больше… или других технических ограничений при разработке спецификаций.

Я думаю, что в настоящее время ограничения в новых системах подачи заявок обычно связаны с ожидаемым использованием.

... Любой технической команде было бы сложно выпустить систему хранения и заявить, что она поддерживает 500-петабайтные жесткие диски, даже не проводя тестирование на ней.

Моим первым ноутбуком был 286 с жестким диском на 40 МБ ... Я бы никогда не подумал, что когда-нибудь понадобится (или достигнет предела) FAT!

Я думаю, что текущее ограничение NTFS составляет около 16 ТБ на том, 2 ТБ на файл ... откровенно говоря, это (и должно быть) хорошо в течение некоторого времени - все, что способно (или нуждается) в записи файлов размером более 2 ТБ, обычно имеет возможность разбивать файлы и / или аналогичные административные функции (например, SQL-сервер).

Уильям Хилсум
источник
1

Простой ответ: вам нужно уметь читать файл, поэтому вы должны уметь обращаться к файлу. Этот доступ будет осуществляться через структуры данных, которые имеют ограничения. Вы застрянете с наименьшим общим знаменателем; физические (диск, SD-карта и т. д.) ограничения, ограничения файловой системы и ограничения ОС.

Рич Гомолка
источник
Вы можете обращаться к файлу в несколько этапов, например, сегмент, банк памяти, порция, смещение байтов и т. Д.
yyny
0

Знание размера каждого файла - это просто упрощение, к которому мы привыкли. Так не должно быть и не всегда.

Старые мэйнфреймы никогда не узнавали, насколько большим был файл ленты, пока он не прочитал его до конца (и даже тогда он, возможно, не отслеживал размер). Даже к дисковым файлам часто обращались последовательно, и они только увеличивались по мере их расширения. Их размеры (в байтах) не были записаны и, в общем, не могли быть рассчитаны без их полного чтения из-за переменных размеров секторов и других странных особенностей.

Не составит труда спроектировать файловую систему, которая не отслеживала бы размер файла и позволяла им расти неограниченно.

Адриан Пронк
источник