尝试了解 Linux 对旧版 BIOS 上 4TB 硬盘的支持

尝试了解 Linux 对旧版 BIOS 上 4TB 硬盘的支持

我想添加一个 4TB 硬盘,仅用于数据存储。我当前的配置:

问题

  1. 因为大小大于 2TB,我真的被迫使用 GPT 分区吗?
  2. 如果是,GPT 分区所需的 UEFI 或传统 BIOS 是否受支持?
  3. 如果支持旧式 BIOS,Arch Linux 是否只能看到 4TB 或 2TB?

这个新的硬盘驱动器仅用于存储数据,我不会在其上安装操作系统或从其启动。

答案1

我是GPT磁盘分区软件,所以我对这个主题很了解。之前的回答引发了一些误解,我想澄清一下……

如果您想要大于 2TB 的分区大小,则必须使用 GPT 而不是 MBR。

大概。问题是 MBR 的最大容量为 2^32 个扇区。这相当于 2 TiB(不是 2 TB;请参阅这里解释差异)如果逻辑扇区大小为 512 字节。不过,许多外部磁盘和一些内部磁盘现在使用 4 KiB(4096 字节)逻辑扇区,这将 MBR 限制提高到 16 TiB。

请注意,这是指逻辑扇区大小。大多数现代硬盘使用 4096 字节身体的扇区,但这个细节对于确定分区表的限制并不重要。

MBR 仅支持 2TB 分区大小。如果您需要多个分区(每个分区小于 2TB),您应该能够以不同的分区形式访问整个磁盘。

最多 4 TiB 限制(假设 512 字节扇区)如果你愿意玩火,是的。MBR 将分区数据作为起点和大小进行存储,因此你可以将 MBR 限制扩展到 4 TiB,但不能再大。问题是这不可靠。几年前我对此进行了一些测试(请参阅这里),结果是,能够处理这种 MBR 限制的操作系统与能够处理 GPT 的操作系统几乎相同,因此它没有太多好处。更重要的是,某些随机磁盘实用程序可能会出现故障,因为它使用 32 位值作为扇区指针,即使操作系统本身可以管理它。因此,我个人不会信任具有这种配置的磁盘——它可能会正常工作一段时间,但如果您碰巧运行了 32 位不干净的磁盘实用程序,则可能会导致严重的数据损坏。

BIOS 不了解 GPT,因此无法从 GPT 格式的磁盘启动。

这种说法是不正确的,或者充其量只适用于某些操作系统和 BIOS。BIOS 启动过程涉及 BIOS 读取磁盘的第一个扇区(即 MBR)并在那里执行代码。重要的是,传统的 BIOS对分区表一无所知。MBR 中的引导加载程序代码(通常)开始解释分区表。因此,阻止从 GPT 进行 BIOS 模式引导的限制嵌入在引导加载程序操作系统,而不是在 BIOS 中。大多数支持 GPT 的操作系统(例如 Linux、FreeBSD,甚至使用 Hackintosh 引导加载程序的 OS X)都可以从仅使用 BIOS 的计算机上的 GPT 磁盘正常启动。此规则的主要例外是 Windows,据我所知,它无法在 BIOS 模式下从 GPT 磁盘启动。

对此有一个主要警告:有些 BIOS 太智能了。有些实际上是 EFI,了解分区表。此类固件可能会产生障碍,使从 GPT 磁盘以 BIOS 模式启动变得复杂或无法启动。我非常仔细地研究了这个问题,并对此发表了评论这里。尽管解决方案往往不明显,但这些问题通常可以克服。

尽管存在这些警告,但绝大多数具有 BIOS 模式启动功能的 PC(无论是“真实”BIOS 还是带有 CSM 的 EFI)都可以从 GPT 磁盘以 BIOS 模式启动,前提是操作系统具有合适的启动加载程序。正如 BufferUnderRun 所说,所讨论的操作系统是 Arch Linux,应该没有问题;GRUB 2、SYSLINUX 甚至旧的 LILO 都可以完成这项工作。我自己在几台计算机上做过这件事。

尽管如此,由于新磁盘是非启动磁盘,您实际上不必担心这些问题。您可以从 MBR 分区的 SSD 在 BIOS 模式下启动 Linux,并使用 GPT 分区的 4 TiB 硬盘进行数据存储,而不会出现问题。如果您将来的需求发生变化,您可能需要重新评估配置,但我现在不必担心。

答案2

因为大小大于 2TB,我真的被迫使用 GPT 分区吗?

MBR 的限制是分区最大为 2TB,并且旧式 BIOS 无法从 GPT 格式的磁盘启动。

如果您确实想保留 MBR,则可以创建多个 2TB 或更少的分区。

保留 MBR 的唯一真正原因是您需要使用 BIOS 而不是 UEFI 进行启动。

如果是,GPT 分区所需的 UEFI 或传统 BIOS 是否受支持?

BIOS 不了解 GPT,因此无法从 GPT 格式的磁盘启动。UEFI 了解 MBR 和 GPT,因此可以从其中任何一个启动。

如果支持旧式 BIOS,Arch Linux 是否只能看到 4TB 或 2TB?

假设内核不是旧版,Linux 将看到整个设备。您将看到整个设备(例如/dev/sda)和分区(/dev/sda1/dev/sda2等)。

但是,2TB 的限制首先是 MBR 的限制,因此如果您的磁盘格式化为 MBR,即使 Linux 也无法在其上放置大于 2TB 的分区。但同样,我相信您可以拥有多个 2TB 或更小的分区。Windows 在可移动设备和多个分区方面存在问题(可能最终会在 Win8.1 或 10 中得到修复),但 Linux 不会出现问题。

使用 GPT,单个分区最大可以达到 16384TB。

答案3

  1. 如果您想要大于 2TB 的分区大小,则必须使用 GPT 而不是 MBR。MBR 仅支持 2TB 的分区大小。如果您想要多个分区(每个分区小于 2TB),您应该能够以不同的分区形式访问所有磁盘。

  2. BIOS 仅关心启动卷(在本例中是您的 SSD)的 MBR/GPT。您可以在 SSD 上使用 MBR,使用传统 BIOS,并且仍然可以完全访问 4TB 磁盘,只要您对 4TB 磁盘使用 GPT 即可。

  3. 无论您的 BIOS 如何,Arch Linux 都会看到一个 4TB 的磁盘,并且只要您在磁盘上创建分区时使用 GPT,您就能够创建一个 4TB 的卷。

相关内容