Фрагментація. Вона знижує продуктивність комп’ютера та ускладнює відновлення файлів, тому під час відновлення втрачених даних фрагментація може стати вашим найгіршим ворогом. Чому це відбувається? Як відновити фрагментовані файли та як запобігти фрагментації? Читайте далі, щоб дізнатися.

Зміст
- Фрагментація
- Чому фрагментація — це зло
- Операційні системи намагаються зменшити фрагментацію
- Дефрагментація
- Дефрагментація твердотільних і флеш-носіїв
- Фрагментація та відновлення даних
- Реальні сценарії
Фрагментація
Уявімо, що ви зберігаєте файл на жорсткому диску. Якщо жорсткий диск порожній або майже порожній, операційна система виділить на ньому суміжний блок секторів і збереже файл у цьому блоці… тобто безперервно. Але що станеться, якщо ви вже записували на цей диск дані, а потім додавали й видаляли їх? Рано чи пізно (залежно від використовуваної файлової системи, обсягу жорсткого диска та операційної системи) на диску більше не залишиться достатньо великих безперервних ділянок вільного простору, щоб розмістити великі файли. Це надзвичайно поширена ситуація, і з нею вміють працювати практично всі операційні системи (зокрема ті, що вбудовані в портативні пристрої).
Під час записування нового файла операційна система намагається знайти на диску безперервну ділянку вільного простору, щоб зберегти файл у суміжних секторах. Однак якщо файл більший за будь-яку з доступних ділянок вільного простору або згодом збільшується (наприклад, під час записування відео), може просто не виявитися достатньо великої безперервної ділянки, у яку файл можна було б записати цілком, не розділяючи його на менші фрагменти. Кожен із цих фрагментів зберігається в окремій ділянці вільного простору. У результаті вміст файла виявляється безладно розподіленим по поверхні диска. Це називається фрагментацією.
Чому фрагментація — це зло
Відомо, що фрагментація сповільнює операції читання та запису файлів на магнітних жорстких дисках. Чому саме «магнітні жорсткі диски»? Тому що фрагментація не чинить негативного впливу на продуктивність твердотільних носіїв — і ось чому.
Традиційний магнітний жорсткий диск має всередині диски, що обертаються, і рухомі магнітні головки. Під час читання файлу жорсткий диск спочатку переміщує головки над ділянкою диска, де містяться дані, а потім чекає, доки вони стабілізуються. Лише після цього він може зчитувати або записувати інформацію. Якщо файл зберігається одним безперервним фрагментом, диску потрібно позиціонувати головки лише один раз. Послідовні операції читання на сучасних жорстких дисках виконуються надзвичайно швидко: зазвичай швидкість читання нефрагментованих файлів становить щонайменше 70–100 МБ/с.
Якщо файл складається з кількох фрагментів, жорсткому диску доводиться щоразу переміщувати головки, переходячи до наступного безперервного блоку. Такі операції є відносно повільними. У результаті швидкість читання сильно фрагментованого файлу на тому самому диску може знизитися до 5–15 МБ/с.
Твердотільні носії, як-от SSD-накопичувачі, USB-флеш-накопичувачі та поширені карти пам’яті, не мають усередині механічних рухомих частин. Тому немає потреби чекати, доки якийсь механізм переміститься й стабілізується. Унаслідок цього читання або запис фрагментованих файлів відбувається майже так само швидко, як читання або запис безперервних даних. Однак фрагментація на твердотільних носіях спричиняє інші проблеми, і однією з найсерйозніших є можливість відновлення даних.
Операційні системи намагаються зменшити фрагментацію
Як саме операційна система обирає фрагменти вільного простору для запису нових даних? Різні операційні системи та файлові системи використовують чимало різних алгоритмів. Більшість сучасних операційних систем намагається мінімізувати фрагментацію, обираючи оптимальний спосіб розподілу вільного простору. Що саме вважається «оптимальним», залежить від конкретної системи. Наприклад, алгоритм «найкращого підбору» (best fit) завжди надає перевагу найменшому фрагменту вільних кластерів, якого достатньо для розміщення файлу. Алгоритм «найгіршого підбору» (worst fit) діє протилежним чином: він надає перевагу найбільшим фрагментам, ігнорує менші «дірки» на початку диска й додає файли в кінець уже виділеної області, доки диск не буде заповнено. Алгоритм «першого підбору» (first fit) записує дані в перший доступний фрагмент, достатньо великий для розміщення файлу. Існують також інші алгоритми — кожен має свої переваги й недоліки та оптимізований для певних сценаріїв використання. Деякі алгоритми швидше записують великі файли, тоді як інші краще зменшують фрагментацію файлів, розмір яких, імовірно, збільшуватиметься, і так далі.
Важливо зазначити, що ви не повинні (та й не можете) налаштовувати принцип роботи цих алгоритмів. Але чи можна взагалі щось зробити, щоб зменшити фрагментацію?
Дефрагментація
Якщо йдеться про механічні (магнітні) жорсткі диски, дефрагментація значно зменшує фрагментацію. Дефрагментація впорядковує дані, збережені на жорсткому диску, щоб файли зберігалися в суміжних областях. Дефрагментація найефективніша, коли на жорсткому диску достатньо вільного місця, оскільки системі потрібно спочатку зберегти копію кожного переміщуваного файла, а вже потім звільнити дисковий простір, який він займав. Через це система може не повністю дефрагментувати диск, на якому залишилося мало вільного місця. Саме тому часто рекомендують залишати певний відсоток дискового простору вільним.

Засоби дефрагментації можна запускати вручну або налаштувати на роботу за розкладом. Планова дефрагментація — чудовий спосіб підтримувати механічні жорсткі диски в належному стані. У новіших версіях Windows вбудований засіб дефрагментації може працювати за розкладом без потреби встановлювати сторонні рішення.
Дефрагментація твердотільних і флеш-носіїв
А як щодо дефрагментації твердотільних носіїв, наприклад USB-флеш-накопичувачів або SSD-дисків? Традиційна дефрагментація таких носіїв не має сенсу. Ба більше, спроба дефрагментувати флеш-накопичувач шляхом переміщення даних лише спричинить додаткове (і цілком непотрібне) зношування комірок флеш-пам’яті, скоротивши їхній фактичний термін служби, але не зробивши роботу диска швидшою.
То навіщо у Windows 8 і 8.1 потрібен засіб дефрагментації SSD? Насправді цей засіб лише надсилає SSD команду TRIM, завдяки чому контролер твердотільного накопичувача та його алгоритми збирання сміття коректно розпізнають усе вільне місце на диску.
Фрагментація та відновлення даних
Нарешті ми підійшли до головної теми цієї статті — відновлення інформації з фрагментованих носіїв даних. Як бачите, механічні жорсткі диски можна підтримувати в належному стані за допомогою автоматичного дефрагментатора, який запускається за розкладом. Однак для SSD-накопичувачів такої можливості немає. Через менший обсяг порівняно з механічними жорсткими дисками аналогічної вартості SSD значно швидше заповнюються. Коли на диску залишається мало вільного місця, операційна система не має іншого вибору, окрім як фрагментувати дані. У результаті будь-які файли, записані на SSD, найімовірніше, будуть сильно фрагментовані. Додайте до цього той факт, що SSD фізично очищують комірки, у яких містяться видалені дані (за допомогою збирання сміття та команди TRIM), — і шанси відновити щось із SSD-накопичувача стають майже нульовими.
Якщо не брати до уваги SSD, чому фрагментація так ускладнює відновлення видалених файлів? Річ у тім, що під час видалення файлу система може також стерти записи файлової системи, які вказують на точні фізичні кластери диска, зайняті цим файлом. Зазвичай це не є проблемою для NTFS, яку використовують практично на всіх жорстких дисках із Windows, однак інші файлові системи, зокрема FAT32 (яку використовують на USB-флеш-накопичувачах і картах пам’яті обсягом до 32 ГБ), фактично видаляють ці вказівники під час видалення файлу. Отже, просте переходження за посиланнями файлової системи та повторне складання файлу може виявитися неможливим.
Чудово, файлова система не працює — тоді спробуймо відновлення за сигнатурами! Не так швидко. Відновлення за сигнатурами чудово працює під час відновлення неперервних файлів, але значно гірше — якщо потрібно відновити фрагментований файл.
Під час відновлення за сигнатурами засіб відновлення даних, наприклад Partition Recovery, посекторно зчитує інформацію з диска, шукаючи знайомі сигнатури, які можуть вказувати на файл певного формату. Коли програма виявляє щось схоже на заголовок файлу (наприклад, «PDF»), вона аналізує ці дані та, якщо це справді заголовок файлу, визначає його розмір. Ідея полягає в тому, що, знаючи адресу початку файлу та його розмір, ми можемо просто зчитати з жорсткого диска відповідну кількість кластерів — і готово! Файл відновлено.
Цей метод чудово працює, якщо жорсткий диск належним чином дефрагментований і файл, який ви відновлюєте, зберігається в одному неперервному фрагменті. Однак якщо файл розділено на частини, розкидані по всьому диску, засіб відновлення за сигнатурами зчитає дані, що належать початку одного файлу, а потім — дані, які належать іншим файлам.
Якщо ви використовуєте засіб із дещо інтелектуальнішим алгоритмом відновлення за сигнатурами, він може обійти цю проблему, аналізуючи файлову систему та виконуючи пошук лише в незайнятих областях диска. Це значно підвищує ймовірність успішного відновлення фрагментованих файлів, але не кожен засіб підтримує такий режим. Зазвичай визначити засоби з підтримкою цього типу відновлення можна за можливістю вибрати, що саме сканувати: всю поверхню диска, зайняті області (файли) чи незайняті області (вільний дисковий простір).
З іншого боку, якщо ви намагаєтеся відновити дані з жорсткого диска, на якому взагалі немає файлової системи (наприклад, після форматування або повторного розподілу диска на розділи), увесь дисковий простір вважатиметься «незайнятим», і вам не залишиться нічого іншого, як просканувати всю поверхню диска.
Реальні сценарії
На практиці видалені файли можна відновити, навіть якщо вони фрагментовані. Наприклад, якщо ви намагаєтеся відновити нещодавно видалений файл, засіб відновлення даних спочатку проаналізує файлову систему. Оскільки на комп’ютерах під керуванням Windows найчастіше використовується NTFS, засіб має високі шанси визначити правильну послідовність записів, що відповідають усім фізичним кластерам жорсткого диска, які раніше належали цьому файлу. Тому відновлення фрагментованого файлу не буде такою складною проблемою, як у файловій системі FAT32 або за повної відсутності файлової системи.






