这真是令人沮丧。我找不到有类似问题的人。
首先,我的预装 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
好的,没有问题。接下来我尝试手动挂载分区:
$ sudo mount -t ntfs /dev/sdb1 /windows
ntfs-3g: Failed to access volume '/dev/sdb1': No such file or directory
这不起作用。然后我尝试在中查看它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
所以gdisk
两者gparted
都认为该磁盘没有分区,但fdisk
显然显示有分区。有人能告诉我这里的问题是什么吗?
答案1
读这个:为什么当我的 USB 驱动器作为内部 SATA 驱动器插入时会显示损坏的数据?
那里的答案是:
外壳将驱动器作为高级格式 4Kn 设备暴露给计算机,允许使用 MBR 来兼容 Windows XP 系统。当驱动器从外壳中取出时,逻辑扇区格式的改变会导致分区表无效。
我猜你的情况正好相反:你有一个正常工作的内部 SATA 驱动器,当你通过 USB 连接它时,它似乎“损坏”了。
问题在于您的磁盘现在显示为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
。
我希望您还没有对不合适的逻辑扇区大小进行任何“恢复”。这可能会使情况变得更糟。