ремонт таблицы разделов

ремонт таблицы разделов

Я только что перезаписал таблицу разделов жесткого диска моей системы. Я создал раздел cfdiskна неправильном устройстве ( /dev/sdaвместо /dev/sdd), удалил все разделы, создал один новый основной раздел, охватывающий все устройство, установил его тип на 07(NTFS) и нажал write.

Итак, вот я с работающей системой. Пока я не перезагружу, я надеюсь/полагаю, что ничего не изменится - то есть: все мои данные доступны (сейчас я делаю резервную копию ddвсего устройства и планирую сделать .tar.gzрезервную копию самых важных данных позже). Я также сделал резервную копию /proc/partitions, /proc/diskstats(хотя, я думаю, это больше касается пропускной способности и подобных вещей ...) и /sys/block/sda/sda?/{start,size}.

Вот еще кое-что, что я знаю:

  • 4 основных раздела
  • 1-й раздел: ~100Мб, ext3, /boot
  • 2-й раздел: ~100 Мб, "Загрузочный раздел Win7", ntfs(?)
  • 3-й раздел: ~20...30ГБ, Win7, ntfs
  • 4-й раздел: ~20...30 ГБ, зашифрованное luks-устройство
  • Люкс-дезашифрованное устройство — LVM-PV
  • Разделы /, /home& swap-все являются логическими томами на (VG на) указанном выше физическом томе.

Итак, мои вопросы:

  • Какой самый простой способ записать таблицу разделов ядра на диск?
  • Какой самый простой способ взять вышеупомянутые (и, возможно, другие, о которых я не знаю...) данные и сгенерировать таблицу разделов?
  • Есть ли какие-либо проблемы, связанные с Luks и/или LVM, которые необходимо решить?
  • Есть ли какие-либо данные, которые следует сделать резервную копию перед перезагрузкой (имеются в виду данные из ядра [/sys/..., /proc/...] и т. д., которые могут помочь мне восстановить таблицу разделов)?

решение1

Не слишком сложно. Надеюсь.

Прежде всего, обратите внимание на размер и порядок всех разделов на /dev/sda:

challenger:/home/michael # grep . /sys/block/sda/sda*/{start,size}
/sys/block/sda/sda1/start:63
/sys/block/sda/sda2/start:228690000
/sys/block/sda/sda3/start:257040
/sys/block/sda/sda1/size:256977
/sys/block/sda/sda2/size:83885760
/sys/block/sda/sda3/size:228432960

Запустите fdisk на /dev/sda и измените единицы измерения на сектора:

Command (m for help): u
Changing display/entry units to sectors

Затем начните делать разделы. Используйте соответствующие номера startи sizeдля каждого раздела.
Избегайте ошибки «на единицу» — вычтите единицу из значения, sizeпрежде чем вводить его в fdisk.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-312581807, default 63): 
Using default value 63
Last sector, +sectors or +size{K,M,G} (63-312581807, default 312581807): +256976

Command (m for help): p

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x02b002af

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63      257039      128488+  83  Linux

Не забудьте задать идентификаторы разделов и переключить флаг загрузки на нужный раздел.

Теперь переустановите MBR, и все будет готово.


Конечно, вы можете сделать все это с помощью вашего любимого редактора разделов... parted тоже отлично подойдет.

Если вы потеряли информацию о начале/конце разделов - в parted есть опции "спасения" для поиска на диске потерянных разделов. Но они вам не понадобятся.

решение2

Если таблица разделов повреждена, я бы предложил использовать загрузочный диск RIP (спасение возможно в Linux) для запуска testdisk. Черт, вы могли бы запустить testdisk из вашей работающей системы, чтобы он просканировал и восстановил разделы, но я бы не стал этого делать, потому что не знаю, что это сделает с работающей системой с открытыми файлами.

Если вы хотите попробовать сделать резервную копию важных данных (у вас их еще нет?), сейчас самое время это сделать...

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