MBR 2TB LIMIT – TOTAL STORAGE OR PER DISC

mbr

I´m a little confused about the MBR 2TB limit. Does it refer to the total storage of a system or only to the boot partition? Let´s say I have Windows 7 32bit installed on a 500GB disc in a primary partition and three discs of 1TB each formated as logical partitions, all MBR, NO 4k, internal, NO USB. Can this configuration work without problems?

Best Answer

According to the Microsoft Technet Blog there are three different 2TB drive size limitations:

  1. Partition size
  2. Number of clusters
  3. SCSI goo

Partition Size The Master Boot Record (MBR) stores the locations of the different disk partitions. The number of bytes allocated for the pointer/offset is 4 (32 bit). This means the highest value that can be stored in the MBR Partition Table is:

FFFFFFFFh     - hexadecimal
4294967295d   - decimal

This maximum partition size is not in bytes, it is in number of sectors. Since currently sectors are limited to 512 bytes, the maximum size ends up being 2 TB.

4,294,967,295 sectors * 512 bytes/sectors = 2,199,023,255,040 bytes or 2TB.

Number of Clusters

The second limitation is harder to spot. It is a limitation of NTFS. NTFS is limited to (2^32 -1) clusters….no matter what. The smallest cluster size possible is 512 bytes (1 sector). So again the math leaves us at 2,199,023,255,040 or 2TB.

(2^32)-1 = (4,294,967,296)-1 = 4,294,967,295 clusters

4,294,967,295 clusters * 512 bytes/cluster = = 2,199,023,255,040 bytes or 2TB

SCSI Goo

This is by far the hardest to understand as it requires some basic SCSI knowledge. Microsoft Windows operating systems support two different SCSI standards when it comes to reads and writes. There is a third but it is very old and is mostly just used on tape devices. So let’s just forget about that one and stick to the two that are relevant.

These two standards are Read10/Write10 and Read16/Write16. This all has to do with the way the CDB (Command Descriptor Block) is structured.

Read10/Write10 – This standard reserves bytes 2-5 to define the LBA (Logical Block Address). Think of LBA as sector numbers….it makes it easier on your brain. So we have 4 bytes that can define the addressable sectors. Just like in the ‘partition size limitation’ we are back to dealing with a 4 byte number used to define all the addresses on the drive.

FFFFFFFFh     - hexadecimal
4294967295d   - decimal

And just like before, the above is just the possible number of address (number of sectors). Multiply by the standard sector size of 512 bytes and we get…

4,294,967,295 sectors * 512 bytes/sectors = 2,199,023,255,040 bytes or 2TB.

This means that due to Windows using the Read10/Write10 standard, the biggest drive that will be supported is 2TB. Terminology is key here; drives have upper limits of 2TB; volumes can be larger (spanning multiple disks).

Solutions

One solution is to use multiple 2TB drives with a single volume, this allows for large files (>2TB) to be stored.

The second method to bypass the partition size limitation is to use a GPT (Guid Partition Table) configuration. In Windows 2003 SP1 Microsoft introduced its implementation of the GPT. A disk configured to be GPT rather than the MBR style would have a 32 sector partition array instead of a tiny 64 byte partition table.

More information on Windows support for hard disks that are larger than 2TB.