Способствует ли загрузка / копирование файлов одновременно фрагментации?

10

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

Примеры:

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

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

Джонатан
источник
Хороший вопрос Могу только отметить, что это зависит от конкретной реализации драйвера файловой системы, которая является более узкой, чем ОС.
whitequark
4
Это будет сложный ответ ... Да, это зависит от ОС и приложения. Некоторые приложения выделяют пространство, а некоторые нет. Иногда невозможно заранее узнать, сколько выделенного пространства требуется, так что тип приложения может фрагментировать больше. Также это будет зависеть от файловой системы (вы можете использовать fat32 или NTFS в Windows)
Джарвин

Ответы:

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 либо открывают разреженные файлы при запуске новой загрузки, либо просто выделяют указанный размер перед началом.

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

SysAdmin1138
источник