¿Cómo puedo reintegrar un pv perdido y encontrado en un LVM vg?

¿Cómo puedo reintegrar un pv perdido y encontrado en un LVM vg?

Recientemente perdí un RAID que era un volumen físico de uno de mis grupos de volúmenes LVM de Linux. Terminé haciendo un vgreduce --removemissingy seguí con la tarea de restaurar los datos.

Bueno, hoy encontré ese RAID (estaba escondido, no preguntes).

# pvdisplay -m /dev/md2
  WARNING: Volume group mg20 is not consistent
  "/dev/md2" is a new physical volume of "499.87 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/md2
  VG Name               
  PV Size               499.87 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               SUXIe9-B4xG-Qlbz-5cSd-f1dh-cRQh-vOF4qz

mg20no es consistente porque el PV de objetos perdidos y encontrados /dev/md2probablemente contiene copias del antiguo catálogo de volúmenes lógicos que menciona el sistema de archivos que se encuentra en /dev/md2.

/dev/md2¿Cómo me reintegro mg20y conservo el sistema de archivos que reside en él? (y ahorrarme la molestia de restaurar su contenido) Un factor simplificador es que /dev/md2contenía solo un LV y ese LV estaba completamente contenido en /dev/md2.

Respuesta1

me di cuenta deamanera de recuperar la redada. Los sistemas LVM modernos realizan copias de seguridad de la configuración VG con bastante frecuencia. Puede ver una lista de sus copias de seguridad y los comandos que las activaron usando vgcfgrestore --list. Elegí el de antes cuando hice el vgreduce --removemissingy encontré estos bits relevantes en su interior:

pv8 {
        id = "SUXIe9-B4xG-Qlbz-5cSd-f1dh-cRQh-vOF4qz"
        device = "unknown device"       # Hint only

        status = ["ALLOCATABLE"]
        flags = ["MISSING"]
        dev_size = 1048312832   # 499.875 Gigabytes
        pe_start = 2048
        pe_count = 127967       # 499.871 Gigabytes
}

y

homes18 {
        id = "d7yt43-PMTv-XnsH-qAff-3d5A-ilB6-eQB0Jy"
        status = ["READ", "WRITE", "VISIBLE"]
        flags = []
        segment_count = 1

        segment1 {
                start_extent = 0
                extent_count = 89600    # 350 Gigabytes

                type = "striped"
                stripe_count = 1        # linear

                stripes = [
                        "pv8", 0
                ]
        }
}

Así que creé una copia de ese archivo y lo eliminé "MISSING"del archivo flags =. También configuré el device = "/dev/md2", aunque probablemente no fue necesario. Realicé un vgcfgrestore -f /etc/lvm/archive/mg20_synthetic-2015.vg mg20y ahora mi mg20/homes18 está de vuelta y pasa un fsck.

Para ser honesto, no estoy realmente satisfecho con esta respuesta. Es un poco excesivo restaurar TODA la configuración.

Creo que una respuesta real podría implicar lvcreate -Z n, pero soy demasiado vago para realizar los experimentos necesarios para verificar esto.

información relacionada