Corrigir partição física substituída do LVM

4

Eu usei um dispositivo inteiro como partição física LVM, apenas

sudo pvcreate /dev/xvdg

Infelizmente, enquanto isso estava em uso, eu acidentalmente substituí alguns dados (eu acho), escrevendo uma nova tabela de partição:

sudo fdisk /dev/xvdg , adicionar nova partição, escrever tabela de partições, excluir partição, escrever tabela de partições vazia

Aqui é onde eu estou atualmente. Tudo ainda parece estar funcionando, mas estou com medo de reiniciar, desmontar, etc ...

  • Está quebrado?
  • Se sim, qual é a melhor maneira de corrigir isso?

Obrigado!

    
por Cookie 25.12.2012 / 13:38

2 respostas

1

Assumindo que você estava usando o disco inteiro como o lvm pv, em vez de uma partição individual dentro dele, geralmente deveria estar bem, já que o cabeçalho LVM não está no primeiro setor, onde está a tabela de partição, especialmente quando se usa 512 setores de bytes.

A tabela de partições está no primeiro setor: Veja por exemplo aqui : Discos rígidos podem ser divididos em um ou mais lógicos discos chamados partições. Esta divisão é registrada na tabela de partições, encontrada no setor 0 do disco.

O cabeçalho LVM é por padrão no segundo setor: Veja por exemplo aqui : Por padrão, o rótulo LVM é colocado no segundo setor de 512 bytes. Você pode sobrescrever esse padrão colocando o rótulo em qualquer um dos quatro primeiros setores. Isso permite que os volumes LVM coexistam com outros usuários desses setores, se necessário.

Cuidado: Não tenho certeza do que acontece se o tamanho do setor usado pelo fdisk for maior, digamos 1024 bytes - o LVM ainda pode estar no segundo setor de 512 bytes e o fdisk pode sobrescrever todo o setor de 1024 bytes?

Como um aparte: Se você não tiver certeza e tiver acesso a espaço adicional (por exemplo, no Amazon EC2), poderá criar um volume de tamanho idêntico, fazer um pvcreate nele, adicioná-lo ao grupo de volume, usar um pvmove para mover os dados para o novo volume e, em seguida, um vgreduce para remover o volume afetado.

    
por 26.12.2012 / 04:07
0

Sim, em 99,99% dos casos, está quebrado. Razão de você ter sobrescrito a tabela de partições. Os metadados do lvm residem no segundo setor de 512 bytes do PV. Assim, durante a criação da nova partição, se você tocou nesses setores, seus metadados foram eliminados. Essencialmente, um reinício, um montante vai estragar as coisas.

Existem dois possíveis (ainda que não sejam possíveis) para hacks.

1) Se você conhece a tabela de partição exata do último sistema de arquivos conhecido, você pode rodar o fdisk e tentar criá-lo na mesma ordem exata. Você precisa saber em quais setores os antigos fs costumavam começar e terminar. Crie a partição como antes e isso pode funcionar.

2) Se as coisas não funcionam assim, então há outra solução alternativa de pvcreate. Seu último backup lvm conhecido será armazenado no arquivo /etc/lvm/archive/volume_group_name_XXXX.vg . Você precisa obter o UUID do PV de lá. Então, se as coisas são seu favor, você pode fazer isso.

pvcreate --uuid <put_uuid_here> /etc/lvm/archive/volume_group_name_XXXX.vg <physical-volume name>

Mas se você puder, faça backup dos seus dados primeiro. O pvcreate não toca nos dados do usuário, ele lida apenas com metadados, mas se no momento da inicialização, o fsck encontrar alguma inconsistência, ele pode se deparar com erros de fs e discos potencialmente não recuperáveis.

    
por 25.12.2012 / 19:29

Tags