
저는 LVM과 일반적인 파티셔닝을 처음 접했기 때문에 이러한 상황에 처해 있습니다.
그 상황:
실수로 Fedora 16에서 생성된 LVM 디스크의 MBR을 덮어썼습니다.
이제 이 디스크의 다른 모든 내용은 그대로 유지됩니다. MBR만 손상되었습니다(또한 512바이트 중 처음 446바이트만 손상되었습니다). 실수로 다음을 실행하여 MBR을 손상시켰습니다.
$ dd if=/the/wrong/446-byte-file.txt of=/dev/sda
이 디스크(MBR이 손상됨)는 처음에/dev/sda시스템 A의 디스크는 이제 현재 시스템인 시스템 B에 보조 디스크로 연결됩니다./dev/sdb
, 파일 시스템/데이터 복구를 위한 것입니다. 현재 시스템 B에서는 마운트 해제할 수 없습니다.
fdisk -l
시스템 B의 출력은 다음과 같습니다 .
$ fdisk -l
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x8e678e67
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 475813887 237905920 83 Linux
/dev/sda2 475813888 488396799 6291456 82 Linux swap / Solaris
Disk /dev/sdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders, total 156301488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 1026047 512000 83 Linux
/dev/sdb2 1026048 156301311 77637632 8e Linux LVM
질문:와 함께/dev/sdaFedora 16의 LVM이 아닌 정상적인 설정을 실행하는 경우 수동으로 마운트하는 방법은 무엇입니까?/dev/sdb(손상된 MBR 포함) 시스템 B 내부 어딘가에서 모든 데이터를 복구할 수 있습니까? (그런데 데이터는 내부의 ext4 파일 시스템에 저장됩니다.)
내가 지금까지 시도한 것 :
a) 나는 pvs
이것을 발행하고 얻었습니다:
(VG 열이 어떻게 비어 있는지 확인하세요!)
$ pvs
PV VG Fmt Attr PSize PFree
/dev/sdb2 lvm2 a-- 74.04g 74.04g
b) 내가 발행했고 pvscan
, 이것을 얻었습니다:
$ pvscan
PV /dev/sdb2 lvm2 [74.04 GiB]
Total: 1 [74.04 GiB] / in use: 0 [0 ] / in no VG: 1 [74.04 GiB]
/etc/lvm/backup/vg_XYZ
c) 이전 백업에서 사용할 수 있는 콘텐츠가 있습니다 . 하지만 이 파일에서 볼륨 이름과 볼륨 경로를 추론/구성하는 방법을 모르겠습니다. (이 파일에서는/dev/sda2지금은 관심 분할이 되었습니다./dev/sdb2현재 시스템에서는 시스템 B):
# Generated by LVM2 version 2.02.84(2) (2011-02-09): Tue Oct 25 22:10:55 2011
contents = "Text Format Volume Group"
version = 1
description = "Created *after* executing 'vgchange -a y --sysinit'"
creation_host = "XYZ" # Linux XYZ 2.6.38.6-26.rc1.fc15.i686.PAE #1 SMP Mon May 9 20:36:50 UTC 2011 i686
creation_time = 1319560855 # Tue Oct 25 22:10:55 2011
vg_XYZ {
id = "WN8593-xRnx-dn29-rcpb-tRAm-Bs5R-93DGWw"
seqno = 3
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 65536 # 32 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "voQHGq-9m5t-u39a-UBWP-1qKM-sS4M-t3EPYG"
device = "/dev/sda2" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 155275264 # 74.041 Gigabytes
pe_start = 2048
pe_count = 2369 # 74.0312 Gigabytes
}
}
logical_volumes {
lv_swap {
id = "Osi18q-409G-iG1s-Mdb2-00Lt-wtQV-WpF2mN"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 126 # 3.9375 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 0
]
}
}
lv_root {
id = "Wc8qdx-sYKi-qFeM-Bv48-YvZC-ClGU-VrYl4W"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
segment_count = 1
segment1 {
start_extent = 0
extent_count = 2243 # 70.0938 Gigabytes
type = "striped"
stripe_count = 1 # linear
stripes = [
"pv0", 126
]
}
}
}
}
귀하의 신속한 도움에 크게 감사하겠습니다. 그렇지 않으면 정말 큰 문제가 생길 것입니다!
미리 감사드립니다...
/HS
답변1
다음 단계를 순서대로 시도해 보세요.
편집 (해리 작성)
vgcfgrestore
아래 나열된 나머지 명령(으로 시작vgscan
)을 적용하려면 a를 수행해야 했습니다 .vgcfgrestore vg_XYZ
e2fsck -y /dev/vg_XYZ/lv_root
또한 마운트가 성공하려면 필요했습니다 .
이 comp.os.linux.setup 게시물에 설명된 세부 정보여기.
이미 작업을 완료했으므로 pvscan
다음 단계로 진행하세요 vgscan
.
vgscan --partial --mknodes --verbose
vg_XYZ
운이 좋으면 에서 볼륨 그룹을 검색 /dev/sdb2
하고 에서 필요한 장치 노드를 생성해야 합니다 /dev
.
다음으로 볼륨 그룹을 사용 가능하게 만듭니다.
vgchange -a y vg_XYZ
다음을 수행하십시오 lvscan
.
lvscan --verbose
마지막으로 논리 볼륨을 사용 가능하게 만듭니다.
lvchange -a y vg_XYZ/lv_root
lv_root
이제 데이터에 액세스하기 위해 어딘가에 마운트할 수 있어야 합니다 .
mkdir -p /mnt/rescue
mount -t ext4 -o ro /dev/vg_XYZ/lv_root /mnt/rescue
행운을 빌어요!
답변2
그만큼PartedMagicliveCD/USB에는 해당 디스크에서 MBR을 복구할 수 있는 모든 종류의 도구가 있습니다.testdisk
하나이다, 그리고 다른 사람들도 있다는 것을 알고 있습니다. 잘못 입력된 명령으로 인해 내 스킨이 몇 번 저장되었는데, dd
별명이 붙은 이유가 있습니다 disk destroyer
.
답변3
백업 파일에 있는 번호를 사용하여 수동으로 장치를 생성할 수도 있습니다.
dmsetup create foo --table "0 146997248 linear /dev/sdb2 8259584"
mount -o ro /dev/mapper/foo /mnt
숫자는 다음과 같이 계산됩니다.
146997248 = extent_count * extent_size = 2243 * 65536
8259584 = pe_start + 126 * extent_size = 2048 + 126 * 65536
이것은 테스트되지 않았습니다. 백업이 현재 구성에 대한 정확한 그림을 제공하지 않는 경우(또는 계산이 잘못된 경우 - LVM에 대한 충분히 깊은 이해가 아닌 로컬 구성과 유사하게 재현한 경우) 작동하지 않습니다. .