每个分区或磁盘上的 MBR 最大为 2TiB?

每个分区或磁盘上的 MBR 最大为 2TiB?

需要快速澄清一点。使用 MBR

Maketecheasier.com 说

每个分区的最大大小只能为 2TB

MBR 和 GPT 之间的区别

但 IBM 的 Developerworks 表示

MBR 布局还将支持的磁盘最大大小限制为大约 2TB

学习 Linux,101:硬盘布局

哪个是对的?

*在 stackoverflow 上交叉发布

答案1

每个分区不能超过 2TB。这是因为 2TB(大约)是字节 9 到 12 可以指定的最大大小,这是 LBA 格式的起始扇区。然后,字节 13-16 可以指定大小,必须是 4,294,967,295 个扇区或更小,如果每个扇区为 512 字节(这是 MBR 经常使用的整个时期最广泛支持的标准扇区大小),则为 2,199,023,255,040 字节。2TB 是 2,199,023,255,552 字节,因此实际限制(使用标准大小的扇区)是 2TB - 512 字节。假设我们接受这个近似值,MakeTechEasier.com 的说法(在问题中提到)是正确的。

然后,MBR 的第 13-16 个字节可以指定大小,同样必须是 2,199,023,255,040 或更小(对扇区大小做出相同的假设)。因此,MBR 可以指定的实际限制(使用最常见的标准)是 4TB - 1KB。

但是,一个人不可能有 4 个 1TB 的分区,因为从第 3 个分区开始是不可能的。这太令人困惑了,不利于营销,所以人们通常只将 2TB 称为极限,以免潜在的问题混杂在一起。为了简单起见,IBM 的 Developerworks 可能只是说了对那些只希望事情顺利进行的企业的建议,而不想在试图挤出每一点时遇到新的限制带来的不便。更简单的说法是:MBR=最高 2TB=好的,GPT 支持更大的容量。

请注意,我所指的限制仅指存储在磁盘结构中的值。我没有对各种操作系统或 BIOS 实现的支持做出任何特别的陈述。软件可能会使用“有符号”数字来跟踪事物。这样的软件代码实际上更有可能具有 2TB 的限制而不是 4TB 的限制。拥有一个可供分区使用但不能作为分区起始位置的磁盘空间的想法可能会违反某些软件(如“fdisk”磁盘分区程序和“setup”操作系统的安装程序)等的一些基本假设。因此,IBM 的声明也可能试图描述可能的体验,同时考虑到需要由磁盘限制(一定空间内可容纳多少数据)、操作系统(包括某些磁盘的驱动程序)和 BIOS 实现支持而导致的复杂性。虽然 IBM 所述的限制理论上可以通过软件来解决,但提供的信息可能是想要避免问题的人的正确建议。

答案2

两者都正确 — — 但两者都不正确。

首先是“都不是”的部分:MBR 限制为 2^32 个扇区。考虑到常见的 512 字节扇区大小,限制为 512 * 2^32 字节,即 2 TiB。请注意,这是 TiB,而不是 TB。请参阅这里,除其他外,还有关于 IEEE-1541 单位(如 TiB)和 SI 单位(如 TB)之间差异的信息。在 TB 或 TiB 级别,差异约为 10%,这足以引起很多混淆。另外,再补充一点,一条评论提到“Tb”,从技术上讲,它是兆兆,不是 tera字节—— 这是 8 倍的误差;但我离题了……

更糟糕的是,有些磁盘的扇区大小不是 512 字节。最常见的是,有些磁盘(主要是外部 USB 驱动器,但也有一些内部磁盘)有 4096 字节的扇区。在这样的磁盘上,MBR 限制提高到 16 TiB。请注意,这里的扇区大小是逻辑扇区大小。大多数现代硬盘的扇区大小为 4096 字节身体的但由于磁盘 I/O 和数据结构(包括分区表)都是按照逻辑部门,这是逻辑扇区大小对于本次讨论很重要。无论如何,这样做的结果是,您可能拥有一个使用 MBR 的 3 TB、4 TB 或更大的外部 USB 磁盘,而且一切都会顺利。

其次,关于“两者”的部分:MBR 的数据结构有点混乱,但本讨论的重要部分是分区以逻辑块地址 (LBA) 形式描述的方式。这是一个起始点和扇区大小,两者都表示为 32 位扇区值(因此扇区限制为 2^32)。由于这个事实,MBR 磁盘的最大分区大小为 2^32 个扇区(2 TiB,给定 512 字节扇区大小)。除了增加扇区大小或更改分区表类型外,无法克服此限制。由于分区起始点也是一个 32 位值,因此理论上可以有 1-3 个分区完全位于磁盘的前 2^32 个扇区中,然后有一个最多 2^32 个扇区的最终分区,该分区刚好位于磁盘的第 2^32 个扇区之前。这样的配置将理论上支持最多不到 4 TiB 的磁盘,给定 512 字节扇区大小。当然,您仍然会被限制为 2^32 扇区分区大小,并且分区的位置非常重要。例如,您不能在这样的磁盘上有四个 1 TiB 分区。因此,即使这个理论对大磁盘的支持非常有限。

请注意,我在上一段中多次强调了“理论上”这个词。原因是,一旦磁盘大小超过 2^32 个扇区,许多操作系统和 MBR 操作工具就会失效,因为这些操作系统和工具仍然必须引用 2^32 个扇区点以外的数据。因此,不安全创建一个分区跨越 2^32 个扇区点的 MBR 数据结构,尽管可以创建这样的数据结构。事实上,我对这个问题进行了一些测试(参见这里请参阅我的测试结果摘要(请参阅我的测试结果摘要),我发现,只有能够处理 MBR 磁盘(其分区跨越 2^32 个扇区值)的操作系统才能很好地处理 GPT。由于 GPT 比 MBR 功能强大得多,因此在这些情况下几乎没有理由冒险使用 MBR。此外,我的测试并未涵盖所有可能的工具;即使您使用 Linux 或 Windows 7 等可以处理大于正常大小的 MBR 磁盘的操作系统,您运行的磁盘实用程序也可能会在这样的磁盘上失效,这可能会导致严重的数据丢失。

总而言之,你使用大于 2TiB 的 MBR 磁盘如果该磁盘有 4096 字节逻辑扇区。最常见的方法是将其放入某些外部 USB 外壳中。但是,使用大于 2TiB 且逻辑扇区为 512 字节的磁盘只能通过 GPT 安全地完成(或者不使用超过 2 TiB 限制的磁盘)。大多数现代操作系统都支持 GPT,因此这对大多数人来说并不困难。

相关内容