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":
testdisk
nã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/lvm
backup 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.