2016-11-23 28 views
0

Я работаю над программным обеспечением, которое записывает данные в разреженные файлы NTFS, и я не могу найти никакой документации о том, каковы пределы разреженного файла NTFS.Каковы ограничения по размеру и количеству выделенных диапазонов в разреженном файле?

Я видел ссылку на то, что существуют ограничения, но не то, что эти ограничения.

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

+0

[2^44 байт - 64 КБ] (https://technet.microsoft.com/en-us/library/cc938432.aspx). Вы ** могли ** использовать google, вы знаете ... – specializt

+0

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

+0

.... нет. Я думаю, что вы, возможно, неправильно поняли несколько понятий - разреженные файлы ничем не отличаются, они просто не могут содержать никаких реальных данных, вы можете выделить до предела файловой системы NTFS, нет * «отдельных таблиц диапазонов распределения» *, что ' d ужасно в отношении производительности – specializt

ответ

1

Ответ будет зависеть только от того, насколько разрежен файл, а также от размера кластера на жестком диске.

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

Итак, предположим, что у вас есть диск 1 ТБ, который по умолчанию имеет размер кластера 4 КБ, и вы пишете файл размером 512 ГБ.

  • Если вы напишете этот файл последовательно, система попытается выделить смежные блоки, и в списке будет относительно небольшое количество записей (фрагменты в файле).
  • Если вы напишете этот файл случайным образом, вы создадите разреженный файл; каждый раз, когда вы пишете блок, который ранее не был написан, вы должны выделить кластер для этого блока. Поскольку вы произвольно записываете, ОС, вероятно, не сможет выделить смежные кластеры, поэтому у вас будет больше записей в списке. Для вашего 512GB-файла может потребоваться 134 217 728 фрагментов (если я правильно выполнил математику).

Я не знаю, будет ли такое количество фрагментов превышать возможности структур управления NTFS. Но предположим, что так оно и есть. Возможно, вы все равно сможете управлять этим файлом, если используете том, размер кластера которого составляет 64k ​​(в результате получается 8 388 608 фрагментов).

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

Список литературы (как от Microsoft):

  • How NTFS Works - обзор структур в файловой системе NTFS.
  • The Four Stages of NTFS File Growth - Сообщение сотрудника службы поддержки Microsoft, в котором подробно описывается, как растущие узлы распределения для файла растут с течением времени. См. Также отчет о последующих действиях, который показывает частичную работу, которая увеличивает количество записей распределения.
1

В documentation on the error code вы получите есть некоторые намеки в пределах:

В частности:

Если вы планируете использовать очень большие файлы (более 500 Гб), которые имеют многие -place chunks, вы должны отформатировать громкость с помощью опции «/ L» для размещения записей большого размера. По умолчанию этот том отформатирован для использования записей небольших размеров.

documentation of the "/L" option имеет приблизительное максимальное количество экстентов в файле NTFS:

обеспечивает поддержку больших сегментов записей файлов (FRS). Это необходимо для увеличения количества допустимых значений для каждого файла на томе. Для крупных записей FRS предел увеличивается с примерно 1,5 миллионов экстентов до примерно 6 миллионов экстентов.

 Смежные вопросы

  • Нет связанных вопросов^_^