寻求(某种程度上)更好的关于支持>2 TB 硬盘的解释

寻求(某种程度上)更好的关于支持>2 TB 硬盘的解释

今天我在谷歌上搜索时偶然发现一些帖子,声称 Seagate 计划在 2010 年晚些时候推出一款 3TB 硬盘。不幸的是,我查看的所有信息似乎都包含一些我认为不太合适的信息。(我想链接到一些示例,但目前每个帖子只能放一个链接)。

现在我真的没有任何“需要”去更好地理解这背后的繁琐细节。我只是好奇。而且感到困惑。

所以......我希望有人比我更了解一些问题,可以回答。

  1. 关于硬件和软件中可能存在的寻址问题的讨论让我感到困惑。断言是,Long LBA addressing (LLBA)需要某种称为某种东西的Command Descriptor Block东西来绕过当前访问大于 2 TB(1 TB=2⁴⁰ B)的硬盘的限制。

    好的,很好。但我认为上次出现此问题时,已通过将 LBA 字段的长度从 28 位延长到 48 位解决了。(还记得这个网站吗?www.48bitlba.com) 6 字节 LBA 显然足够大,那么这个 LLBA 讨论有什么用呢?我以为这一切都在 Win XP SP2 中修复了,如果不是更早的话?当然,所有硬件都应该能胜任这项任务,不是吗?

  2. 据我所知,对于容量远大于 2 TB 的硬盘,真正的问题在于主引导记录 (MBR) 中的 4 字节 LBA 字段,目前几乎所有硬盘都使用这个字段进行分区。最有可能的解决方案是迁移到英特尔的 GUID 分区表 (GPT)。GPT 使用 8 字节字段作为 LBA。

    在这种情况下,我不明白从使用 GPT 的 3TB 驱动器启动 Windows 有什么问题。当然,当前的 PC BIOS 不知道如何识别或使用 GPT。但每个 GPT 都带有扇区 0 中的所谓“安全”或“保护”MBR。

    Apple 已经使用 MBR 的混合版本,允许他们在 Intel Mac 上启动 Windows(又名 Boot Camp)。难道不能做类似的事情来让 PC BIOS 识别并从某个分区启动,比如 3 TB 或更大驱动器的前 2 TB?

我还有更多问题,比如 4K 扇区在所有这些中处于什么位置。不过现在我可能该闭嘴并发布这篇文章了。;-)

-无理的约翰

答案1

关于“长 LBA”的说法似乎源自一位 Seagate 产品经理。她的意思可能是,尽管 48 位 LBA 是硬件标准,但 32 位操作系统和驱动程序可能不支持所有 48 位,因为 (a) 它们是 32 位的,这比较麻烦,并且 (b) MBR 无论如何只支持 32 位分区,所以何必费心呢。

当采用 48 位 LBA 打破 128GB 的​​限制时,这既涉及硬件方面,即 ATA 规范中从 28 位上升;也涉及操作系统/驱动程序方面,以确保它们不会硬编码旧的 28 位限制。您可能可以说,当前编写良好的驱动程序实际上符合实际的 48 位限制,但很容易看出,在某个环节中,有人选择了简单的方法,只在其 32 位驱动程序中支持 32 位。鉴于 32 位操作系统无论如何都会被淘汰,可能不值得尝试确保所有这些都能正常工作。

正如您所说,真正的问题(至少对于 Windows 而言)是从基于 BIOS(非 EFI)的计算机启动 GPT 磁盘。保护性 MBR 旨在使整个磁盘看起来像一个未知的分区,这样 BIOS/MBR 感知的计算机甚至不会触碰它。您可以创建混合磁盘,以便 MBR 还包含其他条目,用于 2TB 以下的分区。但这种混合磁盘很脆弱(很容易被 MBR 或 GPT 分区工具破坏),并且不再是正式的 GPT 磁盘。您也不会启动任何 GPT 分区,而是启动 MBR 分区。如果您只想将 GPT 分区用作数据驱动器,那么这可能没问题。

那么为什么 BIOS 无法启动 GPT?简而言之,他们没有,而为了添加该功能,您需要更智能的 BIOS。这就是 EFI 的用途。

4KB 扇区将为您提供 16TB 的 32 位 LBA 磁盘。(而较少的大扇区意味着可能更少的 I/O 开销。)但所有操作系统和驱动程序甚至一些应用程序都必须编写为支持可变大小的扇区。您只需要一个将扇区大小硬编码为 512 的地方即可打破这种局面。因此,4KB 扇区也不是一个“简单”的解决方案,因为它需要多方的大量工作。但如果您打算编写未来的软件来支持 GPT(与扇区大小无关)和可变大小的扇区,那么它可能会在某个时候被采用为常见做法。

答案2

当然 从 BIOS 机器上的 GPT 磁盘启动。只是 Windows 声称它不能。

即使这样也并非事实;您可以从 GPT 磁盘上的 BIOS 计算机启动 Windows:您只需要一个额外的小型 MBR 磁盘来保存启动文件。用于其他操作系统的硬盘带有备用(小)分区、软盘、USB 驱动器(假设)...

启动 Windows 安装/修复光盘。在记忆棒上创建系统驱动器,并使用bcdboot将启动文件放在记忆棒上。使用 添加引导扇区bootsect。将 更改为{bootmgr} deviceboot从记忆棒启动。

步骤很详细这里

答案3

在这种情况下,我不明白的是,从使用 GPT 的 3TB 驱动器启动 Windows 有什么问题。

在传统的 BIOS 系统中,BIOS 从磁盘加载引导扇区并以 16 位实模式运行。然后,从引导扇区加载的代码需要找到并加载正确的操作系统。

MS 从未在其实模式加载程序中实现 GPT 支持。因此它无法读取 GPT 分区表并启动操作系统的其余部分。因此,要从 GPT 磁盘启动 Windows,您要么必须使用 uEFI 而不是传统 BIOS(如果您的主板支持它并且您的 Windows 版本足够新,那么这是可以的),要么使用某种形式的解决方法,例如第三方加载程序、混合分区类型或用于启动的单独磁盘。

相关内容