Здравствуйте. Сегодня в очередной раз "перепутал окошко" - стал создавать таблицу разделов на своем локальном компьютере вместо сервака, подключенного по ssh(я хз как получилось так, что я не заметил, как режу по живому. Тем более, что это очень сложно сделать. Но когда разбудили после 3х часов сна - и не такое бывает ).
Итак, имею неверную таблицу разделов на моем десктопе. Однако, система на нем работает - я не перезагружал еще. Что делать?
Пока включил testdisk.
Однако, хочу поинтересоваться, нет ли 100% надежных способов, например, посмотреть где-нибудь в /proc, куда ссылаются файлы устройств для разделов и соотвественно переразметить диск, или что-нибудь типа того? Или мне не запариваться и пользовать testdisk?
Я когда попал в такую ситуацию, то быстренько слил инфу пока электричество не вырубили и переразметил по новой. Теоритически testdisk восстановит таблицу разделов и запишет её на место как ничего и небыло только загрузчик может потеряться, но это мелочи. А на практике не факт что всё пойдёт как надо, например унюхает остатки предыдущих разметок и т.д. Если есть куда забэкапиться - лучше сделать это
Понятное дело, что смонтированым фс полностью по барабану, что там творится в таблице разделов. но я хотел бы протестировать, правильно ли восстановлены разделы. Как протестировать это? Как я понимаю, нужно послать какой-то системный вызов, который бы перечитал таблицу разделов и пересоздал бы файлы в /dev. Это вообще возможно "на горячую"?
Хочется понять, как можно протестировать без ребута.
Клонироваться в виртуалку и попробовать загрузить?
Думал об этом. Как можно склонировать раздел не полностью, чтобы он было рабочим? А то у меня лвм одним большим разделом...
Скорее всего, никак. Единственный путь, который я вижу - как-то добиться обновления файлов устройств или, еще лучше добавления другого через device mapper, например
Итак, перезагрузился, второй из двух разделов не нашелся. Пришлось загрузиться с внешнего харда с тестингом, на нем тестдиск за считанные секунды обнаружил второй раздел(большой, под lvm), а добавить перед ним первый, зная его начало(его нашел parted, но неправильно определил конец) - было делом техники.
Вообще, все эти заморочки обнаружились из-за сложной конфигурации разделов - lvm поверх рейда.
Я, конечно, понимаю, что тема устарела и неактуальна, и все такое, но, случайно увидев, меня это (тоже случайно) заинтересовало.
Вот способ 99-го года lkml: Re: RECOVERY: partition table. На всякий случай, то, что там написано, в двух словах:
можно посмотреть начало и длину раздела в секторах (512б). Дальше остается откуда-то узнать (или вспомнить) тип разделов, и можно записывать восстановленную mbr
Как я понимаю, нужно послать какой-то системный вызов, который бы перечитал таблицу разделов и пересоздал бы файлы в /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.
На практике срабатывает в большинстве случаев, но почему-то не всегда.