Understanding The 2 TB Limit in Windows Storage
Understanding The 2 TB Limit in Windows Storage
Understanding The 2 TB Limit in Windows Storage
There are actually three different 2 TB limitations that are commonly hit...
Partition size
Number of clusters
SCSI goo
512 bytes
2,199,023,255,040 (2TB)
1024 bytes
4,398,046,510,080 (4TB)
2048 bytes
8,796,093,020,160 (8TB)
4096 bytes
8192 bytes
35,184,372,080,640 (32TB)
16384 bytes
70,368,744,161,280 (64TB)
32768 bytes
140,737,488,322,560 (128TB)
65536 bytes
281,474,976,654,120 (256TB)
Cluster size really depends on your needs. While 512 is fine if you just have a bunch of
tiny files, it isnt as efficient for say a volume with just SQL DBs. Also, a tiny cluster size
can adversely affect VSS. But that is a topic for another time.
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 lets 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.
FF FF FF FFh = 4294967295d
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.
What this all means is that when Windows is using the Read10/Write10 standard, then
the biggest drive that will be supported is 2TB.
Read16/Write16 Sometimes called LBA64 by some vendors, this standard reserves
bytes 2-9 to define the LBAs. That would be 8 bytes, each byte being 8 bits in size. Now
here is where we start getting into some really big numbers. The approximate size
comes out to be around 8ZB (zettabytes). Heres a quick chart to put it in some
perspective.
So it is going to be a while before we have to worry about running into the limitation of
Read16/Write16.
2