Случайно удалил разделы на загрузочном диске. Система все еще работает. Как восстановить?

Случайно удалил разделы на загрузочном диске. Система все еще работает. Как восстановить?

Я просто случайно стер все разделы не с того диска.

/dev/sda— это загрузочный диск, и /dev/sdbэто новый диск, который я пытаюсь настроить как зеркало RAID.

Я случайно ошибся и в итоге удалил таблицу разделов на /dev/sda, а не на /dev/sdb.

Система все еще работает, поэтому она использует кэшированную где-то таблицу разделов.

Могу ли я восстановить таблицу разделов или хотя бы просмотреть ее, чтобы можно было воссоздать разделы именно там, где они были?

fdisk /dev/sda -lне создает разделов.

Да, я чувствую себя умным.

решение1

Ядро постоянно хранит таблицу разделов в кэше (если явно не указано перезагрузить, а это невозможно сделать, если некоторые разделы используются). Поэтому вы в безопасности, пока не перезагрузитесь (или не укажете ядру работать с данными, которые не отражают истинное содержимое диска; например, если вы уже активировали mdraid, он мог уже записать свои метаданные на диск).

Если у вас естьдо настоящего временирезервную копию вашего загрузочного сектора (первые 512 байт), вы можете восстановить ее ( cat boot-sector-backup >/dev/sda— убедитесь, что размер восстанавливаемого файла составляет ровно 512 байт). Ваша установка загрузчика могла создать резервную копию загрузочного сектора, но если она была обновлена ​​или вы переразметили разделы с тех пор, она не будет актуальной. Не восстанавливайте резервную копию, которая может быть устаревшей.

Информация ядра о разделах доступна через /sys/class/block/sda/sda*. В каталоге для каждого раздела ( sda1, sda2, и т.д.):

  • startсодержит смещение начала раздела в секторах по 512 байт.
  • sizeсодержит размер раздела в секторах по 512 байт (за исключением расширенного раздела).

Если у вас есть разделы с номерами 5 и выше, то они являются логическими разделами (см.В чем разница между «расширенным» разделом и «логическим» разделом?), содержащийся внутри расширенного раздела. Существует один расширенный раздел (или ни одного), и это один из разделов 1–4. Файл sizeне содержит размер расширенного раздела, поэтому сначала нужно его определить; он должен быть достаточно большим для всех логических разделов и не должен включать в себя какие-либо основные разделы (другие разделы с номерами 1–4).

Запустите fdisk /dev/sda. Используйте uдля переключения единиц измерения на секторы. Создайте разделы ( n) с правильным смещением и размером (как указано в подсказке, укажите +перед количеством секторов, когда дело доходит до размера), начиная с расширенного раздела.

Используйте pдля проверки правильности таблицы разделов. Если некоторые из этих разделов не являются разделами данных Linux, используйте tдля установки их типа ( 82для подкачки Linux, cдля раздела Windows FAT32, 7для раздела Windows NTFS). Если у вас есть загрузочный раздел DOS/Windows, установите его флаг загрузки ( a).

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

Сохраните содержимое /sys/class/block/sda/ in a tar archive on a USB stick. Then reboot from a removable media. **After rebooting, if the partition table you created is not correct, you risk massive data corruption**. So from the removable media, runfsck -n (don't forget the-n ) to check the consistency of the filesystems on each partition (don't usemount`, что сработает только в том случае, если смещение будет правильным, и может повредить диск (даже в режиме только для чтения, поскольку он запишет журнал), если смещение будет правильным, а размер - нет).

Если fsck не находит файловой системы, вы неправильно указали смещение раздела. Если fsck сообщает об ошибках, скорее всего, вы неправильно указали размер раздела.Пока вы не записали данные на диск, вы все равно можете исправить таблицу разделов.. Если у вас нет раздела на смонтированном диске, нажатие wзаставит fdiskядро ​​перечитать таблицу разделов. Как только вы правильно разместите разделы, вы сможете перезагрузиться в свою обычную систему и продолжить как обычно.

решение2

гчастьдолжно помочь вам, даже если вы перезагрузились.

Связанный контент