Antes de fazer qualquer alteração que possa causar muitos danos, faça uma cópia setor por setor do volume físico (como em: dd if=/dev/sdXY of=/path/to/safe/place.img ) em seu estado atual e armazene-o em algum lugar inalterado. Use pvdisplay para saber qual partição copiar. Se o pior acontecer (sistema de arquivos muito danificado para entender seu conteúdo), você ainda poderá usar o testdisk (se o sistema de arquivos residia em sua partição LVM em um bloco contíguo):
- executar
testdisk /path/to/image.img - selecione "Mídia não particionada":
testdisknão sabe como escrever o LVM, mas ainda lerá as informações das partições que encontrar - use "Analisar" para procurar sua partição; use "Deeper search" se o seu sistema de arquivos não for encontrado
- Use P para listar arquivos, então : / a para selecionar e c / C para copiar seu arquivos.
Supondo que sua partição LVM com falha não hospeda seus rootfs, faça um backup do diretório /etc/lvm também. Se a partição hospedou seus rootfs, talvez seus backups anteriores contenham esse diretório? Nós precisaremos disso. Se tudo mais falhar, talvez ainda seja possível encontrar o conteúdo dos arquivos de /etc/lvm/ usando um editor hexadecimal e pesquisar por string description = , supondo que eles não estejam fragmentados, mas isso é um processo muito longo.
Se você ainda estiver no shell initramfs e não tiver espaço HDD livre suficiente para a imagem, com sorte (usb-storage e outros módulos presentes no initramfs) você poderá montar um USB-HDD:
- conecte a unidade, aguarde alguns segundos até que ela gire
- as mensagens do kernel provavelmente serão exibidas para você, caso contrário, execute:
dmesg | tail - procure linhas que pareçam
[ 8391.759613] sd 6:0:0:0: [sdX] 15826944 512-byte logical blocks: (8.10 GB/7.55 GiB)(compare o tamanho para certificar-se de quesdXé seu USB-HDD) e[ 8391.770279] sdX: sdX1(com sdX1 ... sdXn sendo a lista de partições) -
executar:
mkdir -p /mnt/usb-hdd # ensure existing mountpoint mount /dev/sdXN /mnt/usb-hdd # substitute X for the drive letter and N for the partition number from (3) -
escreva a imagem de backup e / ou copie o
/etc/lvmbackup restaurado de/mnt/usb-hdd - não se esqueça de desmontar o thumbdrive depois de terminar:
umount /mnt/usb-hdd
Feito isso, dê uma olhada no seu presente /etc/lvm/backup e /etc/lvm/archive obtido do rootfs ou dos seus backups. Pode haver metadados de backup criados antes de você executar lvresize , o que causou todo esse dano. Procure nos arquivos dentro desses diretórios por uma linha começando com description = . Tente grep description .../etc/lvm/*/* para listar descrições; Se você ainda estiver no shell initramfs, use less , more ou, se não, cat e Shift + PgUp / Shift + PgDn para visualizar arquivos de texto. Existe um arquivo com Created *before* executing 'lvresize -l <something> /dev/vgprod/prod' ? Execute vgcfgrestore -f /etc/lvm/archive/<suitable archive file> vgprod para restaurar os metadados para seus valores anteriores e tente montar /dev/vgprod/prod posteriormente.
Em tais sutuações você deve evitar fazer qualquer tipo de fsck antes de ter copiado seus arquivos com sucesso e verificado que eles são seguros ou fez uma imagem da sua partição que você tem certeza que é capaz de restaurar. fsck em um sistema de arquivos truncado provavelmente piorará as coisas.