2/06/2007

Глубокий анализ данных, Эпизод 3: повреждённые разделы

Проблема: флеш-накопитель или винчестер не монтируются, в логах соообщения о повреждении таблицы разделов - что делать?
Решение: программа Testdisk может серьёзно помочь в деле восстановления убитых разделов в Линукс.

Ситуация
Мне нужно было перепрошить DVD-привод, о чём я уже писал ранее. После того, как всё удачно завершилось, мне нужно было перезагрузиться. Конечно, всё было выполнено в штатном режиме: shutdown -r now и всё шло нормально. Однако после перезагрузки мой 400Гб винчестер, который обычно висит на /dev/sdc1, монтироваться отказался наотрез. Я пошёл искать правды в логах dmesg:

Jan 7 17:46:08 localhost kernel: scsi1 : ata_piix
Jan 7 17:46:08 localhost kernel: Vendor: ATA Model: WDC WD360GD-00FL Rev: 31.0
Jan 7 17:46:08 localhost kernel: Type: Direct-Access ANSI SCSI revision: 05
Jan 7 17:46:08 localhost kernel: Vendor: ATA Model: WDC WD2500JD-00H Rev: 08.0
Jan 7 17:46:08 localhost kernel: Type: Direct-Access ANSI SCSI revision: 05
Jan 7 17:46:08 localhost kernel: Vendor: ATA Model: WDC WD4000KS-00M Rev: 07.0
Jan 7 17:46:08 localhost kernel: Type: Direct-Access ANSI SCSI revision: 05

винчестер ядро видит, и даже верно определяет его объём - значит, это не шлейф отошёл, и всё гораздо хуже. А вот и проблема:

Jan 7 17:46:08 localhost kernel: SCSI device sdc: 781422768 512-byte hdwr sectors (400088 MB)
Jan 7 17:46:08 localhost kernel: SCSI device sdc: drive cache: write back
Jan 7 17:46:08 localhost kernel: SCSI device sdc: 781422768 512-byte hdwr sectors (400088 MB)
Jan 7 17:46:08 localhost kernel: SCSI device sdc: drive cache: write back
Jan 7 17:46:08 localhost kernel: sdc: unknown partition table

Всё, приехали - на винчестере нет разделов! Три месяца работал прекрасно, а тут такое... Попытка примонтировать любыми правдами и неправдами /dev/sdc приводила к матюганию:
EXT3-fs error (device sdc): ext3_check_descriptors: Block bitmap for group 880 not in group (block 0)!
EXT3-fs: group descriptors corrupted !
Да, не весело. Сокраментальный вопрос: что делать!?

Поиск ответа на извечный вопрос
Немного погуглив на эту тему, я нашёл длинный тред на lkml и на дебиановском форуме, где было много стенаний по этому поводу - в том числе много отрицательных результатов при применении e2fsck. После этого данные оказывались угробленными окончательно. И тут я вспомнил, что давно хотел попробовать утилиту Testdisk, которая имеется в Дебиан - вот, думаю, кстати и попробую, благо ничего имитировать не надо, всё и так уже порушено...

Восстанавливаем разделы с помощью testdisk
Собственно, apt-get install testdisk был проделан давно, и от рута запускаем:
# testdisk
Программа работает в интерактивном режиме, выводя все партиции. Так что будьте предельно осторожны! Будут выведены все подключённые дисковые накопители:

Дальше скриншотов я не делал - не до того было. Но интерфейс у testdisk прост - даже тогда, когда вы немного волнуетесь по поводу сохранности полтерабайта ваших данных :-)
Так, заходим дальше, на устройство с повреждённой партицией. Программа напишет, что повреждение имеет место быть и предложит проанализировать таблицу разделов. Естественно, соглашаемся. Работать testdisk будет пропорционально объёму винчестера: будет произведён поиск резервных копий информации о структуре данных. Если вам повезёт, то копии будут найдены и будет предложено записать на диск изменения. Записываем. После этого предлагается перезагрузиться, чтобы изменения вступили в силу (забытое действие, которое реализуется shutdown -r now :-))

После этого система загрузилась и подмонтировала диск, как будто ничего и не было. Даже никаких сообщений типа "transactions replayed". Данные в полном порядке - в общем, как будто ничего и не было.

Заключение
В общем, всё хорошо, что хорошо кончается. Теперь, конечно, при перезагрузке я буду вручную отмонтировать оба жёстких диска (благо это происходит не чаще, чем через пять-шесть месяцев). По поводу происшедшего на форумах были мысли, что это init-скрипты в ряде дистрибутивов написаны так, что не учитывают очерёдность отмонтирования. Надо будет проверить - следующий раз может быть не таким удачным...
В качестве пособия был использован этот сайт и любимец всех линуксоидов - Gooooogle :-)

7 комментариев:

  1. Блин, ты сам подумай, какая связь может быть между (не)?отмонтированием и таблицей разделов.
    Таблица разделов умерла либо при перепрошивке сидюка (кривой флэшер), либо еще раньше (хоть месяц назад).

    ОтветитьУдалить
  2. 2 GQ
    Блин, ты сам подумай, какая связь может быть между (не)?отмонтированием и таблицей разделов.
    При перезагрузки легко мог не успеть нормально размонтироваться раздел. При записи на флешку попробуй ей резко выдернуть - тогда поймёшь, что имелось в виду.

    Таблица разделов умерла либо при перепрошивке сидюка (кривой флэшер), либо еще раньше (хоть месяц назад).
    Ты думай, когда пули отливаешь (с) :-) Сам подумай, как могла помереть таблица разделов, если я три месяца интенсивно работал с винтом... Флешер кривой... сказки...

    И потом проблема была не у меня одного.

    ОтветитьУдалить
  3. При перезагрузки легко мог не успеть нормально размонтироваться раздел.
    И что? где хранится сам раздел, а где таблица разделов.
    При записи на флешку попробуй ей резко выдернуть - тогда поймёшь, что имелось в виду.
    Таблица разделов при этом не повредится.

    Сам подумай, как могла помереть таблица разделов, если я три месяца интенсивно работал с винтом...
    Особенность линукса - ядро не обновляет таблицу разделов в памяти, если какой-нить из разделов используется.
    Обрати внимание: иногда после работы fdisk он коворит Sync partition table... ok и с диском можно сразу работать, а иногда говорит, что диск is using и чтобы изменения вступили в силу надо ребутнуться.

    ОтветитьУдалить
  4. Эхх...была у меня такая ситуация...
    Когда стояла венда еще, решил сменить тип раздела с fat32 на ntfs, т.к. fat32 не вмещал образы двд.
    В самый ответственный момент Partition Magick просто завис...я ребутнул и капец.
    И было это накануне моего Дня рождения!!!!!
    Таблица убита...я в шоке...все нажитое, с трудом накачанное по диалапу...мамина диссертация...
    В итоге взял свой старый добрый knoppix 3.7, загрузился, вышел в инет, помотался в irc, люди посоветовали testdisk, благо на Knoppix он был =)
    Дай Бог здоровья авторам Knoppix и testdisk =)))
    Все восстановил...странно только, что половина гентовых дистфайлов пропала, а так все на месте...ффух =)

    ОтветитьУдалить
  5. кстати у меня изза кривого шлейфа боканула загрузка Суси. Ну млин по дурости и попытался зареспить ЕХТ3. Короче потом дошло что бока со шлейфом, сменил шлейф, сгрузился с Лиф ЦД Убунты и через fsck восстановил ФС. Оказалось что когда на битом шлейфе респил ФС - слегка подпорол пару мест ее. После лечения вроде все норм. ;)

    ОтветитьУдалить
  6. +1 к Philin

    Загрузился с Xubuntu Live CD и вылечил 1Т диск штатными средствами из графического интерфейса (Partition Editor), за ~20 минут.

    BTW: Шаманство с Tesdisk НЕ ПОМОГЛО.

    ОтветитьУдалить
  7. testdisk помог на debian etch:) спасибо .. хотел уже слить заботу о пропавшем разделе инженерам в датацентр:)

    ОтветитьУдалить