![MBR 格式的硬盘容量怎么会超过 1.81 TiB?](https://linux22.com/image/1433975/MBR%20%E6%A0%BC%E5%BC%8F%E7%9A%84%E7%A1%AC%E7%9B%98%E5%AE%B9%E9%87%8F%E6%80%8E%E4%B9%88%E4%BC%9A%E8%B6%85%E8%BF%87%201.81%20TiB%EF%BC%9F.png)
我最近购买了一个存储容量为 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
。此外,以下是一些屏幕截图:
编辑:在我发表我的回答后,我读到这篇来自 AnandTech 的博客文章其中写道:
现在 MBR 分区下的 LBA 使用 32 位值进行寻址,最大值为 2^32 或 4294967296。硬盘上的每个 LBA 对应一个 512 字节的扇区值(即使在 4K 高级格式驱动器上,它们在操作系统中仍然显示为 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 的数据后遇到了数据完整性问题。
答案1
您的 USB 驱动器在主机中呈现的逻辑扇区大小为 4096 字节,这使得它能够使用 MBR 分区表进行分区,即使在 Windows XP 中,该分区表也可以使用超过 2 TB 的驱动器空间。MBR 分区表条目为 32 位,Windows XP 使用 32 位数学从分区表中计算扇区地址,只允许使用驱动器的前 2^32 个扇区。2^32 个扇区 x 4096 字节/扇区 = 16 TB。如果是 512 字节/扇区,MBR 分区表只能使用驱动器的前 2 TB。(2^32 个扇区 x 512 字节/扇区 = 2 TB)
但是,您的驱动器不是 4k 原生的。有两层转换:
- USB 外壳包含一个 USB 到 SATA 桥接器,可将主机 USB 接口上每逻辑扇区 4096 字节转换为驱动器内部 SATA 接口上每逻辑扇区 512 字节。
- 驱动器内部将 SATA 接口上每逻辑扇区 512 字节转换为每物理扇区 4096 字节。(即 512 字节/扇区仿真或“512e”。)
通过 USB 桥接器传递到内部 SATA 驱动器的 SMART 查询揭示了真相(在 Windows XP 中,在我自己的 Western Digital My Book 3 TB 外置 USB 驱动器上运行):
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
内部 SATA 驱动器报告每个逻辑扇区 512 字节和每个物理扇区 4096 字节:即 512 字节/扇区仿真,或“512e”。
但是,通过 USB 连接的主机看到的驱动器的逻辑扇区大小为 4096 字节:
C:\> wmic DISKDRIVE get bytespersector, caption
BytesPerSector Caption
4096 WD My Book 1140 USB Device
这就是 Windows XP 能够使用驱动器全部 3 TB 空间的方式。
如果您需要更多证据,您可以将驱动器从外壳中取出,并将其直接连接到主板的 SATA 连接器:然后您会发现驱动器的逻辑扇区大小为 512 字节,并且驱动器的分区都将显示为以前大小的 1/8,并且由于扇区大小不匹配导致分区表条目不正确而无法读取。很多人都这样做过,然后不得不通过以下方法解决问题重写分区表。
我检查了几种不同的外部 USB 驱动器,尽管它们配置为与 Windows XP 兼容,且 USB 接口每个逻辑扇区有 4096 字节,但它们内部都是 512e: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 快速格式化程序该工具可用于将西部数据外置 USB 驱动器在具有 GPT 分区表的 512 字节/扇区(适用于 Vista 及更高版本)和具有 MBR 分区表的 4096 字节/扇区(用于 Windows XP 兼容性)之间更改。
答案2
您的驱动器使用高级格式 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 的外部硬盘使用带有 MBR 分区表的 4K 原生扇区,以便与 Windows XP 兼容:
由于另一项技术改进,某些外置 Seagate(FreeAgent GoFlex)和 Western Digital(My Book Essential)外置 3 TB 磁盘也可以在 XP 上满负荷使用。它们不是通过 USB 或 FireWire 接口(使用通常的)512 字节扇区连接到系统,而是使用 4 KB 扇区。这绕过了 MBR 的 2TB 限制。但即使是这个技巧也有缺点:低级访问磁盘的程序(例如格式化工具)可能无法在磁盘上运行。它们也不适合用作启动盘。
制造商正在利用这一事实外部的硬盘,假设它只用于存储而不是启动。然而,这会产生另一组兼容性问题,依赖 512 字节扇区大小的程序可能无法正常工作:
不支持 4Kn 驱动器的分区工具将无法在此驱动器上正常运行。
一些数据库程序使用直接磁盘 I/O 来提高性能和数据完整性。如果这些程序不是为处理 4K 扇区而设计的,它们将无法正常运行。
底层内部硬盘很可能是 512e — 如果是这种情况,则外壳电子设备会将 4K 扇区暴露给系统以实现兼容性。
答案3
我联系了 WD 支持技术人员,他告诉我这是一个异常现象,我应该将磁盘转换为 GPT,以确保将来不会遇到任何意外数据丢失。
然而,他不确定这是否真的会导致任何数据丢失,但建议我将磁盘转换为 GPT,他还告诉我,这是他遇到的第一个 MBR 格式化的大容量驱动器(> 2TB)。
如果你以前遇到过类似的情况,并且知道为什么这是或者这不是一个问题,请添加您的答案。
请忽略我下面写的所有内容。它们可能正确,也可能不正确。
我想我找到答案了。@Hennes 和AIDA64有帮助。西部数据似乎已经想出了一个解决方案来防止 MBR 的缓慢消亡,它被称为高级格式。
借助这项技术,西部数据将硬盘的块大小从 512 字节增加到了 4 千字节,因此高级格式硬盘可以增长到 16 TB,而不会达到 32 位 LBA 大小限制。
Stephen Foskett 在他的博客文章。
来自博客:
当前硬盘寻址方案的最大容量约为 2.1 TB。这个等式中有两个简单的因素:
4,294,967,296
32 位“命名空间”中有可寻址的块,这是大多数 PC 可以处理的- 每个区块都有
512 bytes
大小,自从恐龙出售计算机以来
如果我们将 乘以4,294,967,296
,512
我们得到的是2,147,483,648 KB
的容量。按照古怪的十进制存储行业术语,这是 2.15 TB 的容量。
硬盘驱动器制造商有两条前进的道路,而且它们并不互相排斥:
西部数据率先推出了高级格式2009 年末,高级格式驱动器开始出现。这解决了(过时的)块大小限制问题,将其从 增加到
512 bytes
。4 kilobytes
现在每个地址都大了八倍,对于给定的驱动器大小,我们需要八分之一的地址。高级格式驱动器可以增长到16 TB而不会达到 32 位 LBA 大小限制。希捷针对另一个变量,将地址空间增加到全 48 位LBA 标准中规定的。这提供了惊人的128PB即使是很小的块,也能达到同样的容量
512 byte
。
答案4
4K 高级格式/512e 驱动器可能是一个答案,正如其他答案所指出的那样。我不会重复他们的答案的内容,也不会进一步阐述。我立即写下这篇文章,以表明我不希望尝试与 4KAF/512e 的想法竞争,因为我确实同意它。但是,即使只使用 512 字节扇区,我也看到了另一种可能性。
另一种可能性*是,这可以通过磁盘上的 512 字节扇区来实现。实际限制是分区的起始位置需要在前 2 TB** 内,然后分区表中还有另一个位置指定分区的大小。因此,理论上,分区可以从 2TB 边界附近移动到 2 TB 之后的位置,因此 MBR 理论上可以支持高达 4TB 标记的分区。
我不记得看到过这样的广告,我可以想象为什么。随着数据存储设备(硬盘、SSD)的大小不断增长,尝试这种方法只能帮助一代大小翻倍(2TB 到 4TB 之间)。它要求人们有多个数据分区(2TB 标记之前有一个或多个,然后只有一个从 2TB 标记末尾开始且长度不能超过 2TB 的分区)。
试图向普通购买者解释这一点对于技术支持部门来说可能是一场噩梦。许多制造商似乎更愿意接受 GPT(无论如何,这听起来是个好的解决方案,从稍长远来看,随着驱动器容量的增加),而不是告诉人们任何超过 2 TB 的布局都是他们打算努力支持的。
虽然我无法保证操作系统将如何支持这种布局,特别是因为许多人使用 Windows 10,它可以在大多数用户看不到的事先重要通知的情况下更新其行为,但操作系统的创建者和维护者通常希望做简单而明智的事情。这意味着,如果一种简单的方法效果很好,就没有理由不遗余力地去破坏它。大多数操作系统开发都涉及大多数程序员认为比分区处理更有趣的技术领域。所以,我强烈怀疑,如果你能以某种方式创建一个超过 2TB 标记的分区,那么该分区很可能真的能正常工作。(特别是,如果它在开始时有效,那么在安装操作系统后它很可能也能正常工作。)一些分区工具可能会阻止创建这种有效的布局,因为可能会施加一些限制以试图方便用户,但我可以想到一些分区操作软件(通常是文本库),其中可以手动输入扇区号(或 CHS 值),并且很可能与该方案一起使用。
[*] 我是根据对主引导记录中字节含义的研究来写这个答案的。这个问题有“Windows 8.1”标签。我还没有确定 Windows 8.1 是否有任何特定的行为来限制用户在操作系统安装过程中、使用“磁盘管理”(diskmgmt.msc) 或使用 DiskPart 时可以做的事情。所以这个答案只是为了解决主要使用 MBR 分区方案的磁盘的 2TB 边界概念。如果你设法创建这样的分区配置,我想大多数计算机固件 ((U)EFI/BIOS) 和大多数操作系统都会很乐意从它启动并有效地使用它。此外,我想大多数操作系统安装程序可能会很乐意使用这样的分区,如果它预先存在的话。反对需要特定的检查,而这些检查不太可能带来太多好处,所以这种检查可能不会被广泛使用。
[**] 引用我自己的网站,“可以开始分区的最新扇区是扇区 4,294,967,295,即字节 2,199,023,255,040,比 2TB 标记少 512 字节。”