- Восстановление ext4 суперблоков
- Восстановление суперблоков ext4
- Восстановление суперблоков ext4
- Суперблок в линуксе
- Блок файловой системы
- Группы блоков файловой системы
- Так что же такое суперблок?
- Как увидеть, что хранится в суперблоке?
- Как восстановить поврежденный суперблок?
- Как восстановить файловую систему в fsck
- Немного теории
- Основы работы с fsck
- Как восстановить файловую систему в fsck
- Восстановление файловой системы
- Восстановление поврежденного суперблока
- Проверка чистой файловой системы
- Битые сектора
- Установка файловой системы
- Проверка всех файловых систем
- Проверка примонтированных файловых систем
- Просмотр информации
- Выводы
Восстановление ext4 суперблоков
Недавно мой внешний корпус жесткого диска вышел из строя (сам жесткий диск включается в другом корпусе). Тем не менее, в результате оказывается, что его файловая система EXT4 повреждена.
Диск имеет один раздел и использует таблицу разделов GPT (с меткой ears ).
fdisk -l /dev/sdb шоу:
testdisk показывает, что раздел не поврежден:
. но раздел не удается смонтировать:
fsck сообщает о неверном суперблоке:
и e2fsck сообщает об аналогичной ошибке:
mke2fs -n (примечание, -n ) возвращает суперблоки:
. но попытка «e2fsck -b [block]» для каждого блока не удалась:
Однако, как я понимаю, именно там были суперблоки, когда создавалась файловая система, что не обязательно означает, что они все еще не повреждены.
Я также провел testdisk глубокий поиск, если кто-нибудь может расшифровать журнал. Упоминается много записей, как:
Запуск e2fsck с этими значениями дает:
Я попробовал это со всеми суперблоками в testdisk.log
. все с тем же e2fsck сообщением об ошибке.
В моей последней попытке я пробовал разные смещения файловой системы. Для каждого смещения i , где i один из 31744, 32768, 1048064, 1049088:
. и бегу testdisk /dev/loop0 , я не нашел ничего интересного.
Я был довольно исчерпывающим, но есть ли способ восстановить файловую систему, не прибегая к низкоуровневым инструментам восстановления файлов ( foremost / photorec )?
Источник
Восстановление суперблоков ext4
В последнее время мой внешний корпус жесткого диска не удался (сам жесткий диск подключается в другом корпусе). Однако, как представляется, его файловая система EXT4 повреждена.
Привод имеет один раздел и использует таблицу разделов GPT (с меткой ears ).
fdisk -l /dev/sdb показывает:
testdisk показывает, что раздел не поврежден:
. но раздел не смонтирован:
fsck сообщает о недопустимом суперблоке:
и e2fsck сообщает об аналогичной ошибке:
mke2fs -n (обратите внимание, -n ) возвращает суперблоки:
. но попытка «e2fsck -b [block]» для каждого блока выходит из строя:
Однако, насколько я понимаю, именно там были суперблоки, когда была создана файловая система, что не обязательно означает, что они все еще не повреждены.
Я также использовал testdisk глубину поиск , если кто-то может дешифровать журнал. Он упоминает много записей, таких как:
Запуск e2fsck с этими значениями дает:
Я пробовал это со всеми суперблоками в testdisk.log
. все с тем же сообщением e2fsck .
В моей последней попытке я пробовал разные смещения файловой системы. Для каждого смещения i , где i один из 31744, 32768, 1048064, 1049088:
. и работает testdisk /dev/loop0 , я не нашел ничего интересного.
Я был довольно исчерпывающим, но есть ли каким-либо образом , чтобы восстановить файловую систему, не прибегая к инструментам восстановления файлов низкого уровня ( foremost / photorec )
Источник
Восстановление суперблоков ext4
В последнее время мой внешний корпус жесткого диска не удался (сам жесткий диск входит в другой корпус). Однако, как представляется, его файловая система EXT4 повреждена.
Привод имеет один раздел и использует таблицу разделов GPT (с ears надписи).
fdisk -l /dev/sdb показывает:
testdisk показывает, что раздел не поврежден:
… но раздел не смонтирован:
fsck сообщает о недопустимом суперблоке:
и e2fsck сообщает об аналогичной ошибке:
mke2fs -n (note, -n ) возвращает суперблоки:
… но попытка «e2fsck -b [block]» для каждого блока выходит из строя:
Однако, как я понимаю, именно там были суперблоки, когда была создана файловая система, что не обязательно означает, что они все еще не повреждены.
Я также testdisk глубокий поиск testdisk если кто-то может дешифровать журнал. В нем упоминается много записей, таких как:
Запуск e2fsck с этими значениями дает:
Я пробовал это со всеми суперблоками в testdisk.log
… все с тем же сообщением об ошибке e2fsck .
В моей последней попытке я пробовал разные смещения файловой системы. Для каждого смещения i , где i является одним из 31744, 32768, 1048064, 1049088:
… и запустив testdisk /dev/loop0 , я не нашел ничего интересного.
Я был довольно исчерпывающим, но есть ли способ восстановить файловую систему, не прибегая к инструментам восстановления файлов низкого уровня ( foremost / photorec )?
К сожалению, мне не удалось восстановить файловую систему, и мне приходилось прибегать к методам восстановления данных более низкого уровня (хорошо подведенные в записи Wibuntu для восстановления данных Ubuntu), из которых Sleuth Kit оказался наиболее полезным.
Маркировка как ответ для чистоты.
Возможно, это уже устарело, но несколько предложений:
Если вы абсолютно уверены, что исходный размер блока равен 4096, как утверждается в testdisk , вы можете переписать суперблоки на диск с помощью mke2fs -S . От человека:
Если вы не уверены в правильном блоке, используйте mke2fs -n -b 2048 /dev/sdb1 и попробуйте все резервные копии суперблока, которые эта команда дает, а после этого – то же самое, но с использованием последнего блока размером 1024.
Как уже упоминалось, вероятно устаревший, но fdisk (AFAIK) не поддерживает GPT-диски. Вам нужно использовать разделенный или какой-либо другой инструмент.
Я просто протестировал виртуальную машину с запуском Debian (ядро 2.6.32-5-486) и отформатировал виртуальный диск как GPT с помощью разделенных …
Это версия fdisk 2.17.2 (util-linux-ng).
mkfs и fsck должны поднять «реальный» раздел в порядке, но для проверки того, что таблица разделов GPT не повреждена, вы должны были использовать GNU parted.
У меня возникла такая же проблема при установке после перезагрузки моего компьютера. В моем случае этого было достаточно, чтобы запустить parted и выдать команду, например:
а затем выйти и попытаться перемонтировать. Может быть, это тоже поможет.
Источник
Суперблок в линуксе
Что такое суперблок в Линуксе. Попробуем разобраться на примере файловой системы ext(2|3|4), которая используется в линуксе по-умолчанию. Но для начала рассмотрим несколько простых понятий
Блок файловой системы
После форматирования диска или раздела сектора на диске разделены на небольшие группы. Такая группа секторов называется блоком. Размер блока может быть разным и задается как параметр ключа команды форматирования. Например
ключ -b задает размер блока в байтах, в данном случае размер блока будет 4096 байт
Размер блока может быть разным. Это зависит от типа файловой системы
- Ext2 — 1Кб, 2Кб, 4Кб, 8Кб
- Ext3 — 1Кб, 2Кб, 4Кб, 8Кб
- Ext4 — от 1Кб до 64Кб
При выборе размера блока нужно учесть ряд моментов
- Максимальный размер файла
- Максимальный размер файловой системы
- Производительность
Размер блока влияет на скорость чтения/записи с диска. Представим себе файл размеров в несколько сот мегабайт, который считывается с диска блоками по 1Кб. Тот же файл будет считываться быстрее если размер блока файловой системы будет 4Кб или 8Кб. Это ясно. Поэтому при форматировании имеет смысл задать блок большего размера, если планируется использовать файлы большого размера
Также верно и обратное утверждение. В случае хранения небольших файлов лучше использовать блоки минимального размера
Ядро Linux работает с размером блока файловой системы, а не с размером сектора диска (обычно 512 байт). Важно понимать, что размер блока файловой системы не может быть меньше размера сектора диска и всегда будет кратным ему. Также ядро ожидает, что размер блока файловой системы будет меньше или равно размеру системной страницы
Размер системной страницы можно увидеть выполнив команду
Группы блоков файловой системы
Блоки, о которых мы говорили ранее обьеденяются в группы блоков, что позитивно отражается на операциях чтения/записи так как уменьшается время чтения/записи больших обьемов данных
Файловая система EXT разбивает все доспупное пространство на группы блоков равного размера. Эти группы располагаются последовательно, одна за другой
Загрузочный блок | Группа блоков 1 | Группа блоков 2 | Группа блоков 2 | Группа блоков 3 |
Количество блоков в группе неизменно и может быть расчитано по формуле
Взглянем на вывод команды mke2fs
Отметим то, о чем говорили выше
- Размер блока 4096 байт
- 800 блоковых групп
- 32768 блоков в группе (8*4096)
Также видны блоки в которых хранятся резервные копии суперблока
Так что же такое суперблок?
Самым простым определением суперблока могло бы быть следующее утверждение
Суперблок — это блок в котором хранятся метаданные файловой системы
Аналогично тому, как i-ноды хранят метаданные о файлах, суперблок хранит метаданные о файловой ситеме. Если вдруг суперблок поврежден, то не возможно будет примонтировать файловую систему. Обычно при загрузке система проверяет суперблок и при необходимости исправляет его, что в результате приводит к корректному монтированию файловых систем
Некоторые данные, которые хранятся в суперблоке. Например
- Количество блоков в файловой системе
- Количество свободных блоков в файловой системе
- Количество i-нод в блоковой группе
- Блоки в блоковой группе
- Количество запусков файловой системы со времени последней проверки fsck
- UUID файловой системы
- Состояние файловой системы (была ли корректно размонтирована, обнаруженые ошибки и т.д.)
- Тип файловой системы
- Операционная система в которой была отформатирована данная файловая система
- Время последнего монтирования
- Время последней записи
Основная копия суперблока хранится в самой первой группе блоков. Она названа основной, потому что считывается системой в процессе монтирования файловой системы. Так как отсчет блоковых групп начинается с 0 то можно говорить о том, что суперблок хранится в начале блоковой группы 0
Суперблок весьма критичен для файловой системы. Поэтому в каждой блоковой группе есть копии суперблока. Это дает нам право думать, что поврежденный суперблок будет восстановлен всякий раз, когда это будет необходимо
Может показаться, что наличие в каждой блоковой группе резервных копий суперблока приводит к потреблению большого дискового пространства. Для этого в последних версиях систем была реализована функция «sparse_super» целью которой было создание резервных копий в группе блоков 0, 1, 3, 5, 7
Как увидеть, что хранится в суперблоке?
Для этого воспользуемся командой dumpe2fs
Еще один вывод команды показывает информацию о суперблоке
Как восстановить поврежденный суперблок?
Для начала нужно проверить файловую систему утилитой fsck
В случае если fsck обнаружила ошибку чтения суперблока можно попробовать сделать следующее:
Для начала определим где расположены резервные копии суперблока. Для этого выполняем
ключ -n говорит команде не создавать файловую систему, но показать вывод какой мог бы быть при реальном создании файловой системы
Далее восстановливаем суперблок из бекапа при помощи e2fsck
В данном случае в блоке 819200 хранится резервная копия суперблока. После применения команды пробуем снова монтировать файловую систему. Либо как вариант использовать ключ sb команды mount, который указывает на расположение копии суперблока
В данном случае считываем копию суперблока из блока 819200
Источник
Как восстановить файловую систему в fsck
Из-за различных неполадок или неожиданного отключения компьютера файловая система может быть повреждена. При обычном выключении все файловые системы монтируются только для чтения, а все не сохраненные данные записываются на диск.
Но если питание выключается неожиданно, часть данных теряется, и могут быть потерянны важные данные, что приведет к повреждению самой файловой системы. В этой статье мы рассмотрим как восстановить файловую систему fsck, для нескольких популярных файловых систем, а также поговорим о том, как происходит восстановление ext4.
Немного теории
Как вы знаете файловая система содержит всю информацию обо всех хранимых на компьютере файлах. Это сами данные файлов и метаданные, которые управляют расположением и атрибутами файлов в файловой системе. Как я уже говорил, данные не сразу записываются на жесткий диск, а некоторое время находятся в оперативной памяти и при неожиданном выключении, за определенного стечения обстоятельств файловая система может быть повреждена.
Современные файловые системы делятся на два типа — журналируемые и нежурналируемые. Журналиуемые файловые системы записывают в лог все действия, которые собираются выполнить, а после выполнения стирают эти записи. Это позволяет очень быстро понять была ли файловая система повреждена. Но не сильно помогает при восстановлении. Чтобы восстановить файловую систему linux необходимо проверить каждый блок файловой системы и найти поврежденные сектора.
Для этих целей используется утилита fsck. По сути, это оболочка для других утилит, ориентированных на работу только с той или иной файловой системой, например, для fat одна утилита, а для ext4 совсем другая.
В большинстве систем для корневого раздела проверка fsck запускается автоматически, но это не касается других разделов, а также не сработает если вы отключили проверку.
Основы работы с fsck
В этой статье мы рассмотрим ручную работу с fsck. Возможно, вам понадобиться LiveCD носитель, чтобы запустить из него утилиту, если корневой раздел поврежден. Если же нет, то система сможет загрузиться в режим восстановления и вы будете использовать утилиту оттуда. Также вы можете запустить fsck в уже загруженной системе. Только для работы нужны права суперпользователя, поэтому выполняйте ее через sudo.
А теперь давайте рассмотрим сам синтаксис утилиты:
$ fsck [опции] [опции_файловой_системы] [раздел_диска]
Основные опции указывают способ поведения утилиты, оболочки fsck. Раздел диска — это файл устройства раздела в каталоге /dev, например, /dev/sda1 или /dev/sda2. Опции файловой системы специфичны для каждой отдельной утилиты проверки.
А теперь давайте рассмотрим самые полезные опции fsck:
- -l — не выполнять другой экземпляр fsck для этого жесткого диска, пока текущий не завершит работу. Для SSD параметр игнорируется;
- -t — задать типы файловых систем, которые нужно проверить. Необязательно указывать устройство, можно проверить несколько разделов одной командой, просто указав нужный тип файловой системы. Это может быть сама файловая система, например, ext4 или ее опции в формате opts=ro. Утилита просматривает все файловые системы, подключенные в fstab. Если задать еще и раздел то к нему будет применена проверка именно указанного типа, без автоопределения;
- -A — проверить все файловые системы из /etc/fstab. Вот тут применяются параметры проверки файловых систем, указанные в /etc/fstab, в том числе и приоритетность. В первую очередь проверяется корень. Обычно используется при старте системы;
- -C — показать прогресс проверки файловой системы;
- -M — не проверять, если файловая система смонтирована;
- -N — ничего не выполнять, показать, что проверка завершена успешно;
- -R — не проверять корневую файловую систему;
- -T — не показывать информацию об утилите;
- -V — максимально подробный вывод.
Это были глобальные опции утилиты. А теперь рассмотрим опции для работы с файловой системой, их меньше, но они будут более интересны:
- -a — во время проверки исправить все обнаруженные ошибки, без каких-либо вопросов. Опция устаревшая и ее использовать не рекомендуется;
- -n — выполнить только проверку файловой системы, ничего не исправлять;
- -r — спрашивать перед исправлением каждой ошибки, используется по умолчанию для файловых систем ext;
- -y — отвечает на все вопросы об исправлении ошибок утвердительно, можно сказать, что это эквивалент a.
- -c — найти и занести в черный список все битые блоки на жестком диске. Доступно только для ext3 и ext4;
- -f — принудительная проверка файловой системы, даже если по журналу она чистая;
- -b — задать адрес суперблока, если основной был поврежден;
- -p — еще один современный аналог опции -a, выполняет проверку и исправление автоматически. По сути, для этой цели можно использовать одну из трех опций: p, a, y.
Теперь мы все разобрали и вы готовы выполнять восстановление файловой системы linux. Перейдем к делу.
Как восстановить файловую систему в fsck
Допустим, вы уже загрузились в LiveCD систему или режим восстановления. Ну, одним словом, готовы к восстановлению ext4 или любой другой поврежденной ФС. Утилита уже установлена по умолчанию во всех дистрибутивах, так что устанавливать ничего не нужно.
Восстановление файловой системы
Если ваша файловая система находится на разделе с адресом /dev/sda1 выполните:
sudo fsck -y /dev/sda1
Опцию y указывать необязательно, но если этого не сделать утилита просто завалит вас вопросами, на которые нужно отвечать да.
Восстановление поврежденного суперблока
Обычно эта команда справляется со всеми повреждениями на ура. Но если вы сделали что-то серьезное и повредили суперблок, то тут fsck может не помочь. Суперблок — это начало файловой системы. Без него ничего работать не будет.
Но не спешите прощаться с вашими данными, все еще можно восстановить. С помощью такой команды смотрим куда были записаны резервные суперблоки:
sudo mkfs -t ext4 -n /dev/sda1
На самом деле эта команда создает новую файловую систему. Вместо ext4 подставьте ту файловую систему, в которую был отформатирован раздел, размер блока тоже должен совпадать иначе ничего не сработает. С опцией -n никаких изменений на диск не вноситься, а только выводится информация, в том числе о суперблоках.
Теперь у нас есть шесть резервных адресов суперблоков и мы можем попытаться восстановить файловую систему с помощью каждого из них, например:
sudo fsck -b 98304 /dev/sda1
После этого, скорее всего, вам удастся восстановить вашу файловую систему. Но рассмотрим еще пару примеров.
Проверка чистой файловой системы
Проверим файловую систему, даже если она чистая:
sudo fsck -fy /dev/sda1
Битые сектора
Или еще мы можем найти битые сектора и больше в них ничего не писать:
sudo fsck -c /dev/sda1
Установка файловой системы
Вы можете указать какую файловую систему нужно проверять на разделе, например:
sudo fsck -t ext4 /dev/sdb1
Проверка всех файловых систем
С помощью флага -A вы можете проверить все файловые системы, подключенные к компьютеру:
Но такая команда сработает только в режиме восстановления, если корневой раздел и другие разделы уже примонтированы она выдаст ошибку. Но вы можете исключить корневой раздел из проверки добавив R:
Или исключить все примонтированные файловые системы:
Также вы можете проверить не все файловые системы, а только ext4, для этого используйте такую комбинацию опций:
sudo fsck -A -t ext4 -y
Или можно также фильтровать по опциям монтирования в /etc/fstab, например, проверим файловые системы, которые монтируются только для чтения:
sudo fsck -A -t opts=ro
Проверка примонтированных файловых систем
Раньше я говорил что нельзя. Но если другого выхода нет, то можно, правда не рекомендуется. Для этого нужно сначала перемонтировать файловую систему в режим только для чтения. Например:
sudo mount -o remount,ro /dev/sdb1
А теперь проверка файловой системы fsck в принудительном режиме:
sudo fsck -fy /dev/sdb1
Просмотр информации
Если вы не хотите ничего исправлять, а только посмотреть информацию, используйте опцию -n:
sudo fsck -n /dev/sdb1
Выводы
Вот и все, теперь вы знаете как выполняется восстановление файловой системы ext4 или любой другой, поддерживаемой в linux fsck. Если у вас остались вопросы, спрашивайте в комментариях!
На десерт сегодня видео на английском про различия файловых систем ext4 и xfs, как обычно, есть титры:
Источник