从 GPT 保护分区恢复数据

从 GPT 保护分区恢复数据

我有一个 7TB 内置硬盘,我一直通过 USB 在笔记本电脑上使用对接接口。现在我尝试将 PC 上的 HDD 用作内部存储(通过 SATA)。但是,Windows 10 无法正确检测/读取 HDD。

具体来说,HDD 的分区表是 GPT,但 Windows 错误地识别它(我认为是 MBR)并标记它GPT Protective Partition

问题似乎与对接接口的固件有关,因为通过对接站安装硬盘可以解决该问题。类似的问题已解释这里。但是,我无法访问扩展坞,因此我想知道是否可以使用diskpart或(最好是免费的)第三方工具来修复分区表。

我对保持数据完整的方法感兴趣。

答案1

正如我在评论中提到的,您可以用来losetup“模拟”您的基座为您的驱动器所做的事情,即将每八个 512 字节的逻辑块作为一个 4096 字节的逻辑块公开给操作系统:

losetup -b 4096 -P -f -r /dev/sdX

您可以参考的手册页losetup找出命令行中每个选项的含义/作用。

不幸的是,当不是-P时似乎被破坏了,至少在我使用的 Linux 发行版中是这样的,因此还需要以下命令:-b512losetup

blockdev --rereadpt /dev/loopN

然后您可以使用以下任一方法blkid查看分区/文件系统是否被正确识别:

blkid /dev/loopN*

接下来,在某处创建一个目录(可以使用任何你喜欢的名字)作为挂载点:

mkdir ~/meh

最后,挂载您想要访问/取回数据/文件的文件系统:

mount -r /dev/loopNpM ~/meh

(您需要安装 ntfs-3g。我不会在这里介绍如何检查/执行此操作。无论如何,它是特定于发行版的。)

下面是我使用 WSL 做的一个示例案例的截图:

在此处输入图片描述

请注意,在磁盘管理中已用 标识1。您无需手动将其设置为脱机,因为会处理这个问题。卸载文件系统并分离 WSL 内的循环设备后,您可以使用 退出,然后使用 将驱动器从 WSL 中分离出来。\\.\PHYSICALDRIVE1Disk 1wsl mount --bareexitwsl --unmount \\.\PHYSICALDRIVEN

答案2

我有一个 7TB 内置硬盘,我一直通过 USB 使用对接接口在笔记本电脑上使用。现在我尝试将硬盘用作 PC 上的内置存储(通过 SATA)。但是,Windows 10 无法正确检测/读取硬盘。

看来您的扩展坞是一个特殊的扩展坞,它可以在只有 512 字节的磁盘上操作,同时向计算机模拟 4096 字节的扇区大小。

具体来说,HDD 的分区表是 GPT,但 Windows 错误地识别它(我认为是 MBR)并将其标记为 GPT 保护分区。

这是错误的。所谓的GPT Protective Partition分区表是 GPT 分区表规范的一部分,其中包含两个分区表。第一个是“保护性 MBR”(位于 LBA 0 上),在您的情况下称为“GPT 保护分区”。其目的是让无法识别 GPT 结构的旧操作系统认为磁盘空间已被占用。这可以防止覆盖旧操作系统上的现有数据。

第二部分是 GPT 分区表(在 LBA 1 上)。 https://en.wikipedia.org/wiki/GUID_Partition_Table

问题似乎与对接接口的固件有关,因为通过对接站安装硬盘可以解决该问题。此处解释了类似的问题。但是,我无法访问对接站,所以我想知道是否可以使用 diskpart 或(最好是免费的)第三方工具修复分区表。

免费的第三方工具(如 Testdisk)会找到分区并相应地重写分区表。我不知道所用文件系统的内部结构是否会受到扇区大小变化的影响。

相关内容