fdisk 中显示 GPT 分区,但 gparted 显示没有分区

war*_*pio 3 mount hard-drive gpt

这是非常令人沮丧的。我一直找不到其他有类似问题的人。

首先,我的预装 Windows PC 停止工作,我无法再打开它,我将它送去维修。但首先我想卸下硬盘驱动器并将其连接到另一台 PC,这样我就可以恢复其中的一些数据。

所以我将这个硬盘连接到另一台装有 Ubuntu 的 PC,但它没有自动挂载。所以接下来我尝试使用以下命令查看分区fdisk -l

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 244190646 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start        End    Sectors Size Id Type
/dev/sdb1           1 4294967295 4294967295  16T ee GPT
Run Code Online (Sandbox Code Playgroud)

好的,那里没问题。接下来我尝试手动挂载分区:

$ sudo mount -t ntfs /dev/sdb1 /windows
ntfs-3g: Failed to access volume '/dev/sdb1': No such file or directory
Run Code Online (Sandbox Code Playgroud)

那没有用。然后我尝试在 中查看它gparted,它将整个sdb磁盘显示为未分配的空间。我不明白。/dev/sdb1显然存在,因为它显示在 中fdisk,并且在我的 Windows PC 上访问此分区没有问题。既然我已经将它连接到另一台 PC,它似乎已经丢失了它的分区表?但不完全是,因为它确实显示了/dev/sdb1带有fdisk. 我不确定发生了什么。

我也尝试用以下方法查看它gdisk

$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): i
No partitions
Run Code Online (Sandbox Code Playgroud)

所以gdiskgparted两者都认为这个磁盘没有分区,但fdisk清楚地显示了一个分区。谁能告诉我这里的问题是什么?

Kam*_*ski 5

阅读本文:为什么我的 USB 驱动器在作为内部 SATA 驱动器插入时显示损坏的数据?

那里的答案指出:

外壳将驱动器作为高级格式 4Kn 设备暴露给计算机,允许使用 MBR 与 Windows XP 系统兼容。从机箱中取出驱动器时,逻辑扇区格式的更改会导致分区表无效。

我猜你的情况正好相反:当你通过 USB 连接它时,你有一个工作的内部 SATA 驱动器现在似乎“损坏”了。

问题是您的磁盘现在显示为Sector size (logical/physical): 4096 bytes / 4096 bytes,而以前是512 bytes / 4096 bytes.

您的保护性 MBR似乎描述了 MBR 支持的最大大小的分区。当逻辑扇区大小为 512 B 时为 2 TiB(尽管您的磁盘小于 1 TiB),现在为 16 TiB。

GPT 可能仍然完好无损,但因为根据定义它从扇区 1 (LBA 1) 开始,所以当逻辑扇区大小为 512 B 时,它是在距驱动器开头的 512 B 偏移处创建的。现在 LBA 1 表示 4096 B 偏移– 就像旧的 LBA 8 一样。这就是为什么gparted,并gdisk不能看到你的GPT,他们看错了地方。

解决方法:将驱动器直接连接到主板上,让其Sector size (logical/physical): 512 bytes / 4096 bytes重新安装。

我希望您还没有对不适当的逻辑扇区大小进行任何“恢复”。它可能会使事情变得更糟。