Чому ext2 та наступники не потребують дефрагментації?


8

Сімейство файлових систем ext2 / ext3 / ext4 не потребує дефрагментації.

Який базовий дизайн допомагає цій файловій системі не роздроблено?


Відповіді:


9

Один із способів, коли файлова система ext4 підтримує перевірку фрагментації, - це процес затримки розподілу (режим розподілу за замовчуванням ext4).

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

Це спрацьовує, виділяючи більшість блоків для файлу одночасно, коли загальна кількість блоків (або, принаймні, куля) у кожному файлі відома. Це дозволяє алокатору блоків ( mballocзгаданий у відповіді ММК) зробити кращу роботу з пошуку потрібного розміру вільного простору для розміщення файлу.


Майте на увазі, що це дійсно лише особливість драйвера ext4 . Тепер я не знаю, чи дуже технічно кажучи, що не вдалося змонтувати старі програми з такою опцією (принаймні частково ). На сьогоднішній день DELALLOC позначений як ext4-тільки .
mirh

8

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

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


6

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

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

Якщо уникнути фрагментації, це, ймовірно, буде пов’язане із затримкою розподілу фізичних блоків. Тобто, на деякому рівні реалізації файлова система кешуватиме дані (та отримуватиме доступ до них через логічний номер блоку) до тих пір, поки вони не будуть записані / скоєні на диск. Коли дані остаточно записуються на диск, необхідно виділити фізичні блоки. Алгоритм розподілу може (або не може) виділити для даних певну кількість суміжних доступних фізичних блоків.

Сподіваюсь, це допомагає.


Насправді є утиліта e2defrag, і вона може знадобитися (на досить повних дисках з багатьма випадковими записаними файлами). Уповільнений розподільник ext4 робить це ще менш імовірним. Але навіть у ext2 було дещо затримка розподілу / запису, що робить його менш потрібним для запуску утиліти дефрагментації, ніж примітивний розподільник MS-DOS®.
mirabilos
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.