어제 저는 Windows의 디스크 파티셔닝 도구를 사용하여 디스크 레이아웃을 읽었습니다(아무 것도 건드리지 않고 열었습니다). 볼륨 그룹의 일부가 적어도 이름 측면에서(레이블 및 UUID) 덮어쓰기된 것처럼 보입니다. lv 도구는 항상 누락된 파티션 "pNvsomething-something"에 대한 오류 메시지를 표시합니다.
따라서 /etc/lvm/archive
, /dev/sdb
및/는 dev/sdd1
모두 볼륨 그룹에서 사용됩니다.
physical_volumes {
pv0 {
id = "pNv7bl-5uND-rHH1-B3kK-Jcud-rxCm-7nJcKb"
device = "/dev/sdb" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 1953525168 # 931,513 Gigabytes
pe_start = 2048
pe_count = 238467 # 931,512 Gigabytes
}
pv1 {
id = "983nT1-PMwL-21Fz-tGw4-1ynZ-4JP9-s5OmGv"
device = "/dev/sdd1" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 1562500000 # 745,058 Gigabytes
pe_start = 2048
pe_count = 190734 # 745,055 Gigabytes
}
}
이것은 다음의 출력입니다 blkid /dev/sdb
.
/dev/sdb: PTUUID="2539097c-4f75-41e4-86c2-7e60f1f561ee" PTTYPE="gpt"
그리고 /dev/sdb1
:
/dev/sdb1: PARTLABEL="Microsoft reserved partition" PARTUUID="ce5feefa-d5ab-4ae4-8147-d06a81fe32d3"
그 130mb의 "Microsoft Reserved 파티션"이 어디서 왔는지는 모르겠지만 lvm 아카이브에 표시된 크기가 lsblk에 표시된 크기와 동일하기 때문에 좋은 것 같습니다.
sdb는 UUID와 파티션 유형이 다르지만 동일한 것 같습니다. 내 생각엔 130MB 파티션이훔친lv 파티션 크기를 조정하여 생성된 할당되지 않은 공간에서. 어떻게 해야 합니까? mkfs
그런 다음 lvm이 새 UUID를 가리키도록 하시겠습니까? 데이터를 덮어쓰면 안 됩니다.
고쳐 쓰다
한참을 둘러보니 mkfs 아이디어는 lvm 도구를 사용해야 할 것 같아서 멍청한 아이디어입니다.
UUID를 복원 /etc/lvm/backup/nameOfVG
하고 올바른 장치를 가리킬 수 있습니다.
pvcreate --restorefile /etc/lvm/backup/datavg/ --uuid pNv-something /dev/sdb
이제 문제는 pvcreate와 같은 도구가 /dev/sdb에 액세스할 수 없다는 것입니다.
Device /dev/sdX not found (or ignored by filtering).
일부 링크:
Google은 또한 매우 유사한 문제를 설명하는 일부 Red Hat 솔루션에 대한 링크를 제공했지만 유료화되어 있었습니다.
답변1
첫째: 불완전한 LV에서 데이터를 복구하려면 fsck(또는 mkfs 또는 FS/파티션에 쓰는 모든 항목)를 실행하세요. 항상 가능한 한 최소한의 수정만으로 PV를 원래 상태로 복원해야 합니다!
둘째: 가능하다면 먼저 백업을 만드십시오. 데이터 복구 소프트웨어가 필요할 수 있습니다. 어쨌든 데이터 복사본에 대해 실행하고 원본 데이터를 그대로 유지하는 것이 더 좋습니다.
lsblk는 무엇을 보여줍니까? 그리고 헤이지는? sgdisk -p /dev/sdb도 있습니까? LV란 무엇인가요
lvs --segments -a -o+pe_ranges
? 이 130MB는 /dev/sdb의 시작 부분에서 가져오는 경우가 많으므로 포맷한 경우 처음 130MB가 손상될 가능성이 높습니다.이제
wipefs
GPT를 사용하여 GPT 서명을 제거하면 위 명령을 실행할 수 있습니다pvcreate
. 또는 더 많은 제어를 원할 경우 첫 번째 섹터를 덮어쓰십시오(이것이 충분한지 확실하지 않음) -dd if=/dev/zero of=/dev/sdb bs=4k count=1
.어쨌든, 저는 파티션 내에서 데이터를 이동할 기회를 갖고 싶습니다. 디스크가 Windows 시스템에서 사용될 가능성이 있는 경우 LVM을 인식하지 않는 시스템이 해당 디스크를 사용되지 않는 디스크로 처리하지 않도록 파티션 테이블을 사용하는 것이 좋습니다.