MBR 格式的硬盘容量如何超过 1.81 TiB?

Vin*_*yak 11 mbr partitioning external-hard-drive windows-8.1

我最近购买了一个具有 3 TB (2.72 TiB) 存储容量的外置磁盘驱动器。

现在,根据维基百科关于 MBR 的文章,使用 MBR 方案格式化的磁盘上的最大可寻址存储空间被限制为 2TB (1.81 TiB),因此按理说大容量硬盘驱动器 (>2TB) 必须使用GUID 分区进行格式化表 (GPT) 方案能够使用 HDD 的全部容量。

那么为什么 3TB WD My Book 外置磁盘驱动器出厂时使用 MBR 方案格式化,更令人惊讶的是,为什么当 MBR 最多只能寻址 1.81 TiB 时,它在 Windows 上显示为 2.72 TiB 驱动器?

有没有其他拥有大容量西部数据(或其他品牌)硬盘的人见过这个?

如果有帮助,则硬盘已使用格式化NTFS且扇区大小为4096 bytes. 另外,这里有一些截图:

3 TiB MBR WD My Book - 3TB


编辑:发布我的答案后,我阅读了 AnandTech 的这篇博客文章,其中说:

现在 MBR 分区下的 LBA 使用 32 位值寻址,最大为 2^32 或 4294967296。硬盘上的每个 LBA 对应一个 512 字节的扇区值(即使在 4K 高级格式化驱动器上,它们仍然显示为OS 的 512 字节扇区驱动器),因此 MBR 分区驱动器中可以拥有的最大分区为 4294967296 * 512 字节或2,199,023,255,552 字节

硬盘制造商将 1TB 定义为 1 万亿字节。如果我们使用该定义,那么最大的 32 位 MBR 分区将是2.199TB (2,199,023,255,552 字节 / 1,000,000,000,000)。如果我们将 1TB 定义为 1024^4 字节 (TiB),那么最大的 32 位 MBR 分区将是 2TiB(2,199,023,255,552 字节 / 1,099,511,627,776)。无论哪种方式,对于 3TB 驱动器,我们都无法使用 MBR 获得单个 3TB 分区

但是正如您所看到的,我拥有的 My Book 有一个 3TB (2.72 TiB) 的分区并且它使用 MBR。这件事困扰我的原因是因为这个事件,有人声称在 MBR 格式的 3TB 驱动器上传输了超过 2TB 的数据后遇到了驱动器的数据完整性问题。

bwD*_*aco 10

您的驱动器使用高级格式 4Kn,其中驱动器公开其原生 4K 扇区大小,而不是模拟 512 字节扇区 (512e)。这通过将 MBR 限制扩展到 17.6 TB (16 TiB) 来确保与不支持 GPT 的设备的兼容性,从而避免使用 GPT。

  • MBR 最多允许 2 32 个扇区。这意味着对于传统的 512 字节扇区,支持的最大磁盘大小为 2.2 TB (2 TiB)。但是,对于 4K 扇区,最大磁盘大小变为 17.6 TB (16 TiB)。

  • 根据这篇文章(通过谷歌翻译,轻微编辑),几个容量超过 2.2 TB 的外置硬盘使用 4K 原生扇区和 MBR 分区表,以兼容 Windows XP:

    由于另一个技术转折,某些外部希捷 (FreeAgent GoFlex) 和西部数据 (My Book Essential) 外部 3-TB 磁盘也可以在 XP 上以全容量使用。它们不通过 USB 或 FireWire 接口 [连接] 到系统 [通常] 512 字节扇区,而是 4 KB 扇区。这绕过了 MBR 的 2TB 限制。但即使这个技巧也有缺点:访问磁盘底层的程序——例如格式化工具——可能无法在磁盘上运行。[T]嘿[也]不适合[作为引导盘]。

  • 制造商正在利用这是一个外部硬盘驱动器的事实,并假设它仅用于存储而不用于启动。但是,这会产生另一组兼容性问题,其中依赖 512 字节扇区大小的程序可能无法正常工作:

    • 不支持 4Kn 驱动器的分区工具将无法在此驱动器上正常运行。

    • 一些数据库程序使用直接磁盘 I/O 来提高性能和数据完整性。如果这些程序不是为处理 4K 扇区而设计的,它们将无法正常运行。

  • 底层的内部硬盘驱动器很可能是 512e——如果是这种情况,外壳电子设备将 4K 扇区暴露给系统以实现兼容性。

  • 虽然驱动器本身可能确实是高级格式,但我敢打赌它并没有真正暴露其本机扇区大小。相反,USB-SATA 桥接芯片可以做到这一点。 (3认同)
  • 这可能更简单,但是有大量的机箱在执行各种黑魔法来启用 3 TB 分区,这些分区也可以在 XP 上运行。 (2认同)

bal*_*zer 6

您的 USB 驱动器以 4096 字节的逻辑扇区大小呈现给主机,这使其能够使用 MBR 分区表进行分区,该表可以使用超过 2 TB 的驱动器空间,即使在 Windows XP 中也是如此。MBR 分区表条目是 32 位,Windows XP 使用 32 位数学从分区表计算扇区地址,只允许使用驱动器的前 2^32 个扇区。2^32 个扇区 x 4096 字节/扇区 = 16 TB。对于 512 字节/扇区,MBR 分区表只能使用驱动器的前 2 TB。(2^32 个扇区 x 512 字节/扇区 = 2 TB)

但是,您的驱动器不是 4k 原生的。有两层翻译:

  1. USB 外壳包含一个 USB 至 SATA 桥接器,可将主机的 USB 接口处的每个逻辑扇区 4096 字节转换为内部驱动器的 SATA 接口处的每个逻辑扇区 512 字节。
  2. 内部驱动器从其 SATA 接口上的每个逻辑扇区 512 字节内部转换为每个物理扇区 4096 字节。(这是 512 字节/扇区模拟或“512e”。)

通过 USB 桥接器传递到内部 SATA 驱动器的 SMART 查询揭示了真相(在我自己的 Western Digital My Book 3 TB 外置 USB 驱动器上在 Windows XP 中运行):

C:\Program Files\GSmartControl> smartctl -a -d sat pd11
smartctl 6.5 2016-05-07 r4318 [i686-w64-mingw32-xp-sp3] (sf-6.5-1)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Green
Device Model:     WDC WD30EZRX-00MMMB0
Serial Number:    WD-WCAWZ12xxxxx
LU WWN Device Id: 5 0014ee 2063xxxxx
Firmware Version: 80.00A80
User Capacity:    3,000,592,982,016 bytes [3.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Run Code Online (Sandbox Code Playgroud)

内部 SATA 驱动器报告每个逻辑扇区 512 字节和每个物理扇区 4096 字节:即 512 字节/扇区仿真,或“512e”。

然而,由 USB 连接的主机所看到的驱动器的逻辑扇区大小为 4096 字节:

C:\> wmic DISKDRIVE get bytespersector, caption
BytesPerSector  Caption
4096            WD My Book 1140 USB Device
Run Code Online (Sandbox Code Playgroud)

这就是 Windows XP 能够使用所有 3 TB 驱动器空间的方式。

如果您需要更多证据,您可以从机箱中取出驱动器并将其直接连接到主板的 SATA 连接器:然后您会发现驱动器的逻辑扇区大小为 512 字节,并且驱动器的分区都会出现由于扇区大小不匹配导致不正确的分区表条目而无法读取它们以前大小的 1/8。很多人已经这样做了,然后不得不通过重写分区表来解决这个问题。

我检查了几个不同的外部 USB 驱动器,尽管它们被配置为兼容 Windows XP,USB 接口上每个逻辑扇区 4096 字节:WD My Book 3 TB、WD Elements 3 TB、HGST Touro 4 TB、WD Easystore 8 TB、WD Easystore 12 TB、WD Easystore 14 TB。

您的驱动器带有 MBR 分区表(或有人在某个时候将其更改为 MBR)以使其与 Windows XP 兼容。较新的驱动器带有 GPT 分区表,需要 Windows Vista 或更高版本。

WD快速格式化工具,可以用来改变512个字节/使用GPT分区表业(对于Vista和更高版本)和4096个字节/扇区之间具有MBR分区表西数外置USB驱动器(适用于Windows XP的兼容性)。