Почему ext2 и преемникам не нужна дефрагментация?

ext2/ext3/ext4 семейству файловых систем не нужна дефрагментация.

Какая базовая справка дизайна эта файловая система в том, чтобы не быть фрагментированным?

8
задан 20 August 2014 в 15:49

3 ответа

Один путь, которым ext4 файловая система контролирует фрагментацию, с процессом задержанное выделение (режим выделения ext4 по умолчанию).

Задержанное выделение работает путем задержки отображения недавно записанных блоков данных файла к дисковым блокам в файловой системе до времени обратной записи.

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

9
ответ дан 16 November 2019 в 16:44

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

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

8
ответ дан 16 November 2019 в 16:44

По крайней мере, для Ext2 (и Ext3 я думаю, хотя я менее уверен), нет ничего в дисковом формате/структуре, который предотвратил бы дефрагментацию.

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

, Если фрагментации избегают, который, вероятно, произойдет из-за задержанного выделения физических блоков. Таким образом, на некотором уровне реализации файловая система будет кэшировать данные (и получать доступ к нему через номер логического блока) до тех пор, пока это пишется/соглашается диск. Когда данные наконец записаны в диск, физические блоки должны быть выделены. Алгоритм назначения может (или не может) выделять много непрерывных доступных физических блоков для данных.

Hope это помогает.

5
ответ дан 16 November 2019 в 16:44

Другие вопросы по тегам:

Похожие вопросы: