En corto

Arranca la ISO de Proxmox → Advanced Options → Install Proxmox VE (Debug mode); en el primer shell pulsa Ctrl+D para llegar al segundo, que ya tiene LVM:

1
2
3
4
vgscan
vgchange -ay
lvcreate -L 4M pve -n grubtemp   # cualquier cambio en los metadatos de LVM sirve
reboot

Con el nodo ya arriba, limpia y deja el arreglo permanente:

1
2
3
lvremove pve/grubtemp
[ -d /sys/firmware/efi ] && apt install grub-efi-amd64     # UEFI
# BIOS legacy: grub-install /dev/sdX && update-grub        # el disco, no la partición

El error

1
2
3
error: disk 'lvmid/Xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx/Yyyyyy-yyyy-yyyy-yyyy-yyyy-yyyy-yyyyyy' not found.
Entering rescue mode...
grub rescue>

El disco está bien, el VG pve está bien y los datos están bien. A veces el mismo bug avisa antes, durante un apt full-upgrade:

1
/usr/sbin/grub-probe: error: disk `lvmid/...' not found.

Si ves eso en update-grub, aplica el arreglo antes de reiniciar.

Por qué pasa

LVM guarda sus metadatos en disco en un ring buffer. Cada cambio (crear, borrar o redimensionar un LV) escribe una copia nueva más adelante en el buffer, y tarde o temprano el texto da la vuelta al final. GRUB 2.06 de Debian 11 (PVE 7, 2.06-3) no sabe leer esa vuelta: no encuentra el VG, no encuentra el LV pve/root y cae a grub rescue.

Por eso “arreglarlo” es tan raro como hacer un cambio cualquiera en LVM: los metadatos se reescriben en otra posición, normalmente sin vuelta, y GRUB los vuelve a leer. Y por eso vuelve a pasar semanas o meses después, cuando el buffer da la vuelta otra vez, si el GRUB instalado en el disco sigue siendo el viejo.

En el lab el cambio que sacó del apuro fue lvextend -L +1G /dev/pve/root. Funciona igual, pero deshacerlo con lvreduce sobre el root montado es jugar con fuego; si lo hiciste así, mejor conserva el 1G (resize2fs /dev/pve/root) o usa el LV de usar y tirar del En corto.

Procedimiento completo

  1. Entra al sistema. Dos vías desde la ISO de Proxmox:

    • Rescue Boot (Advanced Options): la ISO busca la instalación y arranca su kernel saltándose el GRUB roto. Si funciona, ya estás dentro del sistema real y puedes pasar al paso 3.
    • Debug mode: shell de rescate. Ctrl+D en el primer prompt; en el segundo ya están los módulos de LVM.
  2. Dispara un cambio de metadatos (solo si entraste por Debug mode):

    1
    2
    3
    4
    
    vgscan
    vgchange -ay
    lvcreate -L 4M pve -n grubtemp
    reboot
    
  3. Ya en el sistema normal, quita el LV temporal y mira si los metadatos siguen dando la vuelta:

    1
    2
    
    lvremove pve/grubtemp
    vgscan -vvv 2>&1 | grep 'Reading metadata'
    

    Una salida que termina en (+0) significa sin vuelta; cualquier otro valor, que el problema va a repetirse hasta que reinstales GRUB.

  4. Reinstala el GRUB con el fix. El paquete de PVE 8 y 9 (2.06-13 o más nuevo) ya lo trae, pero el binario que está en el ESP o en el MBR solo se reescribe cuando el paquete se (re)instala:

    1
    2
    3
    4
    5
    6
    7
    8
    
    # UEFI: en nodos actualizados desde PVE 7 suele estar grub-pc y no grub-efi-amd64
    dpkg -l | grep -E '^ii +grub-'
    apt install grub-efi-amd64
    efibootmgr -v            # confirma la entrada "proxmox"
    
    # BIOS legacy
    grub-install /dev/sdX
    update-grub
    

    En PVE 7 el arreglo de verdad es actualizar a PVE 8; el workaround solo te compra tiempo.

Trampas

  • grub rescue> no te va a sacar de esta. ls (lvm/pve-root) no muestra nada porque el módulo lvm es precisamente el que no entiende los metadatos. No pierdas tiempo ahí.
  • Root en ZFS no pasa por aquí. Los nodos con rpool arrancan con proxmox-boot-tool; ese es otro camino y otros errores.
  • Apunta a las particiones correctas si haces grub-install a mano: el disco (/dev/sda), no /dev/sda1; el ESP montado en /boot/efi para UEFI.
  • En clúster, arreglado un nodo revisa los demás con vgscan -vvv | grep 'Reading metadata'; la instalación es la misma y el buffer también.

Referencias: Recover From Grub Failure en la wiki de Proxmox y el hilo del foro.