[РЕШЕНО] Восстановление разделов на работающей системе

IDE, SATA, SCSI, внешние USB-HDD, SSD, USB-Flash накопители

Модератор: Модераторы разделов

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

[РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

Здравствуйте. Сегодня в очередной раз "перепутал окошко" - стал создавать таблицу разделов на своем локальном компьютере вместо сервака, подключенного по ssh(я хз как получилось так, что я не заметил, как режу по живому. Тем более, что это очень сложно сделать. Но когда разбудили после 3х часов сна - и не такое бывает :) ).

Итак, имею неверную таблицу разделов на моем десктопе. Однако, система на нем работает - я не перезагружал еще. Что делать?
Пока включил testdisk.

Однако, хочу поинтересоваться, нет ли 100% надежных способов, например, посмотреть где-нибудь в /proc, куда ссылаются файлы устройств для разделов и соотвественно переразметить диск, или что-нибудь типа того? Или мне не запариваться и пользовать testdisk?
Спасибо сказали:

Аватара пользователя
broom
Бывший модератор
Сообщения: 1629
Статус: мизантроп.ка
ОС: Gentoo

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение broom »

Есть /proc/partitions, но я не знаю, откуда он берётся - поменялся уже или нет.
Но testdisk обычно работает очень хорошо - меня однажды спас.
but in the darkness, behind your smile, you scream... © Dio
Спасибо сказали:

FlySnake
Сообщения: 992
ОС: openSUSE

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение FlySnake »

Я когда попал в такую ситуацию, то быстренько слил инфу пока электричество не вырубили и переразметил по новой. Теоритически testdisk восстановит таблицу разделов и запишет её на место как ничего и небыло только загрузчик может потеряться, но это мелочи. А на практике не факт что всё пойдёт как надо, например унюхает остатки предыдущих разметок и т.д. Если есть куда забэкапиться - лучше сделать это
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

broom писал(а):
30.12.2010 15:08
Есть /proc/partitions, но я не знаю, откуда он берётся - поменялся уже или нет.

Код: Выделить всё

bluetooth@blues:~> cat /proc/partitions
major minor  #blocks  name

   8        0 1953514584 sda
   8        1     204800 sda1
   8        2 1953308672 sda2
   9        0     204736 md0
   9        1 1953307512 md1
 253        0   10485760 dm-0
 253        1   10485760 dm-1
 253        2    1048576 dm-2
 253        3 1825361920 dm-3
 253        4   10485760 dm-4
 253        5    4194304 dm-5

Это все конечно хорошо, только в выводе нет ничего о расположении.
Но testdisk обычно работает очень хорошо - меня однажды спас.

Только что отработал, ничего не восстановил :)
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

Итак, parted rescue уже восстановил /boot.

Понятное дело, что смонтированым фс полностью по барабану, что там творится в таблице разделов. но я хотел бы протестировать, правильно ли восстановлены разделы. Как протестировать это? Как я понимаю, нужно послать какой-то системный вызов, который бы перечитал таблицу разделов и пересоздал бы файлы в /dev. Это вообще возможно "на горячую"?
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

Rootlexx писал(а):
30.12.2010 15:53
(man hdparm) писал(а):-z
Force a kernel re-read of the partition table of the specified device(s).


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

Код: Выделить всё

device-mapper: reload ioctl failed: Invalid argument
add map sda1 (0:0): 0 409472 linear /dev/sda 2048


Есть ли какая-нибудь возможность создать файлы в /dev на "новые" разделы, не трогая sda, который занят?
Спасибо сказали:

Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4417
Статус: GNU generation
ОС: Debian GNU/Linux

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Rootlexx »

Bluetooth писал(а):
30.12.2010 15:22
Но testdisk обычно работает очень хорошо - меня однажды спас.

Только что отработал, ничего не восстановил :)

Попробуйте ещё gpart.
Bluetooth писал(а):
30.12.2010 15:50
Как я понимаю, нужно послать какой-то системный вызов, который бы перечитал таблицу разделов и пересоздал бы файлы в /dev.

(man hdparm) писал(а):-z
Force a kernel re-read of the partition table of the specified device(s).

Но едва ли получится это сделать при наличии смонтированных ФС на разделах этого диска.
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

Rootlexx писал(а):
30.12.2010 16:03
Bluetooth писал(а):
30.12.2010 15:22
Но testdisk обычно работает очень хорошо - меня однажды спас.

Только что отработал, ничего не восстановил :)

Попробуйте ещё gpart.

Спасибо, пробую. Вообще, я уже восстановил таблицу. но не уверен полностью. Хочется понять, как можно протестировать без ребута.
Спасибо сказали:

FlySnake
Сообщения: 992
ОС: openSUSE

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение FlySnake »

Bluetooth писал(а):
30.12.2010 16:11
Хочется понять, как можно протестировать без ребута.

Клонироваться в виртуалку и попробовать загрузить?
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

FlySnake писал(а):
30.12.2010 17:38
Bluetooth писал(а):
30.12.2010 16:11
Хочется понять, как можно протестировать без ребута.

Клонироваться в виртуалку и попробовать загрузить?

Думал об этом. Как можно склонировать раздел не полностью, чтобы он было рабочим? А то у меня лвм одним большим разделом...
Скорее всего, никак. Единственный путь, который я вижу - как-то добиться обновления файлов устройств или, еще лучше добавления другого через device mapper, например
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

Итак, перезагрузился, второй из двух разделов не нашелся. Пришлось загрузиться с внешнего харда с тестингом, на нем тестдиск за считанные секунды обнаружил второй раздел(большой, под lvm), а добавить перед ним первый, зная его начало(его нашел parted, но неправильно определил конец) - было делом техники.

Вообще, все эти заморочки обнаружились из-за сложной конфигурации разделов - lvm поверх рейда.

Всем, кто помогал - огромное спасибо.

З.Ы. Записал в TODO "добавить в быкапы mbr" (:
Спасибо сказали:

Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение sgfault »

Я, конечно, понимаю, что тема устарела и неактуальна, и все такое, но, случайно увидев, меня это (тоже случайно) заинтересовало.
Вот способ 99-го года lkml: Re: RECOVERY: partition table. На всякий случай, то, что там написано, в двух словах:
Командой

Код: Выделить всё

hdparm -g /dev/sdaX

можно посмотреть начало и длину раздела в секторах (512б). Дальше остается откуда-то узнать (или вспомнить) тип разделов, и можно записывать восстановленную mbr

Код: Выделить всё

sfdisk /dev/sda <part_table.txt


Не знаю много ли изменилось с 99-го года, но сейчас, возможно, более простым будет использовать sysfs:

Код: Выделить всё

cat /sys/class/block/sdaX/start
cat /sys/class/block/sdaX/size

начало и размер разделов в секторах соответственно. Дальше все точно также.
Спасибо сказали:

Аватара пользователя
broom
Бывший модератор
Сообщения: 1629
Статус: мизантроп.ка
ОС: Gentoo

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение broom »

Bluetooth писал(а):
30.12.2010 15:50
Как я понимаю, нужно послать какой-то системный вызов, который бы перечитал таблицу разделов и пересоздал бы файлы в /dev. Это вообще возможно "на горячую"?

Тоже напишу в решённую тему. :)

Если я правильно понимаю, то утилита partprobe делает именно это:
(man partprobe) писал(а):partprobe is a program that informs the operating system kernel of partition table changes, by requesting that the operating system re-read the partition table.

На практике срабатывает в большинстве случаев, но почему-то не всегда.
but in the darkness, behind your smile, you scream... © Dio
Спасибо сказали:

Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: [РЕШЕНО] Восстановление разделов на работающей системе

Сообщение Bluetooth »

Спасибо за дополнительную информацию. Кстати, быкапы мбр я пока так и не делаю. Лентяй (:
Спасибо сказали: