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.