[РЕШЕНО] Восстановление разделов на работающей системе
Модератор: Модераторы разделов
[РЕШЕНО] Восстановление разделов на работающей системе
Здравствуйте. Сегодня в очередной раз "перепутал окошко" - стал создавать таблицу разделов на своем локальном компьютере вместо сервака, подключенного по ssh(я хз как получилось так, что я не заметил, как режу по живому. Тем более, что это очень сложно сделать. Но когда разбудили после 3х часов сна - и не такое бывает ).
Итак, имею неверную таблицу разделов на моем десктопе. Однако, система на нем работает - я не перезагружал еще. Что делать?
Пока включил testdisk.
Однако, хочу поинтересоваться, нет ли 100% надежных способов, например, посмотреть где-нибудь в /proc, куда ссылаются файлы устройств для разделов и соотвественно переразметить диск, или что-нибудь типа того? Или мне не запариваться и пользовать testdisk?
Итак, имею неверную таблицу разделов на моем десктопе. Однако, система на нем работает - я не перезагружал еще. Что делать?
Пока включил testdisk.
Однако, хочу поинтересоваться, нет ли 100% надежных способов, например, посмотреть где-нибудь в /proc, куда ссылаются файлы устройств для разделов и соотвественно переразметить диск, или что-нибудь типа того? Или мне не запариваться и пользовать testdisk?
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Есть /proc/partitions, но я не знаю, откуда он берётся - поменялся уже или нет.
Но testdisk обычно работает очень хорошо - меня однажды спас.
Но testdisk обычно работает очень хорошо - меня однажды спас.
but in the darkness, behind your smile, you scream... © Dio
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Я когда попал в такую ситуацию, то быстренько слил инфу пока электричество не вырубили и переразметил по новой. Теоритически testdisk восстановит таблицу разделов и запишет её на место как ничего и небыло только загрузчик может потеряться, но это мелочи. А на практике не факт что всё пойдёт как надо, например унюхает остатки предыдущих разметок и т.д. Если есть куда забэкапиться - лучше сделать это
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Код: Выделить всё
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 обычно работает очень хорошо - меня однажды спас.
Только что отработал, ничего не восстановил
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Итак, parted rescue уже восстановил /boot.
Понятное дело, что смонтированым фс полностью по барабану, что там творится в таблице разделов. но я хотел бы протестировать, правильно ли восстановлены разделы. Как протестировать это? Как я понимаю, нужно послать какой-то системный вызов, который бы перечитал таблицу разделов и пересоздал бы файлы в /dev. Это вообще возможно "на горячую"?
Понятное дело, что смонтированым фс полностью по барабану, что там творится в таблице разделов. но я хотел бы протестировать, правильно ли восстановлены разделы. Как протестировать это? Как я понимаю, нужно послать какой-то системный вызов, который бы перечитал таблицу разделов и пересоздал бы файлы в /dev. Это вообще возможно "на горячую"?
Re: [РЕШЕНО] Восстановление разделов на работающей системе
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, который занят?
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Попробуйте ещё gpart.
(man hdparm) писал(а):-z
Force a kernel re-read of the partition table of the specified device(s).
Но едва ли получится это сделать при наличии смонтированных ФС на разделах этого диска.
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Спасибо, пробую. Вообще, я уже восстановил таблицу. но не уверен полностью. Хочется понять, как можно протестировать без ребута.
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Клонироваться в виртуалку и попробовать загрузить?
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Думал об этом. Как можно склонировать раздел не полностью, чтобы он было рабочим? А то у меня лвм одним большим разделом...
Скорее всего, никак. Единственный путь, который я вижу - как-то добиться обновления файлов устройств или, еще лучше добавления другого через device mapper, например
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Итак, перезагрузился, второй из двух разделов не нашелся. Пришлось загрузиться с внешнего харда с тестингом, на нем тестдиск за считанные секунды обнаружил второй раздел(большой, под lvm), а добавить перед ним первый, зная его начало(его нашел parted, но неправильно определил конец) - было делом техники.
Вообще, все эти заморочки обнаружились из-за сложной конфигурации разделов - lvm поверх рейда.
Всем, кто помогал - огромное спасибо.
З.Ы. Записал в TODO "добавить в быкапы mbr" (:
Вообще, все эти заморочки обнаружились из-за сложной конфигурации разделов - lvm поверх рейда.
Всем, кто помогал - огромное спасибо.
З.Ы. Записал в TODO "добавить в быкапы mbr" (:
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Я, конечно, понимаю, что тема устарела и неактуальна, и все такое, но, случайно увидев, меня это (тоже случайно) заинтересовало.
Вот способ 99-го года lkml: Re: RECOVERY: partition table. На всякий случай, то, что там написано, в двух словах:
Не знаю много ли изменилось с 99-го года, но сейчас, возможно, более простым будет использовать sysfs:
начало и размер разделов в секторах соответственно. Дальше все точно также.
Вот способ 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
начало и размер разделов в секторах соответственно. Дальше все точно также.
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Тоже напишу в решённую тему.
Если я правильно понимаю, то утилита 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
Re: [РЕШЕНО] Восстановление разделов на работающей системе
Спасибо за дополнительную информацию. Кстати, быкапы мбр я пока так и не делаю. Лентяй (: