VG restaurado ha cambiado de volumen

VG restaurado ha cambiado de volumen

Estoy recuperando un PV en un mdadm RAID 1 con un solo VG que contiene varios LV.

Los dispositivos subyacentes tienen varios sectores defectuosos (uno solo unos pocos, el otro muchísimo) y un error tipográfico tonto hizo necesario restaurar la configuración LVM revisando los dispositivos. Por suerte lo encontré y la configuración restaurada se parece a la original.

El único problema es que los volúmenes lógicos no tienen un sistema de archivos válido. Con e2sl descubrí que uno de los superbloques de mi fs objetivo está en el volumen lógico incorrecto. Lamentablemente, no tengo idea de cómo corregir o solucionar este problema.

root@rescue ~/e2sl # ./ext2-superblock -d /dev/vg0/tmp  | grep 131072000
Found: block 20711426 (cyl 1369, head 192, sector 50), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
root@rescue ~/e2sl # ./ext2-superblock -d /dev/vg0/home | grep 131072000
Found: block 2048 (cyl 0, head 32, sector 32), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 526336 (cyl 34, head 194, sector 34), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 1050624 (cyl 69, head 116, sector 36), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 1574912 (cyl 104, head 38, sector 38), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 2099200 (cyl 138, head 200, sector 40), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 6293504 (cyl 416, head 56, sector 56), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 6817792 (cyl 450, head 218, sector 58), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 12584960 (cyl 832, head 81, sector 17), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 20973568 (cyl 1387, head 33, sector 49), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 32507904 (cyl 2149, head 238, sector 30), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 63440896 (cyl 4195, head 198, sector 22), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
Found: block 89655296 (cyl 5929, head 139, sector 59), 131072000 blocks, 129988776 free blocks, 4096 block size, (null)
^C

Me siento a sólo una pulgada de acceder nuevamente a mi(s) sistema(s) de archivos para recuperar algunos datos de los que no se hizo copia de seguridad.

Configuración LVM:

root@rescue ~ # pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/md1   vg0  lvm2 a--  2.71t 767.52g

root@rescue ~ # vgs
  VG   #PV #LV #SN Attr   VSize VFree
  vg0    1   5   0 wz--n- 2.71t 767.52g

root@rescue ~ # lvs
  LV        VG   Attr     LSize   Pool Origin Data%  Move Log Copy%  Convert
  backup    vg0  -wi-a--- 500.00g
  container vg0  -wi-a--- 500.00g
  home      vg0  -wi-a--- 500.00g
  root      vg0  -wi-a--- 500.00g
  tmp       vg0  -wi-a---  10.00g

Configuración VG:

# Generated by LVM2 version 2.02.95(2) (2012-03-06): Sun Oct 13 23:56:33 2013

contents = "Text Format Volume Group"
version = 1

description = "Created *after* executing 'vgs'"

creation_host = "rescue"        # Linux rescue 3.10.12 #29 SMP Mon Sep 23 13:18:39 CEST 2013 x86_64
creation_time = 1381701393      # Sun Oct 13 23:56:33 2013

vg0 {
    id = "7p0Aiw-pBpd-rn6Y-geFb-jyZe-gide-Anc9ag"
    seqno = 19
    format = "lvm2" # informational
    status = ["RESIZEABLE", "READ", "WRITE"]
    flags = []
    extent_size = 8192              # 4 Megabytes
    max_lv = 0
    max_pv = 0
    metadata_copies = 0

    physical_volumes {

            pv0 {
                    id = "GBIwI4-AxBa-6faf-aLfB-UZiP-iSS9-FaOrhH"
                    device = "/dev/md1"     # Hint only

                    status = ["ALLOCATABLE"]
                    flags = []
                    dev_size = 5824875134   # 2.71242 Terabytes
                    pe_start = 384
                    pe_count = 711044       # 2.71242 Terabytes
            }
    }

    logical_volumes {

            root {
                    id = "1e3gvq-IJnX-Aimz-ziiY-zucE-soCO-YU2ayp"
                    status = ["READ", "WRITE", "VISIBLE"]
                    flags = []
                    segment_count = 1

                    segment1 {
                            start_extent = 0
                            extent_count = 128000   # 500 Gigabytes

                            type = "striped"
                            stripe_count = 1        # linear

                            stripes = [
                                    "pv0", 0
                            ]
                    }
            }
            tmp {
                    id = "px8JAy-JnkP-Amry-uHtf-lCUB-rfdx-Z8y11y"
                    status = ["READ", "WRITE", "VISIBLE"]
                    flags = []
                    segment_count = 1

                    segment1 {
                            start_extent = 0
                            extent_count = 2560     # 10 Gigabytes

                            type = "striped"
                            stripe_count = 1        # linear

                            stripes = [
                                    "pv0", 128000
                            ]
                    }
            }

            home {
                    id = "e0AZbd-22Ss-RLrF-TgvF-CSDN-Nw6w-Gj7dal"
                    status = ["READ", "WRITE", "VISIBLE"]
                    flags = []
                    segment_count = 1

                    segment1 {
                            start_extent = 0
                            extent_count = 128000   # 500 Gigabytes

                            type = "striped"
                            stripe_count = 1        # linear

                            stripes = [
                                    "pv0", 130560
                            ]
                    }
            }

            backup {
                    id = "ZXNcbK-gYKj-LJfm-f193-Ozsi-Rm3Y-kZL37c"
                    status = ["READ", "WRITE", "VISIBLE"]
                    flags = []
                    creation_host = "new.bountin.net"
                    creation_time = 1341852222      # 2012-07-09 18:43:42 +0200
                    segment_count = 1

                    segment1 {
                            start_extent = 0
                            extent_count = 128000   # 500 Gigabytes

                            type = "striped"
                            stripe_count = 1        # linear

                            stripes = [
                                    "pv0", 258560
                            ]
                    }
            }

         container {
                    id = "X9wheh-3ADB-Fiau-j7SR-pcH9-hXne-K2NVAc"
                    status = ["READ", "WRITE", "VISIBLE"]
                    flags = []
                    creation_host = "new.bountin.net"
                    creation_time = 1341852988      # 2012-07-09 18:56:28 +0200
                    segment_count = 1

                    segment1 {
                            start_extent = 0
                            extent_count = 128000   # 500 Gigabytes

                            type = "striped"
                            stripe_count = 1        # linear

                            stripes = [
                                    "pv0", 386560
                            ]
                    }
            }
    }
}

Respuesta1

Para cualquiera que tenga un problema similar:

Utilicé e2sl [1] para encontrar candidatos para los sistemas de archivos directamente desde uno de los dispositivos RAID y monté el sistema de archivos usando un dispositivo de bucle [2] omitiendo LVM y el software RAID. Tuve que trastear un poco con el desplazamiento (¡la posición del superbloque tiene un desplazamiento de 1 KB hasta el inicio de la partición!) pero al final logré hacerlo.

A partir de ahí, el rescate fue muy fácil: montar el dispositivo de bucle en un punto de montaje y todo estaba allí para ser copiado.

[1]http://schumann.cx/e2sl/

[2] montar --loop y ver losetup

información relacionada