LVM não surgindo após a reinicialização, não foi possível encontrar o dispositivo com o uuid

4

Tinha uma VM que funcionava até recentemente sem problemas, mas precisava ser reinicializada depois de algumas alterações na configuração. No entanto, após a reinicialização, a VM não voltou, dizendo que não conseguiu encontrar o dispositivo raiz (que era um volume LVM em / dev / mapper).

Inicializando no modo de recuperação, vi que os sistemas de arquivos em / dev / mapper e / dev / dm- * de fato não existiam.

O sistema de arquivos deve ser apresentado com

  • /dev/sda1 como a partição de inicialização
  • /dev/sda2 partição estendida contendo
  • /dev/sda5 e /dev/sda6 como partições LVM
  • /dev/sda{5,6} são ambos PVs em um único VG
  • com 2 LVs para o FS raiz e troca

Fazer um lvm pvshow me dá:

  Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
  Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
  Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
  --- Physical volume ---
  PV Name               unknown device
  VG Name               of1-server-lucid
  PV Size               19.76 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              5058
  Free PE               0
  Allocated PE          5058
  PV UUID               8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi

  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               of1-server-lucid
  PV Size               100.00 GiB / not usable 2.66 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               0
  Allocated PE          25599
  PV UUID               cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux

Portanto, parece que /dev/sda5 não está listado como PV e está causando erros.

fdisk -l :

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 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: 0x00044a6c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          32      248832   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              32       15665   125579256+   5  Extended
/dev/sda5              32        2611    20722970   8e  Linux LVM
/dev/sda6            2612       15665   104856223+  8e  Linux LVM

Portanto, posso ver que o /dev/sda5 device existe, mas blkid não está reportando nada para ele:

~ # blkid
/dev/sda1: UUID="d997d281-2909-41d3-a835-dba400e7ceec" TYPE="ext2" 
/dev/sda6: UUID="cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux" TYPE="LVM2_member" 

Depois de tirar um instantâneo dos discos, tentei recuperar o PV da configuração do arquivo:

~ # pvremove -ff /dev/sda5
Labels on physical volume "/dev/sda5" successfully wiped
~ # pvcreate --uuid=8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi /dev/sda5 --restorefile=/etc/lvm/archive/of1-dev-server_00000.vg
Couldn't find device with uuid '8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi'.
  Physical volume "/dev/sda5" successfully created
~ # vgchange -a y
2 logical volume(s) in volume group "of1-dev-server" now active"

Agora, pelo menos, o dispositivo tem um blkid :

/dev/sda1: UUID="d997d281-2909-41d3-a835-dba400e7ceec" TYPE="ext2" 
/dev/sda6: UUID="cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux" TYPE="LVM2_member" 
/dev/sda5: UUID="8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi" TYPE="LVM2_member" 

Fazer pvdisplay agora também mostra o dispositivo correto:

  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               of1-dev-danr-lucid
  PV Size               19.76 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              5058
  Free PE               0
  Allocated PE          5058
  PV UUID               8x38hf-mzd7-xTes-y6IV-xRMr-qrNP-0dNnLi

  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               of1-dev-danr-lucid
  PV Size               100.00 GiB / not usable 2.66 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               0
  Allocated PE          25599
  PV UUID               cuhP6R-QbiO-U7ye-WvXN-ZNq5-cqUs-VVZpux

E os dispositivos de mapeamento existem:

crw-rw----    1 root     root      10,  59 Jul 10 10:47 control
brw-rw----    1 root     root     252,   0 Jul 10 11:21 of1--dev--server-root
brw-rw----    1 root     root     252,   1 Jul 10 11:21 of1--dev--server-swap_1

Além disso, os LVMs parecem estar listados corretamente:

~ # lvdisplay
  --- Logical volume ---
  LV Name                /dev/of1-dev-danr-lucid/root
  VG Name                of1-dev-danr-lucid
  LV UUID                pioKjE-iJEp-Uf9S-0MxQ-UR0H-cG9m-5mLJm7
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                118.89 GiB
  Current LE             30435
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Name                /dev/of1-dev-danr-lucid/swap_1
  VG Name                of1-dev-danr-lucid
  LV UUID                mIq22L-RHi4-tudV-G6nP-T1e6-UQcS-B9hYUF
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                888.00 MiB
  Current LE             222
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

Mas tentar montar o dispositivo raiz me dá um erro:

~ # mount /dev/mapper/of1--dev--server-root /mnt2
mount: mounting /dev/mapper/of1--dev--server-root on /mnt2 failed: Invalid argument

Então eu tentei uma verificação de consistência de disco:

~ # fsck.ext4 -f /dev/mapper/of1--dev--server-root
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/mapper/of1--dev--server-root
[...]

Então eu tentei outro superbloco:

~ # mke2fs -n /dev/mapper/of1--dev--server-root
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
7798784 inodes, 31165440 blocks
1558272 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
952 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872
~ # fsck.ext4 -y -b 23887872 /dev/mapper/of1--dev--server-root

Após o que recebi um número ridículo de erros, os principais que vi foram:

  • O Superblock tem um diário inválido
  • Uma ou mais somas de verificação do descritor do grupo de blocos são inválidas.
  • Truncando inode órfão ()
  • Já apagou o bloco # 0 () encontrado no inode órfão
  • / dev / mapper / of1 - dev - server-root contém um sistema de arquivos com erros, verifique forçado
  • Redimensionar inode não válido. Recriar
  • Inode raiz não é um diretório.
  • O inode reservado 3 () tem um modo inválido
  • Inode do diretório HTREE tem nó raiz inválido
  • Inode, i_blocks é, deve ser 0.
  • Inode do diretório não conectado

Depois de muitas mensagens, diz que está pronto. Montar o diretório como acima funciona bem, mas o diretório está vazio com um diretório lost+found cheio de arquivos, a maioria apenas números, alguns têm nomes de arquivos vagamente relacionados a arquivos que existiam.

Então, como eu trago a VM de volta?

Sempre que vejo erros de disco, meu primeiro instinto é fazer snapshots para que as coisas não piorem, então tenho um snapshot logo após a reinicialização quando vi o erro pela primeira vez.

Sei que os dados estão em algum lugar, já que a VM funcionou sem problemas até que eu reiniciei. O usuário não lembra de ter mudado nada no sistema de arquivos recentemente, mas tinha quase um ano de atividade quando eu o reiniciei, assim todos os tipos poderiam ter acontecido desde então.

Nós também, infelizmente, não temos backups, pois o Puppet foi desativado neste nó.

O sistema operacional original era o Ubuntu Lucid, rodando no VMWare.

    
por Smudge 10.07.2014 / 15:32

1 resposta

1

Se eu entendi corretamente, você já reparou o volume, mesmo que tenha um diretório lost+found que pode ou não ter arquivos críticos.

O que está acontecendo agora que está impedindo a VM de inicializar? Ainda não consegue encontrar o dispositivo de inicialização?

Sua saída fdisk -l parece um pouco errada para mim. Você já considerou a possibilidade de que apenas a tabela de partição estivesse danificada? Nesse cenário, seu instantâneo pode ser útil e, no melhor dos casos, você não precisará nem de um fsck (nother). Mas vamos precisar de algo para tentar encontrar as compensações da partição - usei testdisk com sucesso mais de uma vez.

No pior dos casos, se você precisar extrair algo do volume, ferramentas forenses como PhotoRec ou autópsia / The Sleuth Kit pode ser útil.

Se nada disso funcionar, forneça um lsblk -o NAME,RM,SIZE,RO,TYPE,MAJ:MIN -fat também (esses sinalizadores servem apenas para mostrar o máximo de informações possível) e dmesg de saída relevante, se houver.

    
por 19.07.2014 / 06:47