Recuperar tabela de partições para lvm

2

Eu consegui rodar o fdisk no disco errado. No entanto, consegui salvar um log da sessão de terminal.

Fdisk antes do acidente:

~$ 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

Mais tarde, no log, encontrei:

$ 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.

O sistema continuou funcionando bem. Eu particionei / dev / sdb como queria corretamente e finalmente execute o kpartx em / dev / sdb. Eu suponho que é por isso que os volumes em sda se comportaram corretamente até a reinicialização.

Eu notei o erro e tentei recuperar a tabela de partições em / dev / sda

No entanto, não consegui recuperar a tabela de partições original. O número de blocos exibidos para / dev / sda1 é sempre 292969348, portanto, +7 comparado ao original. Lembro-me de atualizar o fdisk antes de particionar o sdb, talvez seja por causa da versão mais recente?

No entanto, considerei o sistema seguro, pois não me importei com a partição fat32 que não é utilizada. Após a reinicialização, o lvm encontra o volume físico, mas não há grupos de volumes. Eu tinha definido um único grupo de volumes consistindo apenas de sda1 e alguns volumes lógicos nesse grupo.

Status atual do sistema:

~# 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

Por que não posso restaurar a tabela de partições original com a contagem exata de blocos? Por que o lvm não encontra grupos de volumes? Quais são minhas opções agora? Os múltiplos metadados do lvm podem ser salvos? Como eu os usaria?

    
por ordnungswidrig 21.07.2011 / 23:20

3 respostas

1

Você deve dividir o backup de sua tabela de partições e dd de volta no lugar. Ou executar uma ferramenta de recuperação de partição (O primeiro hit no Google para "recuperar partições Linux" parece interessante). Mas eu ficaria com o backup da tabela de partições.

    
por 21.07.2011 / 23:44
1

Não garantirei que todos os seus dados retornarão, mas você poderá tentar refazer os metadados do LVM. No HPUX de qualquer forma, isso não toca na área de dados, mas você precisa ter as informações sobre como o LVM foi criado.

  1. Eu primeiro me livraria das informações antigas do VG (vgexport oldvg).
  2. execute o pvcreate no / dev / sda1
  3. vgcreate um newvg usando / dev / sda1 usando os mesmos parâmetros que você tinha originalmente
  4. execute o lvcreate usando exatamente os mesmos parâmetros que você tinha originalmente
  5. faça um fsck no / dev / newvg / newlv (nomes não reais) e veja se ele reconhece seus dados.

Novamente, usei esse tipo de processo em sistemas HP / UX LVM com sucesso e isso pode funcionar no seu caso.

Você pode precisar re-grub seu disco também se este for um disco de inicialização / inicialização.

MAS, se você não quiser perda de dados, faça backup do disco antes de tentar minhas sugestões.

    
por 22.07.2011 / 01:46
0

A restauração da tabela de partições a partir da saída foi a chave para o sucesso. Por favor, observe a pequena diferença nos dumps de terminal acima entre a tabela de partições original e a restaurada: embora os valores do cilindro sejam correspondentes, a contagem real do setor não seria.

Uma ajuda adicional veio do testdisk que finalmente detectou e restaurou as informações da partição corretamente. Durante o procedimento de recuperação, observei os seguintes pontos em branco nos meus backups:

  • Backup da tabela de partições, por ex. usando fdisk -u -l / dev / disk / by-id / exemplo e saber as diferentes unidades como cilindros e setores.
  • Backup da configuração do lvm em / etc / lvm. (Eu realmente tive este backup, mas não foi awary disso)
por 27.07.2011 / 13:49