Восстановление таблицы разделов, все еще присутствующей в работающей системе

Hy,
Я случайно перезаписал первый 1M моего жесткого диска на linux (используя dd). Итак, таблица разделов исчезла. Я все еще могу получить доступ ко всем разделам (кроме первого) с помощью /dev/sda2 (и так далее), поэтому данные все еще там. Мне нужны только границы разделов, чтобы восстановить таблицу. Как я могу это сделать? Ядро Linux должно знать их, потому что все точки монтирования все еще работают. fdisk -l /dev/sda не работает, так как считывает таблицу разделов.

спасибо!

16
задан theomega
28.01.2023 6:49 Количество просмотров материала 2461
Распечатать страницу

4 ответа

экстенты разделов можно прочитать из /sys/block/sda/sda1/start,/sys/block/sda/sda1/size и так далее. Значения находятся в секторах. запишите эти значения, прежде чем делать что-либо еще, особенно перезагрузки.

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

  • n
  • primary/logical/extended
  • номер раздела (кроме логических разделов: делайте их по порядку)
  • начальный участок
  • + размер в секторах
6
отвечен Gilles 2023-01-29 14:37

прошло почти два года с тех пор, как был задан вопрос. Вчера мы были в точно такой же ситуации: у нас есть программный RAID Linux уровня 1 с 2 дисками. Один из дисков сломался и его пришлось заменить. Мы обменялись диском, а затем хотели скопировать таблицу разделов с оставшегося (рабочего) диска на новый диск. К сожалению, мы скопировали пустую таблицу разделов с нового диска на старый. К счастью, мы сразу обнаружили это перед перезагрузкой машины, поэтому правильная таблица разделов все еще была активна в ядре. Вот что мы сделали, чтобы решить эту проблему:

  • мы извлекли данные раздела из /sys/block/ файловая система, как описано в ответе Жиля.
  • наша система использует таблица разделов GUID, поэтому мы не могли использовать fdisk но пришлось использовать gdisk вместо.
  • gdisk работает почти так же, как fdisk разве не нужно указывать u для сектора.
  • мы создали разделы с exact данные, извлеченные из /sys/block/. Есть и другие ответы на подобные вопросы, которые говорят, чтобы уменьшить размер раздела на один, но это не было необходимо для нас.
  • с таблицей разделов guid больше нет различия между основными и расширенными разделами.
  • sys/block файловая система не содержит информации о типах файловых систем, поэтому мы добывали их с mount.
  • с таблицей разделов GUID, там уже не флаг. Если восстанавливаемая таблица разделов с загрузочного диска, должен быть раздел с типом BIOS boot partition (обычно первый раздел).

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

5
отвечен Valentin 2023-01-29 16:54

лично я бы использовал testdisk, работающий с компакт-диска Trinity Rescue Kit. Это хорошо задокументировано. Однако я не знаю, как восстановить перезаписанную область этого первого раздела.

Trinity Rescue Kit CD

testdisk Вики и скачать

1
отвечен Tog 2023-01-29 19:11

другие ответы, которые я чувствую, недостаточно всеобъемлющи и оставляют место для ошибки. Вот фактический рабочий пример восстановления с небольшой оговоркой, которую я нигде не видел. Принимая старт и размер участка от /sys / block/sda / * вы должны вспомнить вычесть 1 от размера или вы будете 1 участком.

также не забудьте в fdisk нажать " u " для режима сектора.

вот пример, которому я успешно следовал: Шаг 1-найти каталог устройства в /sys/block/sda /sda1 (измените /sda и / sda1 в соответствии с именем дискового устройства и номером раздела).

вы должны сделать кошку на "пуск" и "размер", который представляет начальный сектор раздела и "размер" представляет, сколько секторов это.

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

fdisk/dev / sda

нажмите u, чтобы перейти к секторам, который является то, что /sys/block/sda идет by

файл/sys/блок/ПДД [root@server1 sda]# cat sda1 / пуск Две тысячи сорок восемь [root@server1 sda]# cat sda1 / размер 1024000

[root@server1 sda]# cat sda2 / пуск Один миллион двадцать шесть тысяч сорок восемь [root@server1 sda]# cat sda2 / размер 1464121344

Шаг 2-Используйте fdisk, чтобы взять вышеуказанную информацию сектора и ввести его (не забудьте вычесть 1 из размера при сообщении fdisk конечного сектора)

"нажмите u", чтобы переключиться в режим сектора после запуска:

fdisk / dev / sda

команда (M для справки): n Действие команды e расширенный п первичный раздел (1-4) p Номер раздела (1-4): 1 Первый сектор (63-1465149167, по умолчанию 63): 2048 Последний сектор, + сектора или + размер{K, M, G} (2048-1465149167, по умолчанию 1465149167): +1023999

команда (M для справки): n Действие команды e расширенный п первичный раздел (1-4) p Номер раздела (1-4): 2 Первый сектор (63-1465149167, по умолчанию 63): 1026048 Последний сектор, + сектора или + размер{K,M, G} (1026048-1465149167, по умолчанию 1465149167): +1464121343

#

http://realtechtalk.com/Linux_How_To_Recover_Partition_Table_from_Kernel_and_Restore_CentosDebian_etc-1772-articles

1
отвечен Areeb Soo Yasir 2023-01-29 21:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх