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 保留分区”来自哪里,但我想这很好,因为 lvm 存档中显示的大小与 lsblk 显示的大小相同。

sdb 有不同的 UUID 和分区类型,但似乎完全相同。我猜 130mb 的分区是被盗来自通过调整 lv 分区大小而产生的未分配空间。我应该怎么办?mkfs然后将lvm指向新的UUID?不应该有任何数据被覆盖。


更新

我已经环顾了一段时间,mkfs 的想法是一个愚蠢的想法,因为看起来我应该使用 lvm 工具。

我可以恢复/etc/lvm/backup/nameOfVGuuid 并将其指向正确的设备。

pvcreate --restorefile /etc/lvm/backup/datavg/ --uuid pNv-something /dev/sdb

现在的问题是pvcreate等工具无法访问/dev/sdb:

Device /dev/sdX not found (or ignored by filtering).

一些链接:

谷歌还向我提供了一些红帽解决方案的链接,描述了一个非常相似的问题,但它们是付费墙后面的。

答案1

第一:如果您想从不完整的 LV 中拯救数据,请较新运行 fsck(或 mkfs 或写入 FS/分区的任何内容)。您始终需要首先将 PV 恢复到原始状态,并进行尽可能少的修改!

第二:如果可能的话,首先进行备份 - 您可能需要一些数据救援软件,无论如何,最好在数据副本上运行它,并保持原始数据完好无损。

  1. lsblk 显示什么?还有黑子?还有 sgdisk -p /dev/sdb 吗?什么是 LV lvs --segments -a -o+pe_ranges:?这 130MB 很可能是从 /dev/sdb 开始处获取的,因此如果对其进行格式化,前 130MB 很可能已损坏。

  2. 现在您可以使用wipefs删除 GPT 签名,然后您应该能够运行上述pvcreate命令。或者,如果您想要更多控制,则仅覆盖第一个扇区(不确定这是否足够)- dd if=/dev/zero of=/dev/sdb bs=4k count=1

  3. 无论如何,我宁愿抓住机会将数据移动到分区内。如果该磁盘有可能被 Windows 机器使用,强烈建议使用分区表,这样 LVM 不感知的系统不会将其视为未使用的磁盘。

相关内容