10

Способствует ли запись более одного файла одновременно в раздел жесткого диска фрагментации? Будут ли эти файлы записаны с чересстрочной разверткой на жестком диске?

Примеры:

  • Загрузка нескольких файлов одновременно из Интернета
  • Копирование файлов из разных источников в один и тот же раздел
  • Скачивание нескольких торрентов

Отличается ли это между различными ОС? Является ли выделение пространства априори для всего файла специфической особенностью приложения?

1 ответ1

7

Это во многом зависит от используемой файловой системы, в некоторой степени от операционной системы, а также от программы, открывающей файл. Прикладная программа запрашивает правильный объем памяти при создании нового файла, и именно функции операционной системы и файловой системы влияют на поведение при открытии и расширении, которому следуют эти приложения, когда они не знают, сколько места просить.

Если программа запрашивает у операционной системы файл размером 4,2 ГБ, ОС найдет большой объем свободного места, в котором свободно 4,2 ГБ. В противном случае это даст программе достаточно фрагментов свободного пространства для сохранения файла. Здесь есть некоторые переменные, это упрощено.

Если программа запрашивает у операционной системы файл размером 4 КБ, ОС выдаст его. Если программа продолжает запрашивать новые непрерывные сегменты 4 КБ (вы загружаете файл, и программа не знала, насколько он велик), пока не получит 4,2 ГБ пространства, ОС с радостью предоставит пространство. Это тот случай, когда файловая система и ОС делают различия.

Например, XFS основана на экстентах, поэтому добавленное пространство будет смежным, пока его не будет. Кроме того, XFS может быть настроен на предварительное выделение новых файлов с определенным объемом пространства, что может дополнительно минимизировать фрагментацию (полезно для томов хранения виртуальной машины, а также томов DVD ISO).

EXT2/3, NTFS и, я полагаю, Рейзер будут распределять смежные потоки, пока не смогут. Тогда начнутся новые фрагменты. Каждый фрагмент может быть размером 4 КБ.

Давайте возьмем наихудший случай. Два параллельных файла размером 4,2 ГБ сохраняются по 4 КБ одновременно в одном каталоге. «Один и тот же каталог» является частью наихудшего случая, поскольку некоторые комбинации OS/FS пытаются хранить файлы в одном каталоге рядом друг с другом. Для некоторых комбинаций OS/FS это приведет к полному чередованию двух файлов на диске. Для других, которые пытаются сохранить новые открытые файлы в разных свободных сегментах, фрагментации может не быть совсем или очень мало.

Немного о XFS (я думаю, что ext4 и btrfs тоже могут это сделать). В этом случае чередование не будет 4 КБ, оно будет таким, каким вы установили значение размера размещения при монтировании тома. Установите 256 МБ, и вы получите файл размером 4,2 ГБ с 17 фрагментами вместо миллиона. Полезно для томов, хранящих большие файлы, такие как медиа-серверы. Бесполезно для томов, хранящих много маленьких файлов и несколько больших.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .