Восстановление таблицы разделов в Linux
В моем домашнем NAS внезапно отказал один из дисков. Это был единственный диск не в raid, данные на котором вроде как не важные (торренты, софт и т.д., все, что можно заново выкачать из инетрнета), поэтому диск не дублировался. Ничего критичного не произошло, но мне все равно стало жалко данные, поэтому я заменил диск, а этот отложил в сторонку, чтобы попытаться восстановить информацию. У меня это получилось, поэтому решил задокументировать результат, чтобы самому не забыть и с вами поделиться.
Если у вас есть желание научиться профессионально строить и поддерживать высокодоступные виртуальные и кластерные среды, рекомендую познакомиться с онлайн-курсом Администратор Linux. Виртуализация и кластеризация в OTUS. Курс не для новичков, для поступления нужно пройти вступительный тест.
Введение
Симптомы поломки были следующие. Заметил, что пропал сетевой диск. Зашел на сервер и увидел, что диск не инициализирован. Таблица разделов пустая. При этом, диск работал нормально и SMART ошибок не показывал. Я сразу заподозрил, что проблема именно с таблицей разделов. Данные должны быть на месте.
Дополнительная важная информация — диск был в составе mdadm массива, состоящим из одного диска. LVM не использовался.
Я подключил сбойный диск в обычный системник. Сделал загрузочную флешку с Ubuntu Live CD и загрузился с нее. Настроил там сеть, стандартные репозитории.
Восстановление таблицы разделов
Я давно знаю утилиту testdisk. С ее помощью мне уже удавалось восстанавливать данные в linux. Она есть в репозиториях ubuntu, так что я ее установил. Далее все было просто. К сожалению, скриншотов нет, так как делал все на отдельном системнике. Расскажу на словах, что сделал:
- Запустил утилиту. Она вывела список всех подключенных дисков. В моем случае диск был /dev/sda.
- Выбрал нужный диск, указал в выборе partition table types первый вариант — Intel.
- Запустил сканирование. Утилита нашла разделы, которые там были ранее. Я прикинул, вроде бы то, что и должно быть.
- Записал таблицу разделов на диск.
Далее через fdisk я увидел разделы диска sda, в том числе тот, что меня интересовал — Linux raid autodetect.
Если восстанавливаете таблицу разделов обычного диска, то уже сейчас можно было бы смонтировать найденный раздел и попытаться прочитать данные. В моем же случае, нужно было собрать mdadm массив и подмонтировать уже его. Вот тут и начались самые сложности, с которыми больше всего провозился.
Восстановление mdadm массива
Установил в live систему mdadm:
Первым делом проверил суперблоки на восстановленном разделе:
# mdadm --misc --examine /dev/sda2
На вид все было в порядке. Дальше рассчитывал сразу найти массив и примонтировать его.
# mdadm --assemble --scan mdadm: failed to add /dev/sda2 to /dev/md3: Invalid argument mdadm: failed to RUN_ARRAY /dev/md3: Invalid argument
Тут я приуныл, потому что не мог понять, в чем проблема. Пробовал разные команды для запуска массива, но он упорно не стартовал. При этом на вид все было в порядке. Потом в какой-то момент я додумался посмотреть dmesg.
# dmesg | grep sda2 md: sda2 does not have a valid v1.2 superblock, not importing!
Решение этой ошибки достаточно быстро нагуглилось.
# mdadm --assemble --verbose /dev/md2 /dev/sda2 --update=devicesize
После этого массив нормально стартовал и cat /proc/mdstat показывал его состояние. Тут я думал, что мои мучения окончены и я сейчас получу свои данные. Но это тоже было еще не все.
Восстановление таблицы разделов на mdadm
Просто подмонтировать запущенный mdadm массив к системе не получилось.
# mount -t ext4 /dev/md2 /mnt mount: /mnt: wrong fs type, bad option, bad superblock on /dev/md2, missing codepage or helper program, or other error.
Я так понял, что тут либо таблица разделов так же была уничтожена, либо файловая система. Я не знал, как был разбит на разделы сам массив, поэтому просто решил еще раз прогнать анализ таблицы разделов уже массива md2 через утилиту testdisk.
К счастью, она нашла единственный раздел на диске и восстановила его. Таким образом у меня получилось устройство /dev/md2p1. Дальше я успешно смонтировал этот раздел в /mnt и получил доступ к данным. Они все были на месте.
В заключении я к этой же системе подмонтировал сетевой диск через cifs и начал копировать данные.
# mount -t cifs //192.168.15.50/data /mnt/data -o user=admin,password=adminpass
Заключение
В итоге у меня все получилось, но считаю, что просто повезло, так как любое неверное действие в восстановлении таблицы разделов могло привести к фатальным последствиям. Если вы будете восстанавливать реально важные данные, то обязательно сделайте посекторную копию носителя и работайте с ней. И внимательно смотрите на восстановленные разделы перед их записью. Если что-то пойдет не так, то восстановить данные будет в разы сложнее. Наверняка таблицу разделов придется править уже вручную, а для этого нужны хорошие знания. У меня, к примеру, их нет.
Непонятной осталась причина сбоя, и это хуже всего. На вид все в порядке, но я теряю доступ к данным. Любой другой пользователь, не разбирающийся в linux, просто потерял бы данные, либо пришлось обращаться в специализированные фирмы по восстановлению информации, а это стоит дорого. И еще, как я понял, я точно так же мог потерять доступ и к массиву из нескольких дисков. К слову, потерпевший NAS это Synology, где под капотом обычный linux и mdadm, поэтому я понимал, как надо действовать. На этом же устройстве есть несколько массивов на много Tb и если бы кто-то из них сглючил, то было бы плохо.
Несколько моих статей по восстановлению загрузки linux после различных сбоев:
Надеюсь, вам они не пригодятся.
Онлайн курс по Linux
- Умение строить отказоустойчивые кластера виртуализации для запуска современных сервисов, рассчитанных под высокую нагрузку.
- Будете разбираться в современных технологиях кластеризации, оркестрации и виртуализации.
- Научитесь выбирать технологии для построения отказоустойчивых систем под высокую нагрузку.
- Практические навыки внедрения виртуализации KVM, oVirt, Xen.
- Кластеризация сервисов на базе pacemaker,k8s, nomad и построение дисковых кластеров на базе ceph, glaster, linstore.
Как восстановить таблицу разделов в Linux
Таблица разделов жесткого диска содержит всю информацию о том, где начинается и заканчивается каждый раздел. Если таблица разделов будет удалена или каким-либо образом повреждена, скорее всего, ваша операционная система не сможет загрузиться или вы столкнетесь с другими проблемами с жестким диском. Но есть и хорошая новость: если ваша таблица разделов утеряна, ее можно восстановить с помощью таких программ, как тестовый диск.
В этом руководстве мы рассмотрим пошаговые инструкции по загрузке в режим восстановления, установке тестового диска и восстановлению удаленной таблицы разделов на Linux-система . После успешного восстановления таблицы разделов вы сможете снова загрузиться в свой дистрибутив Linux и продолжать использовать систему в обычном режиме — по крайней мере, если нет других основных проблем.
В этом уроке вы узнаете:
- Где скачать живой Linux ISO для восстановления
- Как загрузиться в режим live/recovery
- Как установить тестдиск
- Как восстановить удаленную таблицу разделов
Категория | Требования, соглашения или используемая версия программного обеспечения |
---|---|
Система | Любой дистрибутив Linux |
Программное обеспечение | тестовый диск |
Другой | Привилегированный доступ к вашей системе Linux как root или через судо команда. |
Соглашения | # — требует данного линукс команды выполняться с привилегиями root либо непосредственно от имени пользователя root, либо с помощью судо команда $ — требует данного линукс команды выполняться как обычный непривилегированный пользователь. |
Как восстановить таблицу разделов в Linux пошаговая инструкция
Чтобы начать восстановление таблицы разделов, нам нужно загрузиться в режиме live CD дистрибутива Linux. На самом деле не имеет значения, какой дистрибутив вы решите использовать для этого, но мы рассмотрим инструкции для Убунту Линукс , так как мы должны выбрать один для охвата и не можем охватить каждый дистрибутив или Live CD.
Вы можете скачать ISO-образ Ubuntu с Страница загрузки Ubuntu или ознакомьтесь с нашим руководством по Загрузки Live CD/DVD Linux
если вы хотите использовать другой дистрибутив. После этого создайте загрузочный USB-накопитель с вашим ISO-образом или запишите live CD или DVD.
- Вставив загрузочный носитель, включите компьютер и загрузитесь в режиме реального времени. В случае с Ubuntu это означает нажатие на опцию «Попробовать Ubuntu».
- Как только вы загрузитесь в живую среду, откройте терминал и установите тестовый диск package с помощью менеджера пакетов вашего дистрибутива. В случае Ubuntu команды будут такими:
$ sudo add-apt-repository вселенная. $ sudo apt установить тестовый диск.
Заключительные мысли
В этом руководстве вы увидели, как восстановить таблицу разделов в системе Linux. Это было достигнуто за счет тестовый диск программное обеспечение, которое спасает жизнь, когда вы случайно удаляете таблицу разделов вашего диска или она каким-то образом повреждена. После восстановления вы сможете загрузиться обратно в свою операционную систему, как обычно.
Подпишитесь на новостную рассылку Linux Career Newsletter, чтобы получать последние новости, информацию о вакансиях, советы по карьере и рекомендации по настройке.
LinuxConfig ищет технического писателя (писателей), ориентированного на технологии GNU/Linux и FLOSS. В ваших статьях будут представлены различные руководства по настройке GNU/Linux и технологии FLOSS, используемые в сочетании с операционной системой GNU/Linux.
Ожидается, что при написании ваших статей вы сможете идти в ногу с технологическим прогрессом в вышеупомянутой технической области знаний. Вы будете работать самостоятельно и сможете выпускать не менее 2 технических статей в месяц.