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.
[2] montar --loop y ver losetup