Недавно у меня возникла проблема с настольным компьютером на Linux: внешний жесткий диск объемом 5 ТБ перестал монтироваться, а файловый менеджер выдал сообщение об ошибке «не удается прочитать суперблок». В этой статье я расскажу о своих действиях для устранения этой ошибки, и, возможно, мои советы помогут вам, если вы столкнулись с подобной ситуацией.
Прежде чем перейти к решению, позвольте мне рассказать о некоторых основных аспектах жестких дисков и файловых систем в Linux, чтобы вы могли полностью понять свои действия. Если эти детали вам не важны, вы можете сразу перейти к решению. Жесткий диск (HDD) представляет собой магнитный носитель, в то время как твердотельный накопитель (SSD) функционирует на основе электронной памяти.
Содержание статьи
- 1 Структура HDD
- 2 Физические размеры секторов против логических размеров секторов.
- 3 Согласование секций
- 4 Настройка выравнивания секций SSD
- 5 Элементы в файловой системе
- 6 Суперблок
- 7 Не удается считать суперблок.
- 8 Создание резервных копий файлов на жестком диске
- 9 Внешний жесткий диск стал доступен только для чтения?
- 10 Совет
- 11 Заключение
Структура HDD
Жесткий диск обычно состоит из нескольких круглых пластин, установленных вертикально, и центрального шпинделя, который вращает их. Каждая из пластин имеет магнитное покрытие, предназначенное для записи информации. Поверхность пластин разбита на десятки тысяч дорожек, что напоминает беговые дорожки в спортивных состязаниях.

Жесткие диски представляют собой высокотехнологичные устройства, которые могут легко выйти из строя при падении на поверхность.
Каждая дорожка на диске делится на сектора. Обычно на одной дорожке содержится несколько сотен секторов, и каждый из них имеет одинаковую длину. Сектор представляет собой наименьшую единицу для считывания данных с накопителя. Это значит, что даже если требуется лишь часть данных из сектора, головка чтения-записи извлекает информацию из всего сектора. В традиционном формате один сектор вмещает 512 байт данных. В 2009 году была внедрена схема 4К, известная как расширенный формат, для улучшения надежности дисков и увеличения их емкости. С января 2011 года большинство новых жестких дисков имеют возможность хранения 4096 байт данных в одном секторе.
Физические размеры секторов против логических размеров секторов.
Несмотря на то что современные жесткие диски применяют улучшенный формат 4К, операционные системы продолжают рассчитывать на секторный размер в 512 байт. В результате прошивка HDD разбивает физический сектор 4К на несколько логических, чаще всего по 512 байт. Для проверки физического и логического размера сектора HDD в Linux можно воспользоваться командой fdisk.
fdisk - l /dev/sda
На скриншоте показано, что физический размер сектора моего жесткого диска равен 4096 байтам, в то время как логический размер сектора составляет 512 байт. Размер I/O представляет собой минимальные блоки данных, которые операционная система считывает с диска.
Согласование секций
Применение прошивки для формирования логического сектора может негативно сказаться на производительности, особенно в случае, если разделы файловой системы не совпадают с физическими секторами. Для правильного выравнивания разделов необходимо соблюсти два условия:
- Число секторов в каждом разделе должно быть кратно 8, так как один физический сектор включает в себя 8 логических секторов.
- Первый логический сектор каждого раздела должен совпадать с первым физическим сектором. Учитывая, что сектор 0 — это первый сектор всего диска, это подразумевает, что начальный сектор для каждого раздела должен быть кратен 8, то есть может быть сектором 0, 8, 16 и так далее.
При разделении жесткого диска необходимо обратить внимание на две основные таблицы разделов.
- MBR: Главная загрузочная запись (Master Boot Record).
- GPT: GUID-таблица разделов.
При приобретении нового жесткого диска лучше всего выбрать формат GPT для его разбиения. Оба формата, MBR и GPT, резервируют несколько секторов в начале диска, поэтому рекомендуется оставить небольшой запас места (например, 1 МиБ) перед первым разделом. Чтобы обеспечить правильное выравнивание разделов с физическими секторами, используйте сектор в качестве единицы измерения при разбиении диска.
С помощью утилиты parted можно быстро определить, совпадают ли разделы вашего диска с физическими секторами. Parted — это инструмент для редактирования разделов диска, который работает с различными форматами таблиц разделов, такими как MBR и GPT.
Сначала необходимо указать утилите parted ваш диск. В данном случае я использую /dev/sdb в качестве примера.
parted /dev/sdb
После этого введите p для отображения таблицы разделов на диске. Затем выполните следующую команду, чтобы проверить правильность выравнивания разделов.
align-check opt номер-раздела
Скриншот ниже демонстрирует, что первые два раздела имеют неправильное выравнивание, тогда как третий раздел выровнен корректно.

Настройка выравнивания секций SSD
Структура SSD значительно отличается от структуры HDD. Наименьшая единица SSD называется ячейкой. Несколько последовательных ячеек формируют страницу, а множество страниц объединяются в блок. Чтение и запись данных осуществляются на уровне страниц. Размер страниц в SSD может различаться в зависимости от модели и производителя. В командной строке Linux нет простого метода для определения размера страницы, так как слой трансляции флеш-памяти заставляет операционную систему воспринимать SSD как обычный жесткий диск. Операционная система не учитывает страницы SSD и продолжает использовать сектора для описания адресов на SSD.
Стандартные размеры страниц составляют 8KiB, 16KiB и 32KiB. Ключевым моментом является выравнивание разделов на SSD. При отсутствии выравнивания для операций чтения или записи потребуется дополнительно одна страница, что приводит к снижению производительности и сокращению срока службы SSD. Для корректного выравнивания разделов достаточно оставить одну пустую страницу (например, 32KiB) в начале SSD и убедиться, что размер каждого раздела кратен размеру страницы.
При использовании GParted для формирования первого раздела на SSD, автоматически выделяется 1MiB незанятого пространства перед ним, что соответствует 32 пустым страницам (32 KiB * 32 = 1024 KiB). Это нормально. На следующем изображении показан процесс создания системного раздела EFI (ESP) для компьютера с UEFI. Размер этого раздела составляет 512MiB и имеет файловую систему FAT32.

Элементы в файловой системе
В файловых системах существует понятие, известное как блок, которое аналогично сектору на дисковых устройствах. Многие люди путаются в этих терминах, но различия между ними достаточно просты. При создании раздела на диске вы используете сектора для его определения. А когда вы форматируете этот раздел с помощью файловой системы, образуются блоки.
Операционная система и файловая система взаимодействуют с данными на диске, оперируя блоками, а не секторами. Блок обычно представляет собой кратное значение сектора. Почему же мы не работаем с секторами напрямую? Блок скрывает физические особенности диска. Если вы обращаетесь к сектору (вычисляя его адрес), необходимо использовать систему CHS (цилиндр-головка-сектор). Это необходимо, поскольку жесткий диск состоит из нескольких пластин. Вам нужно знать, на какой пластине и каком треке расположен сектор. В случае обращения к блоку вы просто используете номера блоков: 0, 1, 2 и так далее, не углубляясь в физические детали диска. Каждый блок соотносится с сектором (или несколькими секторами) через систему логической адресации блоков (LBA).
Суперблок
Первый блок диска или раздела именуется суперблоком, который является основным. Он может быть подвержен повреждениям, например, из-за внезапного отключения электроэнергии. Для предотвращения потерь существуют резервные копии суперблока, хранящиеся в группе блоков.
- главный суперблок
- резервный суперблок можно назвать дополнительным суперблоком
Не удается считать суперблок.
Есть несколько факторов, из-за которых ваша операционная система не в состоянии считать суперблок с вашего жесткого диска.
- Жесткий диск упал на пол, что привело к повреждению суперблока. В большинстве случаев это связано с физическими повреждениями определённых секторов устройства.
- Внезапно произошло отключение электроэнергии. Из-за того что суперблок хранится в оперативной памяти, при потере питания могут возникнуть значительные изменения в суперблоке, которые не успели быть сохранены на диске.
Если основной суперблок поврежден, файловую систему не удастся смонтировать, и операционная система, скорее всего, выдаст сообщение о том, что «не удается прочитать суперблок», при попытке ее монтирования. Восстановить поврежденный суперблок можно только из резервных копий. В следующем руководстве описаны шаги по восстановлению суперблока для файловых систем ext4 и Btrfs. Если ваш жесткий диск является внешним, и поврежденная файловая система — это корневая, потребуется загрузка компьютера с помощью загрузочной флешки Linux Live USB.
Восстановление суперблока в файловой системе ext4.
Установите название устройства с поврежденным разделом.
sudo parted - l
Укажите, где находятся резервные суперблоки.
sudo mke2fs - n /dev/xxx
Имя устройства для моего раздела жесткого диска — /dev/sdb1, поэтому я запускаю команду.
sudo mke2fs - n /dev/sdb1
Программа уведомит вас о том, что в разделе имеется файловая система ext4; для продолжения нажмите y. Не переживайте, параметр — n заставляет mke2fs не создавать файловую систему.
mke2fs 1.45.5 (07-Jan-2020) /dev/sdb1 содержит файловую систему ext4 с меткой 'Stretch', последний раз смонтированную на /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353732 в четверг, 28 января 2021 года в 02:43:43 Продолжить? (y, N) y Создание файловой системы с 7864320 блоками по 4k и 1966080 инодами UUID файловой системы: fcae3dc8-ee11-412c-97f0-27106601314e Резервные суперблоки сохранены в блоках: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
Внизу представлено местоположение резервных суперблоков. Затем выполните восстановление суперблока из первой резервной копии.
sudo e2fsck - b 32768 /dev/xxx
Теперь вы должны иметь возможность смонтировать свой раздел ext4.
Восстановление суперблока в файловой системе btrfs
Установите название устройства с поврежденным разделом.
sudo parted - l
Установите инструмент Btrfs.
sudo apt install btrfs-progs
Далее введите следующую команду для восстановления суперблока.
sudo btrfs rescue super-recover - v /dev/xxx
Если вы увидите сообщение «Все суперблоки действительны, восстановление не требуется», ознакомьтесь с системным журналом.
sudo dmesg
Ниже представлено сообщение, указывающее на повреждение журнала, что препятствует его воспроизведению.
BTRFS: error (device sdb1) in btrfs_run_delayed_refs:2227: errno=-5 IO failure BTRFS: error (device sdb1) in btrfs_replay_log:2287: errno=-5 IO failure (Failed to recover log tree)
В данном случае необходимо использовать следующую команду для удаления дерева журнала файловой системы.
sudo btrfs rescue zero-log /dev/xxx
Теперь вы можете настроить файловую систему Btrfs.
Если у вас периодически появляются ошибки ввода-вывода на файловой системе Btrfs, вы можете настроить задание в crontab для автоматической очистки дерева журнала файловой системы один раз в день.
sudo crontab - e
Вставьте эту строку в нижнюю часть файла crontab.
@daily umount /dev/xxxbtrfs восстановление нулевого лога /dev/xxx && mount - a
Сохраните файл и закройте его.
Создание резервных копий файлов на жестком диске
Для того чтобы избежать утраты данных, следует воспользоваться программой, например, Duplicati, которая обеспечивает автоматическое резервное копирование файлов в облачное хранилище. Duplicati шифрует ваши файлы, обеспечивая их защиту от несанкционированного доступа.
- Как применять Duplicati для создания резервных копий файлов на Debian, Ubuntu и Linux Mint.
Внешний жесткий диск стал доступен только для чтения?
В некоторых случаях в файловой системе может возникнуть ошибка, из-за которой Linux подключает внешний HDD только в режиме чтения. Для устранения этой проблемы нужно отмонтировать внешний HDD и затем воспользоваться командной утилитой e2fsck для исправления ошибок файловой системы.
sudo e2fsck /dev/sdb1
Затем введите «y», чтобы оптимизировать или исправить файловую систему, после чего вы сможете подключить внешний HDD для записи.
Совет
- Некоторые материнские платы способны заряжать USB-устройства даже после завершения работы операционной системы. Если вы используете внешний жесткий диск, стоит отключать питание для USB-портов при выключении системы, чтобы диск прекратил вращение. Это поможет увеличить его долговечность. К примеру, на моей материнской плате ASUS PRIME z270 я захожу в расширенные настройки UEFI и отключаю опцию «зарядка USB-устройств в состоянии S5».
Заключение
Надеюсь, это руководство было полезным для вас в решении проблемы «невозможно прочитать суперблок» в Linux. Если вы считаете этот пост ценным, подписывайтесь на нашу бесплатную рассылку, чтобы не пропустить другие советы и рекомендации.

