Назад | Перейти на главную страницу

Восстановить таблицу разделов для lvm

Мне удалось запустить fdisk не на том диске. Однако мне удалось сохранить журнал сеанса терминала.

Fdisk перед авария:

~$ sudo fdisk -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       36473   292969341   8e  Linux LVM
/dev/sda2           36474       38913    19599300    b  W95 FAT32

Позже в журнале я обнаружил:

$ sudo fdisk -u /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c').

Command (m for help): p

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              64   550000000   274999968+  83  Linux
/dev/sda2       550000001   625142447    37571223+  83  Linux

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              64   550000000   274999968+  8e  Linux LVM
/dev/sda2       550000001   625142447    37571223+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Das Gerät oder die Ressource ist belegt.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Система продолжала работать нормально. Я разделил / dev / sdb так, как хотел, и, наконец, запустил kpartx на / dev / sdb. Полагаю, поэтому тома на sda вели себя корректно до перезагрузки.

Заметил ошибку и попытался восстановить таблицу разделов на / dev / sda

Однако мне не удалось восстановить исходную таблицу разделов. Количество блоков, отображаемых для / dev / sda1, всегда равно 292969348, т.е. +7 по сравнению с исходным. Я помню, как обновлял fdisk перед разбиением sdb, может это из-за более новой версии?

Тем не менее, я считал систему безопасной, так как не возражал против неиспользуемого раздела fat32. После перезагрузки lvm находит физический том, но не находит группы томов. Я определил одну группу томов, состоящую только из sda1 и нескольких логических томов в этой группе.

Текущее состояние системы:

~# fdisk -c -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x72fc82e8

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       36473   292968348+  8e  Linux LVM
/dev/sda2           36474       38913    19599300    b  W95 FAT32

~# pvdisplay 
  "/dev/sda1" is a new physical volume of "279,40 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda1
  VG Name               
  PV Size               279,40 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ur3J4Y-cwvC-lji2-RPk0-39xb-ltzW-ogN4Sd

~# vgscan 
  Reading all physical volumes.  This may take a while...
  No volume groups found

~# pvck -v /dev/sda1
    Scanning /dev/sda1
  Found label on /dev/sda1, sector 1, type=LVM2 001
  Found text metadata area: offset=4096, size=192512
    Found LVM2 metadata record at offset=168448, size=28160, offset2=0 size2=0
    Found LVM2 metadata record at offset=67584, size=100864, offset2=0 size2=0

Почему я не могу восстановить исходную таблицу разделов с точным количеством блоков? Почему lvm ​​не находит группы томов? Какие у меня варианты сейчас? Могут ли множественные метаданные lvm помочь? Как мне их использовать?

Я не гарантирую, что все ваши данные вернутся, но вы можете попробовать переделать метаданные LVM. В любом случае, в HPUX это вообще не касается области данных, но вам нужна информация о том, как был создан LVM.

  1. Сначала я бы избавился от старой информации о VG (vgexport oldvg).
  2. запустите pvcreate на / dev / sda1
  3. vgсоздайте новый vg, используя / dev / sda1, используя те же параметры, что и у вас изначально
  4. запустите lvcreate, используя те же параметры, что и у вас изначально
  5. выполните fsck на / dev / newvg / newlv (не настоящие имена) и посмотрите, распознает ли он ваши данные.

Опять же, я успешно использовал этот тип процесса в системах HP / UX LVM, и он может сработать в вашем случае.

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

НО, если вы не хотите потери данных, обязательно сделайте резервную копию диска, прежде чем попробовать мои предложения.

Вы должны разбить резервную копию своей таблицы разделов и dd его обратно на место. Или запустите инструмент для восстановления разделов (интересно первое попадание в Google по запросу «восстановление разделов Linux»). Но я бы придерживался резервной копии таблицы разделов.

Восстановление таблицы разделов из выходных данных было ключом к успеху. Обратите внимание на небольшую разницу в приведенных выше дампах терминала между исходной и восстановленной таблицей разделов: хотя значения цилиндров совпадают, фактическое количество секторов не будет.

Дополнительная помощь пришла от тестовый диск который, наконец, правильно обнаружил и восстановил информацию о разделе. Во время процедуры восстановления я заметил на своих резервных копиях следующие белые пятна:

  • Резервное копирование таблицы разделов, например используя fdisk -u -l / dev / disk / by-id / example и знайте различные единицы измерения, такие как цилиндры и сектора.
  • Бэкап конфигурации lvm в / etc / lvm. (На самом деле у меня было это резервное копирование, но я этого не опасался)