여러 LV가 포함된 단일 VG를 사용하여 mdadm RAID 1에서 PV를 복구하고 있습니다.
기본 장치에는 불량 섹터가 몇 개 있었고(하나는 몇 개, 다른 하나는 많았음) 어리석은 오타로 인해 LVM 구성을 복원하기 위해 장치를 grep해야 했습니다. 운 좋게도 그것을 찾았고 복원된 구성은 원래 구성과 동일해 보입니다.
유일한 문제는 논리 볼륨에 유효한 파일 시스템이 없다는 것입니다. e2sl을 사용하여 대상 파일 시스템의 슈퍼블록 중 하나가 잘못된 논리 볼륨에 있음을 발견했습니다. 불행히도 저는 이 문제를 해결하거나 회피하는 방법을 모릅니다.
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
백업되지 않은 일부 데이터를 복구하기 위해 파일 시스템에 다시 액세스하는 단계가 한 단계만 남은 것 같습니다.
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
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
]
}
}
}
}
답변1
비슷한 질문이 있는 분들을 위해:
실제로 e2sl[1]을 사용하여 RAID 장치 중 하나에서 직접 파일 시스템 후보를 찾았고, 루프 장치[2]를 사용하여 LVM 및 소프트웨어 RAID를 건너뛰고 파일 시스템을 마운트했습니다. 오프셋을 약간 조정해야 했지만(슈퍼블록 위치는 파티션 시작 부분까지 1KB 오프셋이었습니다!) 결국 관리했습니다.
여기서부터는 구조가 매우 간단합니다. 루프 장치를 마운트 지점에 마운트하면 모든 것이 복사될 수 있습니다.
[2] mount --loop 및 losstup 보기