No meu host Proxmox 6.4, eu tinha um pool LVM Thin com 250 GB. Eu criei uma VM Ubuntu (que também usava LVM para a partição raiz) nela, mas acidentalmente a subscrevi em excesso, então o PV dentro da VM foi definido para 500 GB.
Tudo funcionou bem por um tempo, até que ultrapassei o limite oculto de 250 GB e a VM travou com um erro de E/S e se recusou a inicializar. Então agora estou tentando recuperar o disco. A tabela de partição do disco parece estar intacta:
$ fdisk -l /dev/vm-disks/vm-101-disk-0
Disk /dev/vm-disks/vm-101-disk-0: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 30874BBC-0B29-4083-B5BF-E973C665D87F
Device Start End Sectors Size Type
/dev/vm-disks/vm-101-disk-0p1 2048 4095 2048 1M BIOS boot
/dev/vm-disks/vm-101-disk-0p2 4096 2101247 2097152 1G Linux filesystem
/dev/vm-disks/vm-101-disk-0p3 2101248 1048573951 1046472704 499G Linux filesystem
eu corri
$ kpartx -a /dev/vm-disks/vm-101-disk-0
para criar /dev/mapper
entradas para as 3 partições internas vm-101-disk-0
, e isso funciona. Se eu correr:
$ file -sL /dev/mapper/vm--disks-vm--101--disk--0p3
/dev/mapper/vm--disks-vm--101--disk--0p3: LVM2 PV (Linux Logical Volume Manager), UUID: fdOzWR-sPcy-hyYo-Lj2H-YEnZ-wK3c-J6biES, size: 535794024448
Então posso ver aquele PV dentro da terceira partição do disco. Mas como posso montar isso em algum lugar do host para começar a recuperar dados? Obviamente, pvscan
o sistema host não o vê, pois está dentro de outro LV. Eu tenho alguma opção aqui para recuperação ou o fato de a VM pensar que tinha 500 GB quando na verdade não significava que eu danifiquei isso sem possibilidade de reparo?
Responder1
A VM acabou de receber erros de E/S de gravação quando o espaço no pool fino se esgotou. Para uma VM, isso parece que o disco rígido negou inesperadamente todas as gravações. Portanto, se a VM fosse de hardware simples, a primeira ação seria encontrar o novo disco rígido e clonar o disco rígido nele. Depois que o HW for consertado, você poderá consertar estruturas lógicas.
No caso de máquinas virtuais, você não possui nenhum hardware quebrado, você pode "consertar" o "disco rígido" restaurando a operação do volume fino. Basta ampliar o pool fino, usar lvextend
no pool fino LV para adicionar algum espaço.
E, quando terminar, inicialize a VM a partir de alguma mídia de recuperação (virtual) e faça a recuperação padrão do sistema de arquivos. Lembre-se, não poderia haver muita dificuldade; sistemas de arquivos modernos geralmente projetados para suportar esse tipo de falha.
Monitore o LVM fino. Embora o esgotamento do espaço de dados não seja um problema tão grande, ometadadosa exaustão pode ter um impacto muito maior. Não permita que isso aconteça.