Seeking (somewhat) better explanations about supporting >2 TB hard drives
Today while Googling about I stumbled across posts claiming that Seagate plans to ship a 3TB drive sometime later in 2010. Unfortunately, the stuff I looked at all seemed to contain tidbits of info which I didn't think fit together properly. (I would link to some examples, but I'm only allowed 1 link per post at the moment).
Now I really don't have any "need" to better understand the underlying tedious details of this. I am just curious. And confused.
So ... some questions I'm hoping someone better informed than I might answer.
-
The talk about a potential addressing problem in both the hardware and the software confused me. The assertion is that something called something called
Long LBA addressing (LLBA)
is needed in theCommand Descriptor Block
as a way to get around the current limits to access a hard drive bigger than 2 TB (1 TB=2⁴⁰ B).OK, fine. But I thought the last time this problem came up it was solved by extending the length of the LBA field from 28 to 48 bits. (Remember this website? www.48bitlba.com) A 6 byte LBA is clearly large enough, so what's up with this LLBA talk. I thought this was all fixed back by Win XP SP2, if not sooner? And certainly all the hardware should be up to the task, shouldn't it?
-
The real problem as I understand it with drives much bigger than 2 TB are the 4 byte LBA fields in the Master Boot Record (MBR) used to partition just about all hard drives at the moment. The most likely solution is to migrate to Intel's GUID Partition Table (GPT). A GPT uses 8 byte fields for the LBA.
What I don't understand in this context is what is the problem with booting say Windows from a 3TB drive that uses a GPT. Granted, the current PC BIOS wouldn't know how to recognize or work with a GPT. But every GPT comes with a so-called "Safety" or "Guarding" MBR in sector 0.
Apple already uses a hybrid version of the MBR to allow them to boot Windows on their Intel Macs (aka Boot Camp). Couldn't something similar be done to allow the PC BIOS to recognize and boot from a partition within, say, the first 2 TB of a 3 TB or larger drive?
I've got more questions such as where do 4K sectors fit into all of this. But it's probably time I just shut up and posted this. ;-)
-irrational john
The statements about "Long LBA" seem to originate from that one Seagate product manager. What she probably meant is that even though 48-bit LBA is the standard on hardware, 32-bit OSes and drivers may not support all 48 bits, since (a) they're 32-bit and that's more hassle, and (b) MBR only supports 32 bits for partitions anyway, so why bother.
When the 128GB barrier was broken by adopting 48-bit LBA, that was both on the hardware side, in the ATA specification, going up from 28 bits; and also on the OS/driver side, to make sure they didn't hard-code that old 28-bit limit. You can probably say that current well-written drivers actually conform to the actual 48-bit limit, but it's easy to see how somewhere along the chain, someone took the easy way out and only supports 32 bits in their 32-bit drivers. Given that 32-bit OSes are on the way out anyway, it may not be worth trying to make sure all of that works.
As you said, the real issue (for Windows at least) is booting a GPT disk from a BIOS-based (non-EFI) computer. The Protective MBR is designed to make the entire disk seem like a single unknown partition, so that a BIOS/MBR-aware computer won't even touch it. You can create a Hybrid disk, so that the MBR also contains other entries, for partitions below the 2TB barrier. But such Hybrid disks are fragile (easy to clobber with either MBR or GPT partition tools), and no longer officially GPT disks. You're also not booting any GPT partitions, you're booting MBR partitions. That might be OK if you just want to use the GPT partition as a data drive.
And why can't BIOS boot GPT? The short answer is that they haven't, and in order to add that capability, you'd need a smarter BIOS. And that's what EFI is for.
4KB sectors would give you 16TB disks with 32-bit LBA. (And fewer larger sectors means potentially less I/O overhead.) But all the OSes and drivers and even some apps would have to be written to support variable-sized sectors. All you need is one place where the sector size is hard-coded at 512 to break. So 4KB sectors is also not an "easy" solution because it would take a lot of work from many parties. But if you're going to write future software to support GPT (which is sector-size agnostic) and variable-size sectors, it might be adopted as the common practice at some point.
You certainly can boot from a GPT disk on a BIOS machine. Just that windows claims that it cannot.
Even that is not really true ; you can boot Windows from a BIOS computer on a GPT disk : you just need one tiny additional MBR disk to hold boot files. A hard disk being used for some other OS with a spare (small) partition, floppy, USB drive (assumed)...
Boot into the Windows install/repair disc. Create the system drive on the stick, and use bcdboot
to put your boot files on the stick. Add a bootsector with bootsect
. Change the {bootmgr}
device
to boot
. Boot from stick.
Steps are detailed here.