Рейтинг:2

Не удается восстановить раздел ext4 после отключения электроэнергии, e2fsck продолжает падать, не могу понять, что не так?

флаг ar

После отключения питания Ubuntu не может восстановить ext4 и выдает ту же ошибку, что и ниже, с e2fsck:

Поэтому я использую последнюю версию SystemRescue LiveCd и пытаюсь вручную выполнить fsck.

e2fsck /dev/sda2 :

/dev/sda2: журнал восстановления
Сигнал (11) SIGSEGV si_code=SEGV_MAPERR адрес ошибки=0x561377ff7000
e2fsck: malloc.c:2539: sysmalloc: Утверждение `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' не удалось.
Сигнал (6) SIGABRT si_code=SI_TKILL 

tune2fs -l /dev/sda2 :

tune2fs 1.46.4 (18 августа 2021 г.)
Имя тома файловой системы: <нет>
Последнее монтирование: /
UUID файловой системы: 787f0a6f-7d49-409d-80b7-5e4416d5a2bb
Магический номер файловой системы: 0xEF53
Версия файловой системы №: 1 (динамическая)
Особенности файловой системы: has_journal ext_attr resize_inode dir_index fast_commit тип файла need_recovery степень flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Флаги файловой системы: signed_directory_hash 
Параметры монтирования по умолчанию: user_xattr acl
Состояние файловой системы: чистая с ошибками
Поведение при ошибках: Продолжить
Файловая система Тип ОС: Linux
Количество инодов: 30236672
Количество блоков: 120925696
Количество зарезервированных блоков: 6046284
Бесплатные блоки: 16403757
Бесплатные иноды: 29241790
Первый блок: 0
Размер блока: 4096
Размер фрагмента: 4096
Зарезервировано блоков GDT: 995
Блоков в группе: 32768
Фрагментов на группу: 32768
Иноды на группу: 8192
Блоков индексных дескрипторов на группу: 512
Размер группы блоков Flex: 16
Файловая система создана: Пн, 2 апреля, 12:16:18 2018 г.
Время последнего подключения: Пн, 8 ноября, 10:55:03 2021 г.
Время последней записи: Пн, 8 ноября, 14:02:43 2021 г.
Количество маунтов: 2
Максимальное количество маунтов: -1
Последняя проверка: пн, 8 ноября, 10:51:38 2021
Интервал проверки: 0 (<нет>)
Срок службы записи: 13 ТБ
Uid зарезервированных блоков: 0 (пользователь root)
Зарезервированные блоки gid: 0 (корневая группа)
Первый индекс: 11
Размер индекса: 256
Требуемый дополнительный размер: 28
Желаемый дополнительный размер: 28
Индекс журнала: 8
Первый потерянный индекс: 27918882
Хэш каталога по умолчанию: half_md4
Семя хэша каталога: efb4ad95-8a43-42bc-a03b-0849ccae2ef7
Резервное копирование журнала: блоки inode

смонтировать /dev/sda2 /mnt :

mount: /mnt: невозможно прочитать суперблок на /dev/sda2.

mke2fs -n /dev/sda2 :

mke2fs 1.46.4 (18 августа 2021 г.)
/dev/sda2 содержит файловую систему ext4.
    последний раз монтировался пн 8 ноя 10:55:03 2021
Все равно продолжайте? (у, Н) у
Создание файловой системы с 120925696 блоков по 4k и 30236672 инодов
UUID файловой системы: 331dfa9a-1bae-44bf-b4a2-4c75d7a8aab2
Резервные копии суперблоков, хранящиеся в блоках: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000

e2fsck -b 32768 /dev/sda2 :

e2fsck 1.46.4 (18 августа 2021 г.)
Флаг need_recovery суперблока сброшен, но в журнале есть данные.
Флаг восстановления не установлен в суперблоке резервного копирования, поэтому журнал все равно запускается.
/dev/sda2: журнал восстановления
Сигнал (11) SIGSEGV si_code=SEGV_MAPERR адрес ошибки=0x55657e320000
e2fsck(+0x35133)[0x55657d929133]
/usr/lib/libpthread.so.0(+0x13870)[0x7fb669365870]
e2fsck(+0x27c10)[0x55657d91bc10]
e2fsck(+0x28480)[0x55657d91c480]
e2fsck(+0x309c4)[0x55657d9249c4]
e2fsck(jbd2_journal_recover+0xd7)[0x55657d9251a7]
e2fsck(e2fsck_run_ext3_journal+0x2d1)[0x55657d91e871]
e2fsck(основной+0x1d75)[0x55657d903de5]
/usr/lib/libc.so.6(__libc_start_main+0xd5)[0x7fb6691adb25]
e2fsck(_start+0x2e)[0x55657d90591e]

e2fsck -b 98304 /dev/sda2:

e2fsck 1.46.4 (18 августа 2021 г.)
Флаг need_recovery суперблока сброшен, но в журнале есть данные.
Флаг восстановления не установлен в суперблоке резервного копирования, поэтому журнал все равно запускается.
/dev/sda2: журнал восстановления
Сигнал (11) SIGSEGV si_code=SEGV_MAPERR адрес ошибки=0x563839a50000
e2fsck(+0x35133)[0x563838e06133]
/usr/lib/libpthread.so.0(+0x13870)[0x7f671f521870]
e2fsck(+0x27c10)[0x563838df8c10]
e2fsck(+0x28480)[0x563838df9480]
e2fsck(+0x309c4)[0x563838e019c4]
e2fsck(jbd2_journal_recover+0xd7)[0x563838e021a7]
e2fsck(e2fsck_run_ext3_journal+0x2d1)[0x563838dfb871]
e2fsck(основной+0x1d75)[0x563838de0de5]
/usr/lib/libc.so.6(__libc_start_main+0xd5)[0x7f671f369b25]
e2fsck(_start+0x2e)[0x563838de291e]

e2fsck -C0 -p -f -v /dev/sda2 :

/dev/sda2: журнал восстановления
Сигнал (11) SIGSEGV si_code=SEGV_MAPERR адрес ошибки=0x555ae23f5000
e2fsck(+0x35133)[0x555ae03cd133]
/usr/lib/libpthread.so.0(+0x13870)[0x7efe927b8870]
e2fsck(+0x27c10)[0x555ae03bfc10]
e2fsck(+0x28480)[0x555ae03c0480]
e2fsck(+0x309c4)[0x555ae03c89c4]
e2fsck(jbd2_journal_recover+0xd7)[0x555ae03c91a7]
e2fsck(e2fsck_run_ext3_journal+0x2d1)[0x555ae03c2871]
e2fsck(основной+0x1d75)[0x555ae03a7de5]
/usr/lib/libc.so.6(__libc_start_main+0xd5)[0x7efe92600b25]
e2fsck(_start+0x2e)[0x555ae03a991e]

smartctl -H /dev/sda2:

smartctl 7.2 30.12.2020 r5155 [x86_64-linux-5.10.70-1-lts] (локальная сборка)
Copyright (C) 2002-20, Брюс Аллен, Кристиан Франке, www.smartmontools.org

=== НАЧАЛО ЧТЕНИЯ РАЗДЕЛА SMART DATA ===
Результат теста SMART для самооценки общего состояния здоровья: ПРОЙДЕН
sudodus avatar
флаг jp
Есть ли на диске важные уникальные данные, которые необходимо восстановить? Или вы были бы счастливы, если бы вы могли очистить таблицу разделов, создать новую, создать разделы и файловые системы и восстановить данные из резервной копии?
флаг ar
Да, у меня есть некоторые важные данные. Но мне просто интересно, что не так и почему fsck/e2fsck продолжает падать.
sudodus avatar
флаг jp
Я не могу сказать, что не так, но есть инструменты с https://cgsecurity.org, которые могут работать, когда fsck/e2fsck продолжает падать. Если это очень важные данные, клонируйте весь диск на другой диск как минимум того же размера и восстановите клонированную копию. Попробуйте сначала `testdisk`, а если это не сработает, `photorec`, который может восстановить данные без какой-либо файловой системы, пока данные файла все еще существуют. Но это большая работа, и имена файлов и структура каталогов теряются.
флаг ar
Файлы кажутся «целыми» в разделе, используя тестовый диск, поэтому, возможно, я попытаюсь скопировать оттуда.
sudodus avatar
флаг jp
Дайте нам знать результат. Удачи :-)
Рейтинг:1
флаг ar

Я создал вопрос на github, и какой-то хороший парень (суровый) помог мне решить эту проблему, написав патч для приложения. Похоже, что-то было не так с e2fsprogs и fast_commit функция в ext4. Здесь можно отследить.

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

Ответить или комментировать

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