Как на самом деле исправить сильно повреждённую (но с исправным оборудованием) систему ext4?

Вопрос или проблема

При создании установочного USB-диска я допустил тривиальную ошибку, указав неправильное устройство, и в итоге переписал первые несколько сотен мегабайт 230 ГБ диска.

Данные не были чрезвычайно важны, но я все же хотел бы восстановить то, что могу. Первой очевидной попыткой был photorec, который нашел что-то. Но затем я надеялся, что смогу “исправить” оставшуюся часть файловой системы (в конце концов, я переписал менее 0.5%).

Поэтому я попытался запустить e2fsck с несколькими комбинациями параметров, включая использование резервной суперблока (аналогично тому, что предложено в ответе на аналогичный вопрос), и в итоге получил кучу папок в “lost+found” – справедливо. Проблема в том, что некоторые из этих папок все еще выдают ошибки, такие как

ls: не удается получить доступ к 'lost+found/#26128': Требуется очистка структуры

… но если я снова запускаю e2fsck -f (как предложено в других ответах), я не замечаю ничего странного

e2fsck 1.47.0 (5-Фев-2023)
Проход 1: Проверка inodes, блоков и размеров
Проход 2: Проверка структуры директорий
Проход 3: Проверка подключенности директорий
Проход 4: Проверка счетчиков ссылок
Проход 5: Проверка информации об итогах групп
EDate: 191504/15269888 файлов (0.1% негруппирующихся), 48227460/61049344 блоков

… и кстати, это занимает только пару секунд, поэтому ясно, что он не проверяет все содержание диска. Я пробовал проверить другие варианты, и, например, попробовал -E discard, но ничего не изменилось: проверка все еще очень быстрая, и некоторые папки внутри lost+found все еще выдают те же ошибки.

Как я могу исправить ошибки с этими папками, которые говорят “Требуется очистка структуры”?

Учтите, что устройство полностью исправно с точки зрения аппаратного обеспечения.

Суперхардкорная параметризация e2fsck для исправления всего это: e2fsck -f -y -C0.

Я не видел такого за последние 3 десятилетия. Если в файле #26128 нет ничего действительно важного, то я бы удалил его с помощью команды debugfs, а затем снова запустил бы e2fsck -f -y -C0.

Вы явно находитесь в исключительной ситуации.

Ваша ошибка не выглядит такой, но, возможно, это побочный эффект перезаписанного или поврежденного суперблока. Попробуйте использовать резервную или вторичную суперблок. Суперблок — это основная структура данных дескриптора файловой системы.

Вы можете использовать команду debugfs для удаления файла. Это общий инструмент восстановления файловой системы. Это очень минималистичный командный инструмент для выполнения точно подобных “жестких” изменений на поврежденных файловых системах, как эта.

После этого, e2fsck -f -y -C0 /dev/partition исправит файловую систему.

.

Ответ или решение

Когда речь идет о восстановлении файловой системы ext4, подвергшейся частичному затиранию, но с исправным оборудованием, задача может казаться сложной, но в большинстве случаев требует методичного подхода. Давайте детально рассмотрим этапы, которые помогут минимизировать потери данных и восстановить структуру файловой системы.

Анализ Проблемы:

Вы случайно перезаписали начальные несколько сотен мегабайт 230-гигабайтного диска при создании загрузочного USB-диска. Хотя потерянные данные не имеют критической важности, вы хотите восстановить то, что возможно. Уже использовалась утилита photorec, которая восстановила часть данных, также применялась e2fsck с параметрами для работы с резервными суперблоками, однако некоторые каталоги по-прежнему недоступны и требуют очистки структуры.

Шаги По Восстановлению:

  1. Создание Резервной Копии:
    Прежде чем предпринимать какие-либо действия, крайне важно создать образ диска с использованием dd или другой утилиты. Это позволит вам сохранить текущее состояние и предотвратить потерю данных при ошибочных действиях.

  2. Поиск Рабочего Суперблока:
    Суперблоки содержат важную информацию о файловой системе. Если основной суперблок поврежден, используйте резервные копии. Чтобы найти доступные суперблоки, выполните команду:

    sudo dumpe2fs /dev/sdX | grep superblock

    Затем запустите e2fsck с указанием одного из них:

    sudo e2fsck -b 32768 /dev/sdX
  3. Использование Debugfs для Удаления Проблемных Файлов:
    Если e2fsck продолжает указывать на проблемы с определенными узлами, попробуйте удалить их с помощью debugfs. Эта программа позволяет редактировать структуры файловой системы вручную:

    sudo debugfs -w /dev/sdX
    > clri <inode_number>
    > quit

    После этого снова запустите:

    sudo e2fsck -f -y -C0 /dev/sdX
  4. Проверка и Очистка Данных в lost+found:
    Файлы, перемещенные в lost+found, часто требуют ручного восстановления. Просмотрите их целостность и структуру с помощью программ для анализа данных, таких как file или exa.

  5. Анализ Логов и Журналов:
    Проверьте логи dmesg или /var/log на наличие ошибок ввода-вывода, которые могут указать на дополнительные неисправности.

Заключение:

Каждая ситуация уникальна, и важно подходить к ней индивидуально, оценивая все возможные последствия, прежде чем выполнять действия. Использование резервных копий, анализ суперблоков и применение ручных методов через debugfs может значительно увеличить шансы на восстановление данных. При необходимости, не избегайте обращения к специализированным службам восстановления данных, чтобы минимизировать риски.

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

Оцените материал
Добавить комментарий

Капча загружается...