分区大小不一致

分区大小不一致

我有一台安装了 Windows 的 MAC(使用 Bootcamp),但硬盘损坏(15 个 SMART 错误)。如果我将磁盘连接到 Linux 机器,它会报告以下数据:

Disk /dev/sdc: 1953525168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start        End          Size        File system  Name                  Flags
 1      40s          409639s      409600s     fat32        EFI system partition  boot, esp
 2      409640s      586498047s   586088408s  hfs+         Customer
 3      586498048s   587767583s   1269536s    hfs+         Recovery HD
 4      1565007872s  1953521663s  388513792s  ntfs         Basic data partition  msftdata

到目前为止,一切似乎都正确,除了 NTFS 分区非常小,并且有 977.240.289 个扇区未使用(这样做没有意义)。如果我尝试挂载它:

root@werkstatt-debian-lenovo:~# mount /dev/sdc4 /mnt/
mount: wrong fs type, bad option, bad superblock on /dev/sdc4,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

然后我在 Windows 中打开它,它显示了一个完整的 651.24 GB 分区。

在此处输入图片描述

除了 Windows 无法启动之外,使用 Windows 检测到的分区上的数据似乎很好,但那是另一回事。

在 Windows 上使用 RAW 磁盘编辑器会显示以下结构:

原始(保护性)MBR:

在此处输入图片描述

原始 GPT:

在此处输入图片描述

让我困惑的是,Windows 的行为就像 GPT,但原始磁盘编辑器和 Linux 却说它是 MBR。难道 MBR 是错的,而 GPT 是对的?

答案1

驱动器使用混合分区方案。这意味着 Windows 使用主引导记录 (MBR) 表中的值。OS X (macOS) 使用 GUID 分区表 (GPT) 中的值。大多数情况下,Linux 也使用 GPT 中的值。混合分区通常会导致 MBR 分区表的第 2、3 和 4 个条目中存储的公共值在 GPT 中重复。所谓公共,是指代表分区类型和分区所在位置的值。

OS X (macOS) 知道 MBR 分区表和 GPT 中都存储了值。但是,Windows 只知道 MBR 分区表。

您的问题重复如下:

让我困惑的是,Windows 的行为就像 GPT,但原始磁盘编辑器和 Linux 却说它是 MBR。难道 MBR 是错的,而 GPT 是对的?

不,你错了。Windows 认为它​​是 MBR,而 Linux 认为它是 GPT。实际上有两个分区表:MBR 分区表和 GPT。

MBR 分区表和 GPT 中的第 2 和第 3 个条目相同(理应如此),但 Windows 的第 4 个条目不同。如果 MBR 分区表条目正确,则 Linux 读取了存储在 GPT 中的错误值。

1565007872GPT 的第 4 个条目中扇区的起始值(第一个 LBA)大概应该是值587767808,即 MBR 分区表中的起始值。假设可以对分区的第一个扇区进行十六进制转储,以查看 NTFS 标头是否正常。或者,进行更改并查看分区(NTFS 卷)是否挂载。

相关内容