Шанси на відновлення даних: файлові системи Linux

Щоб зрозуміти, чи можливо відновити втрачені файли, варто знати, що відбувається з ними в процесі видалення або форматування. Різні файлові системи мають різні підходи до виконання цих операцій. І саме тому ймовірність успіху так сильно залежить від типу файлової системи, використовуваної на даному запам'ятовувальному пристрої.

Linux підтримує широкий спектр форматів. Але оскільки більшість з них призначені для розв'язання конкретних проблем, ми розглянемо лише такі поширені типи, як Ext2, Ext3/Ext4 та XFS.

Ext2

Кожен файл і каталог в Ex2 представлений індивідуальною індексною структурою, яка називається інодом (inode). Кожен інод можна знайти за його унікальним номером. Окрім важливих характеристик файлу, таких як його розмір, іноди містять посилання на блоки, у яких зберігаються його фактичні дані.

Однак імена файлів у Ex2 не зберігаються в інодах. Їх можна знайти виключно в каталогах. Каталоги пов'язують ці імена з відповідними інодами. Каталоги, в свою чергу, є звичайними файлами, які містять списки імен та номерів інодів.

Весь простір для зберігання поділяється на секції, які називаються Групами блоків (Block Groups). Кожна група блоків зберігає іноди у власній Таблиці інодів (Inode Table). Вона також веде Бітмапу блоків (Block Bitmap) та Бітмапу інодів (Inode Bitmap), щоб бути в курсі, які блоки та іноди використовуються в ній на цей момент.

Видалення

Процедура: Ext2 позначає інод файлу як вільний та оновлює Бітмапи блоків та інодів. Вона також видаляє ім'я файлу та номер іноду з каталогу.

Відновлення: Інформація про розмір файлу та розташування його вмісту все ще доступна в іноді. Завдяки цьому є високі шанси повернути файл. З іншого боку, посилання на його ім'я в записі каталогу знищене, тому справжнє ім'я, швидше за все, не вдасться відновити.

Форматування

Процедура: Ext2 очищає поточні Групи блоків та видаляє іноди.

Відновлення: У файловій системі не залишається жодної інформації, яка могла б допомогти у відновленні втрачених файлів. Втім, якщо блоки з їх вмістом ще не були повторно використані, існує шанс повернути файли. Утиліта для відновлення даних може проігнорувати структури файлової системи та перевірити сховище на нижчому рівні. Вона виконає пошук файлів на основі специфічних даних, які, як відомо, присутні в файлах поширених форматів. Цей метод також називається RAW-відновленням даних. На жаль, він не дозволяє отримувати файли з їх оригінальними іменами та каталогами. На додаток він не відновлює файли, які зберігаються в несуміжних блоках, тож в результаті фрагментовані файли, швидше за все, будуть втрачені назавжди.

Ext3/Ext4

Ext3 – це, по суті, вдосконалена версія Ext2. Її сильною стороною є ведення журналу. Журнал знаходиться в спеціальній області файлової системи. Перед внесенням будь-яких модифікацій Ext3 збирає всі блоки, які підлягають зміні, створює їх копію та зберігає оновлену версію в журналі. Тільки після цього вона може застосувати ці зміни.

Ext4 також використовує журнал. Крім того, в ній додається підтримка спеціальних структур, що застосовуються для зберігання вмісту файлів. Вони називаються екстентами – це безперервні діапазони блоків, представлені тільки початковим блоком та кількістю блоків, які слідують за ним.

Екстенти можуть зберігатися безпосередньо в структурі іноду, який описує файл. Одначе, якщо файл займає понад чотири екстенти, решта з них організовуються в окрему структуру, яка називається B+дерево. Найцікавіше в деревах те, що вони не розміщують інформацію послідовно. Вона розташовується на декількох рівнях, які пов'язані один з одним у певній ієрархії.

Видалення

Процедура: Ext3/Ext4 створює запис у журналі, а потім стирає інод, пов'язаний з файлом. Інформація про ім'я файлу залишається в каталозі.

Відновлення: Видалені файли можна відновити за допомогою журналу, навіть з їх оригінальними іменами. Проте результат може бути неповним, якщо файлова система використовувалася протягом тривалого часу після видалення.

Форматування

Процедура: Усі існуючі Групи блоків та іноди стираються. Журнал також очищується, але він все ще може містити інформацію про деякі нещодавно створені файли.

Відновлення: Втрачені файли можна відновити тільки за допомогою методу RAW-відновлення. Одначе, якщо блоки, які зберігають їх вміст, розкидані по всьому сховищу, шанси на успіх значно знижуються.

XFS

XFS складається з частин однакового розміру, які називаються Групами розподілу (Allocation Groups). Кожна Група розподілу поводиться подібно до незалежної файлової системи.

Як і в Ext4, вміст файлів зберігається у вигляді екстентів, а інформація про них, за винятком їх імен – у вигляді інодів. Імена файлів існують лише у відповідних каталогах. Залежно від розміру файлу розташування його екстентів може зберігатися безпосередньо в іноді або організовуватися в спеціальну деревоподібну структуру – B+дерево.

Вільні екстенти в кожній Групі розподілу відстежуються за допомогою пари B+дерев. Перше дерево допомагає знайти початковий блок послідовної області вільного простору, а друге – кількість блоків в цій області.

Окреме B+дерево веде облік інодів у Групах розподілу, коли вони відводяться для файлів та звільняються.

XFS також використовує журнал. Він зберігає зміни в метаданих файлової системи, поки вони не будуть записані до сховища.

Видалення

Процедура: XFS виключає інод, пов'язаний із видаленим файлом, з B+дерева. Більшість інформації про нього перезаписується. Ім'я файлу видаляється з каталогу. Втім, екстенти, які зберігають його вміст, залишаються.

Відновлення: Копії метаданих зберігаються в журналі. Їх можна використати для відновлення втраченого файлу. Шанси на відновлення досить високі, навіть для його справжнього імені.

Форматування

Процедура: B+дерева, відповідальні за розподіл простору, очищуються. Крім того, створюється новий кореневий каталог, що призводить до перезапису попереднього.

Відновлення: Файли, розташовані ближче до початку сховища, мають низькі шанси на відновлення. Решта даних, ймовірно, будуть успішно відновлені.

Читайте далі, щоб дізнатися про можливості відновлення даних з інших файлових систем: