Відповіді:
Один із способів, коли файлова система ext4 підтримує перевірку фрагментації, - це процес затримки розподілу (режим розподілу за замовчуванням ext4).
Затримка розподілу працює за допомогою відкладання відображення новозаписаних блоків даних файлів до блоків дисків у файловій системі до моменту запису.
Це спрацьовує, виділяючи більшість блоків для файлу одночасно, коли загальна кількість блоків (або, принаймні, куля) у кожному файлі відома. Це дозволяє алокатору блоків ( mballoc
згаданий у відповіді ММК) зробити кращу роботу з пошуку потрібного розміру вільного простору для розміщення файлу.
У файловій системі ext3 для кожного блоку є розподільник блоків, і тому цілком можливо, що може відбутися фрагментація.
Однак у файловій системі ext4 є мультиблоковий розподільник, який може затримувати запис блоків на диск, щоб він міг виділяти кілька блоків одночасно в одному шматку диска, щоб забезпечити безперервне записування - і так, менша ймовірність того, що може відбутися фрагментація (все ще можливо, лише менш вірогідна)
Принаймні, для Ext2 (і я думаю, що Ext3, хоча я і менш впевнений), у форматі / структурі на диску немає нічого, що запобігло б дефрагментацію.
Відсутність потреби в дефрагментації відбувається на рівні реалізації, який буде відрізнятися від ОС до ОС. Тобто, залежно від реалізації, файл у Ext2 може бути, а може і не бути фрагментованим.
Якщо уникнути фрагментації, це, ймовірно, буде пов’язане із затримкою розподілу фізичних блоків. Тобто, на деякому рівні реалізації файлова система кешуватиме дані (та отримуватиме доступ до них через логічний номер блоку) до тих пір, поки вони не будуть записані / скоєні на диск. Коли дані остаточно записуються на диск, необхідно виділити фізичні блоки. Алгоритм розподілу може (або не може) виділити для даних певну кількість суміжних доступних фізичних блоків.
Сподіваюсь, це допомагає.