Ответ будет зависеть от того, насколько разреженным является файл, а также от размера кластера жесткого диска.
NTFS, как и большинство других файловых систем, рассматривает файл как упорядоченный список дисковых кластеров. Этот «упорядоченный список» является физической структурой данных в файловой системе и занимает место на диске. По мере роста количества записей в этом списке файловая система должна выделять больше физических блоков для его хранения. Однако количество блоков, которые он может добавить, в конечном счете ограничено (см. ссылки).
Итак, предположим, что у вас есть диск объемом 1 ТБ, который по умолчанию имеет размер кластера 4 КБ, и вы записываете файл размером 512 ГБ.
- Если вы записываете этот файл последовательно, система попытается выделить смежные блоки, и в списке будет относительно небольшое количество записей (фрагментов в файле).
- Если вы запишете этот файл случайным образом, вы создадите разреженный файл; каждый раз, когда вы записываете блок, который не был записан ранее, вы должны выделять кластер для этого блока. Поскольку вы пишете случайным образом, ОС, вероятно, не сможет выделить смежные кластеры, поэтому в списке будет больше записей. Для вашего файла размером 512 ГБ может потребоваться 134 217 728 фрагментов (при условии, что я правильно рассчитал).
Я не знаю, будет ли такое количество фрагментов выше возможностей структур управления NTFS. Но давайте предположим, что это так. Вы по-прежнему можете управлять этим файлом, если используете том с размером кластера 64 КБ (в результате получается 8 388 608 фрагментов).
Помимо возможности исчерпания фрагментов, сильно фрагментированные файлы будут менее эффективны, потому что доступ к любому конкретному блоку требует прохождения по списку фрагментов, чтобы найти этот блок (я предполагаю, что задействована какая-то форма двоичного поиска, но это не так). все равно хуже, чем рассматривать один фрагмент, содержащий все блоки). Кроме того, при использовании магнитных носителей общий доступ к диску будет неоптимальным, поскольку близко пронумерованные блоки могут находиться в совершенно разных местах на диске. Лучше, на мой взгляд, предварительно выделить и последовательно инициализировать весь файл (если, конечно, вы не планируете хранить в нем много данных).
Ссылки (оба от Microsoft):
- Как работает NTFS – обзор структур файловой системы NTFS.
- Четыре этапа о росте файлов NTFS — сообщение члена группы поддержки Microsoft, в котором подробно рассказывается, как со временем увеличиваются узлы размещения для файла. См. также последующую публикацию, в которой показан частичный обходной путь, увеличивающий количество записей о распределении.
person
kdgregory
schedule
25.11.2016