I'm recovering a PV on a mdadm RAID 1 with a single VG containing several LVs.The underlying devices have several bad sectors (one just a few, the other really much) and a silly typo made it necessary to restore the LVM configuration by grepping through the devices. Luckily I found it and the restored configuration looks like the original one.The only problem is that the logical volumes have no valid file system. With e2sl I found that one of the superblocks of my target fs is in the wrong logical volume. Sadly I have no idea how to correct or circumvent this issue.root@rescue ~/e2sl # ./ext2-superblock -d /dev/vg0/tmp  | grep 131072000Found: 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 131072000Found: 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)^CI'm feeling just an inch away from accessing my filesystem(s) again to recover some non-backed-up data.LVM Configuration:root@rescue ~ # pvs  PV         VG   Fmt  Attr PSize PFree  /dev/md1   vg0  lvm2 a--  2.71t 767.52groot@rescue ~ # vgs  VG   #PV #LV #SN Attr   VSize VFree  vg0    1   5   0 wz--n- 2.71t 767.52groot@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.00gVG Configuration:# Generated by LVM2 version 2.02.95(2) (2012-03-06): Sun Oct 13 23:56:33 2013contents = Text Format Volume Groupversion = 1description = Created *after* executing 'vgs'creation_host = rescue        # Linux rescue 3.10.12 #29 SMP Mon Sep 23 13:18:39 CEST 2013 x86_64creation_time = 1381701393      # Sun Oct 13 23:56:33 2013vg0 {    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                            ]                    }            }    }}
Restored VG has shifted volumes
linux;lvm;data recovery;ext4;raid
For anyone who has a similar problem:I used e2sl [1] to actually find candidates for the filesystems directly from one of the RAID devices and mounted the filesystem using a loop device [2] skipping LVM and the software RAID. I had to fiddle a bit with the offset (The superblock position has an offset of 1KB to the start of the partition!) but in the end I managed to do it.From there the rescue was easy as pie: Mounting the loopdevice to a mount point and everything was there to be copied.[1] http://schumann.cx/e2sl/[2] mount --loop & see losetup