Як відновити видалені з файлової системи ZFS файли, якщо снепшоту немає?
ZFS відома своїми просунутими механізмами збереження цілісності даних, серед яких, знімки файлової системи, відомі також як снепшоти, які дозволяють користувачам без зусиль відновлювати видалені файли. Проте якщо знімок ФС не був створений перед видаленням певних даних, простого способу скасувати застосовані зміни не залишається.
При цьому навіть у такому разі відновлення все ж можливе завдяки функції ZFS, відомій як "транзакції". Ці записи створюються файловою системою у автоматичному режимі та діють як тимчасові непостійні снепшоти, які можуть містити її попередні стани, як пояснюється більш детально трохи нижче. Однак, оскільки транзакції є непостійними та можуть бути швидко перезаписані новими даними, вкрай важливо зупинити будь-які операції запису у файлову систему одразу після виявлення втрати даних.
Варіанти відновлення та етапи процесу
За відсутності снепошту, існує два можливі варіанти відновлення видалених з томів ZFS даних:
-
За допомогою автоматичного сканування:
-
Завантажте та встановіть відповідне програмне забезпечення UFS Explorer. Прості томи можна просканувати за допомогою UFS Explorer Standard Recovery, тоді як томи зі stripe/RAID-Z вимагають більш просунутої редакції ПЗ, такої як UFS Explorer RAID Recovery або UFS Explorer Professional Recovery.
-
Виберіть том ZFS в інтерфейсі програми та натисніть "Почати сканування". Залиште параметри, встановлені за замовчуванням.
-
Завершивши сканування, програма відобразить як існуючі, так і видалені файли, що дозволить вам скопіювати потрібні дані.
У статті про те, як відновити дані з тома ZFS, цей підхід описаний більш детально. У цьому випадку програма виконує автоматичний пошук транзакцій файлової системи та інших метаданих, порівнює стани файлової системи в різних транзакціях та знаходить папки та файли, яких бракує. Однак цей процес може бути дуже повільним, коли йдеться про файлові системи, що містять велику кількість файлів. Тому в таких випадках другий варіант відновлення даних може бути кращим.
-
-
Шляхом безпосереднього доступу до транзакцій файлової системи:
-
Завантажте та встановіть UFS Explorer Professional Recovery або Recovery Explorer Professional.
-
Знайшовши том ZFS в інтерфейсі програми, клацніть на ньому правою кнопкою миші та виберіть "Показати транзакції файлової системи". Зачекайте, доки відобразиться список транзакцій для "швидкого доступу" разом з позначками часу їх створення.
-
Знайдіть транзакцію, дата/час якої передують даті/часу видалення даних, і двічі клацніть на ній, щоб відкрити файлову систему в збереженому у ній стані.
-
Знайдіть раніше видалені дані та переходьте до їх відновлення.
-
Якщо у "швидкому доступі" немає потрібної транзакції, ви можете запустити пошук інших транзакцій за допомогою інструмента "Шукати транзакції" у графічному інтерфейсі "Транзакції ZFS". Знайдені у такий спосіб транзакції, найімовірніше, не матимуть позначок часу, але вони все одно будуть розташовані у хронологічному порядку.
-
Якщо транзакцію вже було частково перезаписано, структура файлової системи в ній може бути пошкоджена. У цьому разі ви можете скористатися функцією "Виконати швидке сканування транзакції", щоб подолати пошкодження структури файлової системи.
Хоча цей метод пропонує менше автоматизації, він дозволяє отримати доступ до даних у ZFS за лічені хвилини та без очікування на завершення тривалого сканування.
-
Що таке "транзакції" та чим вони відрізняються від знімків ФС?
Кожна зміна метаданих файлової системи ZFS виконується за допомогою механізму копіювання під час запису (copy-on-write), який запобігає пошкодженню файлової системи у разі збою операційної системи або обладнання. Ці модифікації розподіляються по нових місцях на диску і через певний період часу можуть бути "зафіксовані" у файловій системі. Якщо системний збій відбувається до моменту їх "фіксації", ці зміни, що поки ще очікують на підтвердження, втрачаються, а файлова система "відкочується" до попереднього стану. Отже, низка змін, внесених до метаданих файлової системи, і становить "транзакцію".
Приклад створення транзакції можна побачити на діаграмі нижче:
У цьому прикладі файл "A" видаляється, а файли "B1" та "B2" додаються. Файлова система генерує нову копію метаданих, яка зберігає посилання на всі файли, що не зазнали жодних змін, видаляючи при цьому посилання на файл "A" та додаючи нові посилання на файли "B1" та "B2". Ця оновлена версія метаданих зберігається як нова "транзакція".
На відміну від знімків файлової системи, транзакції не є постійними. Це означає, що файлова система може будь-якої миті легко перезаписати старішу транзакцію, щоб звільнити місце для нової транзакції або нового файлу.
Що таке "транзакції" у "швидкому доступі"?
На самому верхньому рівні файлової системи ZFS знаходиться масив, що містить до 128 блоків (так званих "uberblocks"), кожен з яких містить точку входу до файлової системи. Дійсний "uberblock" з найвищим "ідентифікатором транзакції" представляє останню версію файлової системи. Будь-який "uberblock" з нижчим "ідентифікатором транзакції" відповідає старішій транзакції та ним можна скористатися, щоб відкрити файлову систему в попередньому стані.
Оскільки файлова система часто оновлюється, фактична кількість "uberblocks" з дійсними посиланнями на файлову систему може бути обмеженою.
А через те, що ці транзакції можна побачити негайно, навіть без виконання сканування, їх називають такими, що є "у швидкому доступі".
Сканування файлової системи зазвичай дозволяє виявити набагато більше старих транзакцій.
Останнє оновлення: 11 жовтня 2025 року