Что делает fsck -p (preen) на ext4?

16

Я читал пост в блоге о восстановлении файловой системы, и автор опубликовал хороший вопрос… fsck -pпредполагается, что он исправляет мелкие ошибки автоматически без вмешательства человека. Но что именно это исправит, когда будет сказано очистить файловую систему? Какие ошибки это исправит, и что заставит его остановиться и сказать пользователю, что он или она должен запустить fsck в интерактивном режиме? Есть ли какой-то список?

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

Барт Сильверстрим
источник

Ответы:

18

Ответ на ваш вопрос лежит в e2fsck/problems.cфайле исходного кода e2fsprogs . Поиск PR_PREEN_OKфлага должен начать вас.

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

Следующие ошибки / предупреждения в настоящее время обрабатываются автоматически при -pуказании флага:

  • Переместить подсказку
  • Неверный индекс журнала
  • Журнал суперблока поврежден
  • Флаг суперблока has_journal снят, но есть журнал
  • Флаг суперблока needs_recovery установлен, но журнал отсутствует
  • Версия файловой системы равна 0, но флаги функций установлены
  • Суперблок подсказка для внешнего суперблока
  • дескриптор группы N помечен как неинициализированный без набора функций.
  • Битовая карта блока N группы неинициализирована, но используется растровая карта inode.
  • Дескриптор группы N имеет недопустимое количество неиспользованных инодов.
  • Последнее растровое изображение блока группы неинициализировано.
  • Флаг test_fs установлен (и доступен ext4)
  • Время последнего монтирования в будущем (выдумано)
  • Время последней записи в будущем (выдумано)
  • Контрольная сумма группы блоков (вопрос защелки) недействительна.
  • Корневой каталог имеет установленное время
  • Зарезервированный индекс имеет плохой режим
  • У удаленного инода нулевое время
  • Индод используется, но время установки установлено
  • Справочник нулевой длины
  • Inode имеет неверный i_size
  • Inode имеет неверные i_blocks
  • Плохой суперблок в группе
  • Неправильные групповые дескрипторы группы
  • Блок заявлен без причины
  • Ошибка выделения блоков для перемещения метаданных
  • Ошибка при выделении блочного буфера во время процесса перемещения
  • Перемещение информации группы метаданных из X в Y
  • Перемещение информации группы метаданных в X
  • Ошибка чтения блока во время процесса перемещения
  • Ошибка записи блока во время процесса перемещения
  • Неизменяемый флаг установлен на устройстве или сокете
  • Ненулевой размер для устройства, fifo или сокета
  • Версия файловой системы равна 0, но флаги функций установлены
  • Индекс журнала не используется, но содержит данные
  • Журнал имеет плохой режим
  • Флаг INDEX_FL установлен в файловой системе без HTREE
  • Флаг INDEX_FL установлен для не-каталога
  • Неверный корневой узел в каталоге HTREE
  • Неподдерживаемая версия хеша в каталоге HTREE
  • Несовместимый флаг в корневом узле HTREE
  • HTREE слишком глубоко
  • неверный inode-> i_extra_isize
  • неверный ea entry-> e_name_len
  • неверный ea entry-> e_value_offs
  • неверный ea entry-> e_value_block
  • неверный ea entry-> e_value_size
  • неверный ea entry-> e_hash
  • в inode отсутствует EXTENTS_FL, но это inode экстента
  • Inode не должен иметь установленный EOFBLOCKS_FL
  • Запись в каталоге удалена или не используется
  • Тип файла каталога не установлен
  • Тип файла каталога, установленный в файловой системе
  • Неверный корневой узел HTREE
  • Неверный лимит HTREE
  • Неверный счет HTREE
  • Внутренний узел HTREE имеет неупорядоченные хеши в таблице
  • Найден индекс в группе, в которой установлен _INODE_UNINIT
  • Индекс обнаружен в группе неиспользованных инодов
  • i_blocks_hi должен быть равен нулю
  • / потерян + найден не найден
  • Неподключенный инод нулевой длины
  • Неверный счетчик ссылок
  • Заполнение в конце растрового изображения inode не установлено.
  • Заполнение в конце растрового изображения блока не установлено.
  • Заголовок блочных различий
  • Блок не используется, но отмечен в растровом изображении
  • Блок используется, но не помечен как используемый в растровом изображении
  • Конец блочных различий
  • Заголовок различий растровых изображений Inode
  • Индод не используется, но отмечен в растровом изображении
  • Используемый индекс, но не помеченный как используемый в растровом изображении
  • Конец различий растрового изображения в Inode
  • Количество неверных инодов для группы неверно
  • Каталоги для группы неверны
  • Бесплатные иноды неверны
  • Количество свободных блоков для группы неверно
  • Количество свободных блоков неверно
  • Диапазон блоков не используется, но отмечен в растровом изображении
  • Используемый диапазон блоков, но не помеченный как используемый в растровом изображении
  • Диапазон Inode не используется, но отмечен в растровом изображении
  • Используемый диапазон инодов, но не отмеченный используемый в растровом изображении
  • Блок (и) группы N используется, но группа помечена как BLOCK_UNINIT
  • Индекс (ы) группы N используется, но группа помечена как INODE_UNINIT
  • Создать журнал заново, если установлен флаг E2F_FLAG_JOURNAL_INODE

Следующие условия ошибки приводят к прерыванию неинтерактивного процесса fsck, даже если установлен -pфлаг:

  • Блокировать растровое изображение не в группе
  • Растровое изображение Inode отсутствует в группе
  • Таблица Inode не в группе
  • Размер файловой системы неправильный
  • Неверное количество инодов в суперблоке
  • Hurd не поддерживает функцию filetype
  • Журнал имеет неизвестный тип суперблока
  • Спросите, должны ли мы очистить журнал
  • Суперблок журнала имеет неизвестный установленный флаг только для чтения
  • В суперблоке журнала установлен неизвестный несовместимый флаг
  • Журнал имеет неподдерживаемый номер версии
  • Спросите, должны ли мы вести журнал в любом случае
  • Зарезервированные блоки без resize_inode
  • Resize_inode не включен, но индекс изменения размера не равен нулю
  • Изменить размер inode неверно
  • Время последнего монтирования в будущем
  • Время последней записи в будущем
  • дескриптор группы N контрольная сумма недействительна.
  • Корневой каталог не является индексом
  • Битовая карта блока конфликтует с другим блоком fs
  • Растровое изображение Inode конфликтует с другим блоком fs
  • Таблица Inode конфликтует с некоторым другим блоком fs
  • Растровый блок находится на плохом блоке
  • Растровое изображение Inode находится на плохом блоке
  • Неверный номер блока в inode
  • Номер блока перекрывает метаданные фс
  • Inode имеет недопустимые блоки (вопрос с защелкой)
  • Слишком много плохих блоков в inode
  • Недопустимый номер блока в неверном блоке inode
  • Неправильный блок имеет недопустимые блоки (вопрос с защелкой)
  • Плохой блок используется как косвенный блок плохого блока
  • Несоответствие не может быть исправлено
  • Неверный запрос первичного блока
  • Подавлять сообщения подсказками
  • Флаг Imagic установлен на inode, когда файловая система не поддерживает его
  • Флаг сжатия устанавливается в inode, когда файловая система не поддерживает его
  • Работа с индексами, которые были частью бесхозного связанного списка
  • Работа с инодами, которые были частью поврежденного потерянного связанного списка (вопрос защелки)
  • Ошибка чтения расширенного блока атрибутов
  • Неверный расширенный блок атрибутов
  • Неверный счетчик ссылок на атрибуты
  • Несколько блоков EA не поддерживаются
  • Ошибка при распределении советника
  • Неверное имя расширенного атрибута
  • Неверное значение расширенного атрибута
  • Слишком большой индекс (вопрос защелки)
  • Слишком большой каталог
  • Обычный файл слишком большой
  • Симлинк слишком большой
  • У плохого блока есть косвенный блок, который конфликтует с блоком файловой системы
  • Изменение размера inode не удалось
  • Inode, кажется, является каталогом
  • Ошибка при чтении дерева экстентов
  • Неспособность перебрать экстенты
  • Плохой стартовый блок в экстенте
  • Степень заканчивается за файловой системой
  • Флаг EXTENTS_FL установлен в файловой системе без экстентов
  • у inode есть экстенты, в суперблоке отсутствует функция INCOMPAT_EXTENTS
  • У быстрой символической ссылки есть EXTENTS_FL
  • Экстенты вышли из строя
  • Индод имеет недопустимый узел экстента
  • Клонировать дубликаты / плохие блоки?
  • Неверный номер индекса для "."
  • Запись в каталоге имеет неверный номер индекса
  • Прямая запись - это ссылка на «.»
  • Вход в каталог указывает на индекс, находящийся в плохом блоке
  • Запись каталога содержит ссылку на каталог
  • Запись каталога содержит ссылку на корневой каталог
  • Запись в каталоге содержит недопустимые символы
  • Отсутствует '.' в каталоге inode
  • Отсутствует ".." в каталоге inode
  • Первая запись в каталоге inode не содержит «.»
  • Вторая запись в каталоге inode не содержит «..»
  • i_faddr должен быть равен нулю
  • i_file_acl должен быть нулем
  • i_dir_acl должен быть нулем
  • i_frag должен быть равен нулю
  • i_fsize должен быть равен нулю
  • у inode плохой режим
  • каталог поврежден
  • слишком длинное имя файла
  • В каталоге inode отсутствует блок (дыра)
  • '' не NULL прекращается
  • '..' не заканчивается NULL
  • Недопустимый символ устройства inode
  • Недопустимый блочный индекс устройства
  • Дублировать "." запись
  • Повторяющаяся запись ".."
  • Окончательный rec_len не так
  • Ошибка чтения каталога
  • Ошибка записи каталога
  • Справочная запись для '.' большой. Трещина?
  • Недопустимый индекс FIFO
  • Недопустимый сокет inode
  • Неверный тип файла каталога
  • Имя файла каталога равно нулю
  • Неверная символическая ссылка
  • i_file_acl (расширенный блок атрибутов) плох
  • Файловая система содержит большие файлы, но не имеет такого флага в sb
  • Очистить неверный каталог HTREE
  • Плохой блок во внутреннем узле дерева
  • Найдена повторяющаяся запись в каталоге
  • Найдено неуникальное имя файла
  • i_blocks_hi должен быть равен нулю
  • Неожиданный блок HTREE
  • Корневой индекс не выделен
  • Нет места в потерянном + найдено
  • Несвязанный индексный каталог
  • .. запись неверна
  • Lost + найден не каталог
  • Неподключенный инод
  • Суперблок поврежден
  • Фрагменты не поддерживаются
  • Ошибка определения размера физического устройства файловой системы
  • Внешний журнал имеет (не поддерживается) несколько файловых систем
  • Не могу найти внешний журнал
  • Внешний журнал имеет плохой суперблок
  • Суперблок имеет плохой журнал UUID
  • Ошибка при выделении битового массива inode
  • Ошибка при распределении растрового изображения блока
  • Ошибка при выделении информации ссылки icount
  • Ошибка при выделении массива блоков каталога
  • Ошибка при сканировании inode
  • Ошибка при переборе блоков
  • Ошибка при сохранении информации о количестве узлов
  • Ошибка при сохранении информации о блоке каталога
  • Ошибка при чтении inode (для очистки)
  • Ошибка при выделении структуры refcount
  • Ошибка чтения блока расширенных атрибутов при исправлении refcount
  • Ошибка записи расширенного блока атрибутов при исправлении refcount
  • Ошибка при распределении структуры выделения области советника
  • Ошибка при сканировании inode
  • Ошибка при выделении битового массива inode
  • Внутренняя ошибка: не удалось найти dir_info
  • Ошибка при выделении структуры icount
  • Ошибка при переборе блоков каталога
  • Ошибка освобождения индекса
  • Ошибка настройки советника
  • Ошибка при выделении битового массива inode
  • Ошибка создания корневого каталога
  • Корневой индекс не является каталогом; отбрасывание
  • Невозможно продолжить без корневого узла.
  • Внутренняя ошибка: не удалось найти dir_info
  • Ошибка программирования: конечные точки растрового изображения не совпадают
  • Внутренняя ошибка: конец фальсификации растрового изображения
  • Ошибка копирования при замене растрового изображения inode
  • Ошибка копирования в битовой карте блока замены
Ной
источник
Ной, если вы знаете это, возможно ли создать / внедрить все эти ошибки (или в зависимости от того, что возможно)? Я пытаюсь выяснить причину этих ошибок и возможное решение этих ошибок.
AnkurTank