Если вы когда-либо сталкивались с сообщением от неисправен суперблок, BusyBox или initramfs. При загрузке Linux вы, конечно же, сталкиваетесь с выражением лица типа «Что я натворил?». За подобными ошибками скрывается ключевой компонент файловых систем: суперблокПонимание того, что это такое, что оно хранит и как его починить, может избавить вас от множества проблем, особенно когда ноутбук друга внезапно выходит из строя сразу после просмотра сериала.
В этой статье мы подробно разберем этот вопрос. практично и на понятном испанском языке. Что такое суперблок в Linux, что он содержит, почему он так важен, что означает его повреждение (некорректный суперблок) и как его можно проверить и восстановить с помощью таких инструментов, как... fsck, e2fsck, mke2fs, debugfs и так далее. Мы также увидим, как это вписывается в остальную структуру файловой системы (иноды, блоки данных, RAID и т. д.) и какие команды полезны для диагностики реальных проблем.
Что такое суперблок в Linux и какое место он занимает в файловой системе?
В файловых системах ext2, ext3 и ext4 Суперблок — это «мозг» файловой системы.Это структура метаданных, описывающая организацию файловой системы: размер файловой системы, размер блока, количество инодов, состояние, временные метки и многое другое, что имеет важное значение. Без этого блока информации ядро не сможет интерпретировать содержимое раздела.
Файловая система Linux состоит из нескольких отдельных частей, и суперблок — лишь одна из них, хотя и крайне важная. В целом, в типичной системе ext2/ext3/ext4 мы находим три основных компонента: сам суперблок, таблица inode и блоки данных, в которых хранится содержимое файлов и каталогов.
Для наглядности стоит помнить, что Linux работает не с дисками "C:, D:", как Windows, а с... единая иерархия каталогов в которых физические устройства представлены в виде специальных файлов (например, /dev/sda1, /dev/nvme0n1p3, /dev/md0Файловые системы создаются на этих устройствах, и каждая файловая система имеет свой собственный суперблок.
Базовая структура файловой системы Linux (ext2/ext3/ext4)
В файловых системах, производных от ext2, Linux организует дисковое пространство в виде файлов. блоки фиксированного размера (обычно кратные 512 байтам, часто 1K, 2K или 4K). Если в FAT «кластер» был ключевым элементом, то здесь ключевым элементом является блок. Система структурирована следующим упрощенным образом:
- Начальный блок (блок 0): зарезервировано для загрузочного кода или специальных метаданных.
- Суперблок (блок 1 и резервные копии): глобальные данные файловой системы.
- Таблица инодов: структуры, описывающие каждый файл и каталог.
- Область данных: блоки, в которых фактически хранится содержимое.
Вызов блок загрузкиПервый блок, или нулевой блок, обычно предназначен для небольшой программы или фрагмента информации, помогающего системе управлять остальной частью структуры. Сразу за ним следует основной суперблок, который указывает системе, как интерпретировать все, что следует за ним. Далее... таблица inode И наконец, блоки данных, где находятся файлы и каталоги.
Каждый каталог — это не что иное, как... специальный файл, "список содержимого" Она связывает имена (файлов или подкаталогов) с номерами inode. Благодаря этому соответствию ядро может определить местоположение inode и, исходя из него, найти блоки данных, в которых хранится фактическая информация.
Иноды: «технические характеристики» каждого файла
В рамках этой архитектуры Иноды — это структуры, описывающие каждый файл или каталог.Они хранят не имя (которое указывается в записи каталога), а всю важную метаинформацию: права доступа, владельца, размеры, временные метки и указатели на блоки данных. Каждый inode содержит приблизительно следующую информацию:
- Идентификатор устройства где находится файловая система.
- Номер инода уникальный в пределах файловой системы.
- Размер файла в байтах.
- UID владельца и GID группы.
- Режим доступа: права на чтение, запись и выполнение для владельца, группы и других пользователей.
- Маркас де Тьемпо: время последнего изменения (mtime), время последнего доступа (atime) и время изменения самого inode (ctime).
- Количество жестких ссылок (Жесткие ссылки), указывающие на этот inode.
Ключевое значение имеет счетчик жестких ссылок: только файловая система. Это действительно освобождает inode и его блоки. Когда количество ссылок достигает нуля. Если файл имеет несколько разных имен, указывающих на один и тот же inode (жесткие ссылки), все они эквивалентны, без привилегированного «исходного» имени, в отличие от ярлыков Windows или символических ссылок, которые зависят от базового реального файла.
В то время как инод концентрирует «технические характеристики», суперблок концентрирует... «Глобальная техническая спецификация» файловой системыЭто включает в себя всё: от общего количества инодов до состояния сборки и интервала между принудительными проверками с помощью fsck. Если этот общий технический паспорт поврежден, при запуске начинают появляться довольно неприятные сообщения об ошибках.
Что именно содержит суперблок и почему он так важен?
Суперблок файловой системы ext2/ext3/ext4 хранит большой набор данных. основные метаданныеНе пытаясь перечислить все поля нижнего уровня, можно сказать, что оно включает в себя такую информацию, как:
- Общий размер файловой системы (в блоках).
- Размер блока который используется.
- Общее количество инодов и блоков и сколько из них бесплатны.
- Состояние файловой системы (чистый, с ошибками, собранный и т. д.).
- UUID файловой системы и метки, если таковая имеется.
- Как часто следует запускать fsck? (максимальное количество сборок, временные интервалы).
- Информация о журнале в ext3/ext4 (если существует, размер и т. д.).
Благодаря этим данным ядро или инструмент проверки знают, как перемещаться по таблице inode, как интерпретировать группы блоков, где найти резервные копии самого суперблока и другие подробности. Когда основной суперблок повреждается (из-за отключения электроэнергии, ошибки, физического сбоя или внезапного выключения), система остается... «дезориентирован» относительно внутренней структуры раздела.
Следовательно, если суперблок нечитаем или содержит противоречивые данные, система, как правило, не сможет смонтироваться при запуске. / правильно, и в итоге вы останетесь лишь в скорлупе. BusyBox/initramfs с сообщениями типа «невозможно смонтировать /root» или ошибками, связанными с /sys, /proc, /root/dev/consoleПо сути, происходит следующее: initramfs пытается смонтировать корневую файловую систему и аварийно завершает работу из-за повреждения базовых метаданных (суперблока).
Что такое «плохой суперблок» и почему он появляется?

Когда низкоуровневые инструменты говорят о плохой суперблокОни говорят о том, что суперблок, который они пытаются прочитать, считается недействительным: либо его невозможно физически прочитать (короткое чтение, ошибки ввода-вывода), либо данные, которые он видит, не соответствуют ожиданиям допустимой файловой системы ext.
Типичный случай — это выполнение fsck.ext4 o e2fsck При попытке доступа непосредственно к неисправному разделу возникает ошибка следующего вида: «Попытка чтения блока файловой системы привела к кратковременному результату… Возможно, это раздел нулевой длины?»Это сообщение обычно указывает на то, что программа проверки не обнаруживает согласованный суперблок в стандартном положении и подозревает, что раздел пуст, обрезан или сильно поврежден.
Причины, по которым суперблок может выйти из строя или выдать ошибки, весьма разнообразны, но наиболее распространенными являются следующие: внезапные отключения электроэнергии при интенсивной писательской деятельностиВнезапная разрядка батарей в ноутбуках, поврежденные сектора на диске, ошибки проводки, сбои в драйверах или файловой системе и, в меньшей степени, некорректная обработка разделов.
Хорошая новость в том, что разработчики ext2/ext3/ext4 проявили дальновидность: помимо основного суперблока, система также обеспечивает экономию ресурсов. резервные копии суперблоков в разных блоках диска. Эти копии позволяют "восстановить" файловую систему, которая, казалось бы, полностью повреждена, используя один из тех альтернативных суперблоков, которые все еще находятся в рабочем состоянии.
Резервные копии суперблоков: как их найти.
При создании файловой системы с помощью таких инструментов, как mkfs.ext4несколько генерируются автоматически резервные копии суперблоковВ самом сообщении о создании обычно содержится строка типа «Резервные копии суперблоков хранятся в блоках: 32768, 98304, 163840, …», которая указывает блоки, где были сохранены эти реплики.
Если у вас больше нет под рукой исходного сообщения mkfs, вы можете использовать следующий приём: mke2fs -n /dev/XXX (с параметром -n, "пробный запуск") на устройстве: таким образом, инструмент не перезаписывает файловую систему, а только Она имитирует процесс создания и показывает, какие блоки будут иметь суперблоки.которые обычно совпадают с уже имеющимися. Этот список позиций бесценен, когда основной суперблок становится непригодным для использования.
Как только вы узнаете места расположения резервных копий (например, блок 32768), вы сможете определить... Fsck что они ими пользуются, используя эту опцию. -b Чтобы указать альтернативный суперблок. Типичная команда будет выглядеть примерно так: fsck -y -b 32768 /dev/nvme0n1p3, что предписывает ему попытаться восстановить систему на основе копии суперблока, расположенной в этом конкретном блоке.
Как работает fsck/e2fsck при восстановлении системы с поврежденным суперблоком
Когда ты бежишь Fsck При работе с файловой системой ext и обнаружении несоответствий, система внутренне делегирует задачу другому механизму. e2fsck (для ext2/ext3/ext4). Этот инструмент работает с различными файловыми системами. проверить «пропуска»Он проверяет структуру inode, исследует каталоги, сравнивает количество свободных блоков, проверяет перекрестные ссылки и т. д. Если вы передали ему соответствующую опцию. -y o -pСистема попытается автоматически исправить все, что не требует сложного и разрушительного решения.
В конкретном случае а) плохой суперблок, если вы предоставите ему альтернативный суперблок с -be2fsck будет использовать эту копию в качестве эталона для организации системы. Затем он проверяет и исправляет поврежденные структуры, помечает действительно неисправные блоки, чтобы они больше никогда не использовались, и Восстановите файловую систему до тех пор, пока она не станет целостной., так далеко, насколько возможно.
В зависимости от степени повреждения, восстановление может быть практически незаметным (файловая система перемонтируется, и данные остаются нетронутыми) или, в тяжелых случаях, может привести к потере некоторых файлов или каталогов. Тем не менее, если проблема ограничивается одним поврежденным суперблоком и резервные копии целы, шансы на восстановление раздела довольно высоки.
Усовершенствованные инструменты для диагностики суперблоков и инодов.
Помимо fsck и e2fsck, экосистема Linux предоставляет еще несколько подобных инструментов. специализированные инструменты для исследования файловых систем ext подробно, включая информацию о суперблоках, дефектных блоках и параметрах сборки.
утилита дамп2фс Эта программа отображает очень подробную информацию о конфигурации и состоянии файловой системы ext2/ext3/ext4. Хотя её можно запустить с смонтированной системой, рекомендуется запускать её с несмонтированным разделом. Среди прочего, она позволяет вывести список файловых систем. блоки, помеченные как дефектные (-b)Обращайтесь только к информации о суперблоке. -h или явно указать, какую копию суперблока использовать с -o суперблок= и принудительно задать определенный размер блока с помощью -o размер блока= когда имеет место серьезная коррупция.
Со своей стороны, Tune2fs служит для изменить несколько параметров файловой системыМногие из них связаны с данными, которые появляются в суперблоке. Вы можете настроить частоту принудительной проверки файловой системы (fsck).-c y -C), или как часто, в лучшем случае (-i), изменить процент блоков, зарезервированных для корневого узла (-m o -r), добавить журнал в ext2 (-j) или зарезервировать блоки для определенной группы (-g), между прочим.
Еще один интересный инструмент отладкиИнтерактивный отладчик для файловой системы ext. Его можно открыть в режиме чтения или чтения/записи, и он содержит команды для Просмотреть статистику суперблока (show_super_stats, stats)Проверьте inode, связанный с файлом, с помощью состояниесписок удаленных inode с лсдел а в некоторых случаях даже отменить удаление с помощью таких команд, как ундельЭто также позволяет извлекать файлы из поврежденной файловой системы с помощью запись внутреннего файла внешний файлЭто очень полезно, когда вы предпочитаете восстанавливать данные, а не монтировать раздел.
Дефектные блоки и их взаимосвязь с суперблоком.
Частой причиной повреждения суперблоков и других метаданных является дефектные физические блоки на дискеЕсли поврежденный сектор совпадает с какой-либо из позиций в суперблоке или его копиях, раздел становится очень уязвимым. Именно поэтому существуют такие инструменты, как... плохие блоки Они важны при диагностике фактического состояния устройства.
В лице плохие блоки Вы можете просканировать раздел или диск и определить, какие блоки физически небезопасны, либо в режиме только для чтения (-n) или в режиме деструктивной записи (-w). Поддерживает регулировку размера блока (-b), читать списки известных поврежденных блоков (-i), записать результаты в файл (-o) и показать процент прогресса (-sЭтот список блоков затем можно передать в e2fsck или интегрировать во внутренний список поврежденных блоков файловой системы, чтобы никогда не используйте их в новых файлах.
Когда вы объединяете e2fsck с опцией -cПрограмма проверки использует данные о неисправных блоках для обнаружения и добавления этих блоков в список неисправных блоков. Если вы повторите... -c Дважды проводится более комплексный неразрушающий тест на чтение и письмо. Кроме того, с помощью -k Вы можете настроить систему таким образом, чтобы она сохраняла уже зарегистрированные дефектные блоки и добавляла только новые, обнаруженные в ходе проверки.
fsck и e2fsck: практические аспекты и основные параметры.
универсальная команда Fsck По сути, это интерфейс, который делегирует проверку соответствующему средству проверки в зависимости от типа файловой системы.e2fsck (для ext*, другие для XFS и т. д.). Вы можете явно указать тип с помощью -t или, наоборот, исключить конкретный вариант с помощью -т нет. Такие варианты, как -A Они позволяют проверить все системы, отмеченные для проверки. / И т.д. / FstabВ то время как -M избегайте прикосновения к установленным системам и -R Исключить корневой каталог (/) при использовании параметра -A.
Важно помнить, что Для несмонтированных файловых систем необходимо запустить fsck. или, в крайнем случае, смонтированный только для чтения. Попытка принудительного монтирования раздела с возможностью чтения и записи сопряжена с серьезным риском дальнейшего повреждения. Для производственных систем обычно используются автоматические проверки при загрузке или плановое техническое обслуживание.
Работая напрямую с e2fsckДоступны некоторые очень полезные дополнительные опции. Например, -p (или -a, ныне устаревшее) пытается выполнить автоматическую коррекцию без вмешательства, тогда как -n Откройте в режиме только для чтения и ответьте «нет» на все вопросы — идеально подходит для диагностики без каких-либо манипуляций. Что касается суперблоков, то есть опция... -b superblock_number позволяет использовать альтернативную копию, и -Размер -B Устанавливает определенный размер блока в случаях подозрения на коррупцию.
Суперблоки за пределами ext: программный RAID и XFS
Термин «суперблок» не ограничивается исключительно файловыми системами ext; он также встречается, например, в контексте Программный RAID в LinuxПри создании RAID-массива с mdadm (независимо от того, используется ли RAID-0, RAID-1 или более высокие уровни), подсистема md хранит метаданные на дисках, составляющих этот массив, и эти метаданные также называются суперблоками массива.
Команда типа mdadm –create /dev/md0 –level=0 –raid-devices=2 /dev/sdb /dev/sdc Она создает логическое устройство RAID-0 из двух дисков, и на выходе... mdadm –detail /dev/md0 Вы увидите поля типа "Superblock is persistent", что указывает на то, что этот массив хранит стабильный суперблок RAID на дискеАналогичная ситуация происходит с RAID-1, созданным с помощью mdadm –create /dev/md1 –level=1 …где каждый диск хранит метаданные, описывающие массив: UUID, имя, уровень, размер, статус и т. д.
Эти суперблоки RAID позволяют ядру автоматическое распознавание и сборка Массивы загружаются при запуске, даже если диски были перемещены с одного сервера на другой. Однако, на всякий случай, обычно рекомендуется создавать резервные копии конфигурации. /etc/mdadm/mdadm.confиспользуя такие команды, как mdadm –misc –detail –brief /dev/md? которые генерируют строки массива с метаданными, UUID и именем массива.
В мире XFSДругая файловая система, широко используемая на серверах, также работает со сложными метаданными и суперблочными структурами. Такие инструменты, как... xfs_info Они отображают техническую информацию о файловой системе (для этого требуется её монтирование), при этом xfs_metadump Это позволяет экспортировать метаданные в файл для анализа, и xfs_check y xfs_repair Они выполняют аналогичную роль, что и fsck/e2fsck для XFS. Кроме того, xfs_admin Это аналог программы tune2fs для XFS, работающей по принципу "грубой силы", позволяющей изменять метку или UUID, при этом система всегда должна быть размонтирована.
Во всех этих случаях, несмотря на различия во внутреннем формате, основная идея остается той же: существует Блок или набор блоков, описывающий общую структуру системы или массива.А если данные повреждаются, инструменты прибегают к использованию избыточных копий или метаданных для восстановления целостности.
Вся эта сеть суперблоков, резервных копий, таблиц inode и инструментов проверки может показаться поначалу запутанной, но как только вы поймете, что это такое... Суперблок — это компонент, который сообщает системе, «как устроена вся операция».Остальное складывается гораздо лучше: вы понимаете, почему отключение электроэнергии может оставить вас в BusyBox, почему e2fsck сохраняет, казалось бы, неработающие разделы, используя альтернативные копии, для чего нужны такие команды, как dumpe2fs, tune2fs, badblocks или debugfs, и как метаданные RAID или XFS следуют тому же принципу «мозга», описывающего целое, что позволяет вам диагностировать и восстанавливать неисправные системы с гораздо большим спокойствием. Поделитесь этой информацией, и больше пользователей узнают об этой теме.