Windows가 LVM pv 메타데이터를 덮어씁니다.

Windows가 LVM pv 메타데이터를 덮어씁니다.

어제 저는 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를 원래 상태로 복원해야 합니다!

둘째: 가능하다면 먼저 백업을 만드십시오. 데이터 복구 소프트웨어가 필요할 수 있습니다. 어쨌든 데이터 복사본에 대해 실행하고 원본 데이터를 그대로 유지하는 것이 더 좋습니다.

  1. lsblk는 무엇을 보여줍니까? 그리고 헤이지는? sgdisk -p /dev/sdb도 있습니까? LV란 무엇인가요 lvs --segments -a -o+pe_ranges? 이 130MB는 /dev/sdb의 시작 부분에서 가져오는 경우가 많으므로 포맷한 경우 처음 130MB가 손상될 가능성이 높습니다.

  2. 이제 wipefsGPT를 사용하여 GPT 서명을 제거하면 위 명령을 실행할 수 있습니다 pvcreate. 또는 더 많은 제어를 원할 경우 첫 번째 섹터를 덮어쓰십시오(이것이 충분한지 확실하지 않음) - dd if=/dev/zero of=/dev/sdb bs=4k count=1.

  3. 어쨌든, 저는 파티션 내에서 데이터를 이동할 기회를 갖고 싶습니다. 디스크가 Windows 시스템에서 사용될 가능성이 있는 경우 LVM을 인식하지 않는 시스템이 해당 디스크를 사용되지 않는 디스크로 처리하지 않도록 파티션 테이블을 사용하는 것이 좋습니다.

관련 정보