Диск Ext3 не будет монтироваться после сбоя питания; как восстановить файлы?

13941
privatehuff

После недавнего сбоя питания, из-за которого мой linux box (Ubuntu 8.10) быстро отключился дважды из нормального рабочего состояния, у меня есть диск, который не будет монтироваться.

ОБНОВЛЕНИЕ: диск иногда монтируется, но отображается как совершенно пустой (даже не потерянный + найденный) и показывает 14,9 ГБ свободного места (это диск на 500 ГБ). Когда я пытаюсь что-либо сделать, он выдает ошибку разрешения, и диск отключается. (или, возможно, не был действительно установлен в первую очередь?)

Вот сообщение об ошибке, когда я пытаюсь смонтировать:

~ $ sudo mount -a mount: неверный тип fs, неверный параметр, плохой суперблок в / dev / sdd1, отсутствует кодовая страница или вспомогательная программа, или другая ошибка В некоторых случаях полезная информация находится в системном журнале - попробуйте Dmesg | хвост или около того

Так, может быть, укажите тип фс?

~ $ sudo mount -t ext3 / dev / sdd1 / media / disk-7 mount: неверный тип fs, неверный параметр, плохой суперблок в / dev / sdd1, отсутствует кодовая страница или вспомогательная программа, или другая ошибка В некоторых случаях полезная информация находится в системном журнале - попробуйте Dmesg | хвост или около того

Нет же Так что-то напутало?

~ $ sudo fsck / dev / sdd1 fsck 1.41.3 (12 октября 2008 г.) e2fsck 1.41.3 (12 октября 2008 г.) / dev / sdd1: восстановление журнала fsck.ext3: при попытке открыть файл / dev / sdd1 такой файл или каталог отсутствуют Предупреждение ... fsck.ext3 для устройства / dev / sdd1 завершено с сигналом 11.

Поиск по сигналу 11 не был обнадеживающим, но я нашел несколько других способов восстановить диск:

~ $ sudo e2fsck / dev / sdd1 e2fsck 1.41.3 (12 октября 2008 г.) / dev / sdd1: восстановление журнала e2fsck: нет такого файла или каталога при попытке открыть / dev / sdd1  Суперблок не может быть прочитан или не описывает правильный ext2 файловая система. Если устройство действительно, и оно действительно содержит ext2 файловая система (а не swap или ufs или что-то еще), то суперблок поврежден, и вы можете попробовать запустить e2fsck с альтернативным суперблоком: e2fsck -b 8193 [устройство] 

Все еще надеясь, что этот сбой как-то связан с отключением питания, я предполагаю, что суперблок поврежден или что-то в этом роде, и попробуйте другой: (Сначала я определяю, что мой размер блока составляет 32 КБ, используя makefs -n)

~ $ sudo e2fsck -b 32768 / dev / sdd1 e2fsck 1.41.3 (12 октября 2008 г.) Флаг восстановления ext3 снят, но в журнале есть данные. Флаг восстановления не установлен в резервном суперблоке, так что журнал все равно работает. / dev / sdd1: восстановление журнала e2fsck: журнал должен быть не менее 1024 блоков при восстановлении  ext3 журнал / dev / sdd1

За Avery Payne ниже я попробовал следующее:

sudo mount -t ext2 -o ro / dev / sdd1 / media / disk-7

Но получил это сообщение об ошибке:

mount: неверный тип fs, неверный параметр, плохой суперблок в / dev / sdd1, отсутствует кодовая страница или вспомогательная программа, или другая ошибка В некоторых случаях полезная информация находится в системном журнале - попробуйте Dmesg | хвост или около того ~ $ dmesg | хвост [261157.639721] EXT2-fs: sdd1: не удалось подключить из-за неподдерживаемых дополнительных функций (4).

И вот где я застрял. Я пробовал каждый из перечисленных резервных суперблоков и получал тот же результат. Если это поможет, шаг «восстановление журнала» займет много времени, прежде чем он перейдет к тому, чтобы сказать мне, что он не работает.

Честно говоря, меня не волнует возвращение состояния диска за несколько минут до сбоя, а только восстановление 400+ ГБ других данных, которые находятся на нем. Если кто-нибудь знает что-нибудь еще, что я могу попробовать, утилиты или методы восстановления данных ext3, и т.д., я был бы очень признателен!

5

6 ответов на вопрос

3
Jim Dennis

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

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

Я не знаю, сможем ли мы помочь с этим делом, но пока не сдавайтесь.

В будущем я бы предложил вам изучить следующую технику:

Когда у вас возникают проблемы с дисководом в Linux или UNIX, вы обычно можете использовать ddдля создания битовой копии всего устройства в другом месте. Найдите диск по крайней мере такого же размера, как и рассматриваемый, и попробуйте команду типа: dd if=$PROBLEMATIC of=$TARGET bs=4M... будьте очень осторожны с директивами if (входной файл) и (выходной файл). Оставь это беги. Это хорошая идея для запуска tail -f /var/log/messages &(или возможного варианта в соответствии с вашим /etc/syslog.conf) ... или сделать это в фоновом режиме или в другом окне. Существуют расширенные версии, ddкоторые могут более надежно обрабатывать повторы и sddпроходить через плохие блоки ( это имя, которое приходит на ум). Но попробуйте ddсначала использовать стандартную команду GNU .

Вы можете сделать такую ​​копию всего устройства (например, / dev / sdd) или только раздела (/ dev / sdd1). Если вы получаете «короткое чтение или подобные ошибки, то это говорит о том, что либо у устройства есть физические ошибки, препятствующие чтению за определенными цилиндрами, либо, в случае раздела, что таблица разделов искажена каким-либо образом. Вы даже можете сделать два разных ddизображения ... по одному

Вот трюк: делать все fsckи mountпопытки, и использовать различные другие инструменты восстановления, такие как TCT (Инструментарий коронера) на скопированное изображении!

Это минимизирует время, затрачиваемое на работу накопителя (которое, возможно, ухудшается на аппаратном уровне при его эксплуатации), и сводит к минимуму влияние неудачных и, возможно, ошибочных попыток восстановления. (В некоторых ситуациях вы создаете одно изображение, затем другое на основе этого и всегда работаете с третичным изображением ... зависит от того, сколько стоят данные).

Я лично предлагаю вам запустить что-то вроде hexdumpили stringsпрочитать изображение ... просто дайте ему долго прокручиваться и ищите простой текст, который выглядит так, как будто это могут быть фрагменты ваших данных. Я использовал grepдля восстановления полезных (текстовых) данных из полностью искаженных файловых систем. В случае, если я не предлагаю это как героику восстановления данных ... но как проверку здравомыслия. Если вы прокручиваете десятки мегабайт или несколько гигабайт данных и не видите какой-либо узнаваемый текст ... тогда у вас, вероятно, безнадежный случай, или вы сделали что-то очень неправильное ( действительно ли вы были осторожны с этим, если = и = варианты?).

Я не знаю, поможет ли что-нибудь из этого в текущем усилии. Но изучите эти приемы сейчас, и они определенно сделают ваш следующий шаг в восстановлении данных гораздо менее пугающим. (Да, попробуйте на здоровой системе один или два раза - иди используйте шестнадцатеричный редактор и попробуйте добавить свое творческое искажение тут и там - конечно же, в КОПИЮ! Затем попробуйте исправить это).

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

Использование ddrescue лучше в подобных ситуациях, так как он регистрирует неисправные сектора и продолжает вместо того, чтобы падать на лицо, как dd. Последующие запуски могут быть направлены только на чтение из сбойных секторов, что значительно ускоряет их. eleven81 15 лет назад 0
Это отличный ответ, спасибо! У меня не было достаточно представителей, чтобы голосовать, но теперь я делаю, +1, я быстро попробовал DD, но он не смог прочитать из / sdd1. Когда у меня будет больше времени, я буду углубляться и редактировать вопрос с моими результатами. privatehuff 15 лет назад 0
1
ThisTime

Backtrack - это дистрибутив Linux, который поставляется с множеством инструментов для подобных вещей. Он также, однако, направлен прямо на верхний уровень опытных пользователей. На их веб-сайте могут быть хорошие учебники по использованию их инструментов, которые могут быть вам полезны.

1
ChrisInEdmonton

Мне нечего предложить, кроме как надеяться, что вы учитесь на моих ошибках. СТОП! Сделайте копию диска. dd может помочь вам в этом, и есть множество приложений для создания образов дисков, которые предоставят вам приятный пользовательский интерфейс. Я сделал ошибку: копался в fsck, искал резервные суперблоки и т. Д. И т. Д., Не дублируя диск. Я потерял абсолютно все. Похоже, вы уже решили работать без резервных копий, но еще не слишком поздно захватить копию диска, прежде чем вы его уничтожите с помощью попыток восстановления из лучших побуждений.

Я наткнулся на эту статью на восстановление в аналогичных обстоятельствах. Похоже, вы можете указать mount использовать другой суперблок. В сочетании с -t ext3 это может дать небольшую надежду.

0
Rajat

Если вы можете загружаться с livecd во время загрузки, не используйте swap, а затем вы можете смонтировать его /dev/sdaи скопировать все данные с него, если у вас есть жесткий диск USB или по сети. Затем вы можете перезагрузить систему и переформатировать данные.

Это не мой загрузочный диск (я сейчас на компьютере), это был еще один диск с данными, на который, как мне кажется, записывалось, когда отключалось питание. privatehuff 15 лет назад 0
0
Avery Payne

Если вы используете LVM2 на своем диске, вам, вероятно, потребуется запустить его, прежде чем пытаться восстановить том. Попробуйте сначала, чтобы увидеть, если есть тома.

sudo pvscan && sudo vgscan && sudo lvscan 

Любые тома, которые вы найдете, будут подключаться к устройству, а не по прямой ссылке /dev/sdd1.

Если вы не используете LVM на диске, вы всегда можете попытаться повторно смонтировать диск как Ext * 2 * вместо Ext * 3 *, поскольку он обратно совместим. Хотя это открывает окно для незначительного повреждения файловой системы (поскольку журнал не воспроизводится), оно позволяет вам получить доступ к остальной части ваших данных, поскольку вы уже указали, что бит «чистой» файловой системы уже установлен. Когда вы собираетесь перемонтировать том, вам нужно будет указать тип файловой системы напрямую, то есть:

sudo mount -t ext2 /dev/sdd1 /media/disk-7 && ls /media/disk-7 

Оттуда вы можете восстановить свои данные. Если после восстановления ваших данных вы не сможете вернуть существующую файловую систему Ext3 в известное исправное состояние, я сделаю резервную копию всего набора данных, переформатирую файловую систему и восстановлю. Конечно, это не всегда вариант, но, по крайней мере, вы вернете свои данные.

Следовать за:

Быстрый Google показывает результат, который подразумевает, что у вас может быть проблема с версиями ядра. Вы обновляли ядро ​​или собирали собственный образ? Просто любопытно.

Спасибо! я думаю, что у нас есть победитель, я получаю сообщение об ошибке и не могу смонтировать как ext2. Я добавил информацию к вопросу privatehuff 15 лет назад 0
0
Grumbel

Вы уверены, что / dev / sdd1 действительно тот диск, который вы ищете, а не какой-то другой диск? Наименование устройства зависит от порядка подключения дисков и может отличаться, например, при последующем подключении USB-накопителя по сравнению с подключением при загрузке. Используйте, /dev/disk/by-id/чтобы убедиться, что вы касаетесь правильного диска.

Следующим шагом будет выяснить, если весь диск или только раздел является тост, чтобы сделать этот запуск:

cfdisk /dev/sdd

Или другой инструмент по вашему выбору, чтобы увидеть, находятся ли разделы в нужном месте и как вы ожидали. Если таблица разделов является тостом, вы можете попытаться gpartвосстановить их или воссоздать их с нуля, если вы помните их расположение.

Есть dmesgчто - нибудь подозрительное вывод? На умирающих жестких дисках вы в большинстве случаев будете получать множество сообщений об ошибках.

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