The myth of the 16TB limit

I've seen a little talk here and there about just how much storage you can have in your Windows Home Server's storage pool... and an often tossed around number is 16TB... a limit and a number that is a bit of a myth. The actual number is more theoretical and much higher, and this despite this blog post from Windows Home Server product planner Todd Headrick who indicated that as of November 2008:

  • The largest number of hard drives currently attached to a home server is 27, there are lots and lots of people with more than 10 hard drives attached to their home servers
  • The largest amount of available disk space that we have seen (so far) is: 22.06 terabytes
  • The largest amount of used disk space that we have seen (so far) is:  19.32 terabytes

Still not convinced? With the help of Hyper-V I created a Windows Home Server virtual machine (an unsupported, but useful for testing scenario) and added a few hard drives to it. How many? 16 x 2 terabyte drives (the largest Hyper-V UI supports creating):

32TB WHS

But where does that 16TB number come from?

NTFS supports 2^32 - 1 clusters, coupled with the (default) 4k cluster size we use on Windows Home Server, the math comes out to 17,592,186,040,320 bytes... or a hair under 16 terabytes.

At first glance this possible limitation makes sense as Windows Home Server’s Drive Extender does make a whole bunch of disk volumes appear to be a single one... remember though that it does that magic not through making multiple NTFS volumes into one logical volume (as is the case with Windows spanned volumes), but by doing read/write redirection to the actual volume that the file or folder exists on.

So rest assured, if you do have enough large hard drives hard drives collecting dust, you can add them to your Windows Home Server and end up with a system that has more available storage than just 16 terabytes... provided the disks are large enough of course.

Granted it'll probably be a little while before very many people see that for themselves, but before that there are two practical limits that will be hit first.

(For more information on Drive Extender, please see the Windows Home Server Technical Brief for Drive Extender)

MBR & 2 TiB

Since the dawn of the IBM-PC and the PC-BIOS, PC disks, both hard and soft have used the Master Boot Record format to define the partitions of the disk, and like so many things defined long ago and served us well, they are no longer adequate for some of the systems we see today.

MBR has a built in limit... 2^32 logical blocks × 512 bytes per block... 2,199,023,255,552 bytes... or 2 terabytes. This means that if tomorrow you happen to add a hypothetical 3 terabyte hard drive into your Windows Home Server, we will only be able to format and use the first 2 terabytes for you... not unlike the old ATA limit where only 28-bits were used for the sector number, resulting in a limit of 128 GiB, something that was later resolved in the ATA/ATAPI-6 spec which uses 48-bit logical block addressing.

What's the answer? GUID Partition Table is the new standard for laying out partition information on hard disks, and as time goes on will ultimately replace MBR on PC’s and servers... unfortunately today while Windows Server 2003 supports reading and writing from GPT formatted disks, Windows Home Server’s Drive Extender does not.

This is a limitation we are aware of and will be addressed sometime in the future, be it in a future minor update, Power Pack or new version of the product.

Fortunately for all involved, such hard drives are not on the market at present and likely will not be until the fall at least (my guess based on the time between the first 1.5’s hitting the market and the recent 2.0’s)

For note GPT increases the bits used to address logical blocks on the hard drive from 32 to 64, 2^64 x 512 = 9,444,732,965,739,290,427,392 bytes... or about 8 zettabytes.

Available IO

The average OEM built Windows Home Server comes with several SATA bays for easy addition of hard drives and can easily handle as many hard drives as there are physical plugs for, however it is easy to reach a point where as storage goes up, system performance goes down.

Ultimately Windows Home Server is dependant on what kind (and how much) of hardware it is used on and the more IO intensive devices you have plugged in and being utilized, the harder it is going to be for us to manage your files and for you to access them quickly, something that can easily happen with with the addition of eSATA and port multipliers, as well as USB hubs (up to 127 device per host controller) and Firewire daisy chaining (up to 63 devices per bus)... it is very possible to add a massive number of drives to PC or Windows Home Server to the point that the various buses will be so saturated with data that the end user experience is going to be less than optimal.

What does this have to do with hitting 16 TB? Imagine building your own 16TB system... in it you attach 8x 2TB drives, even when spread out amongst multiple buses, how likely is it that you will be able to access each of those drives at their optimal speed without interference from other drives in the system?

(On a side note, this does make me wonder... just how fast and massive a Windows Home Server’s storage pool could be if it used Fiber Channel)

At the end of the day it’s important to consider just how many different drives we want to plug into ones Home Server. Sure we can take a collection of old internal and external drives and plug em in to every available port we have. That will work, but may not offer the same performance as spending the money on a smaller number of larger capacity drives. Also having all of those external drives means there is a greater chance of one drive failing, though be it with 30 drives or 3... with Drive Extender and folder duplication, our files will still be protected.