I've been working with a pair of 2TB drives for the past week - and I've become increasingly frustrated. They'd work wonderfully one minute - I could torture-test them into the ground without so much as a hiccup. Next thing I know, they blow up leaving dead bodies all over the Peking Highway.
Yet, it's not absolutely reproducible.
The lack of reproducibility, and the fact that the largest number of the drive "failures" occur at the highest eSATA port number, leads me to believe that there is more to this than meets the eye - and I began looking at the controllers themselves.
Looking online I notice that SATA controllers come in three distinct "flavors":
- 1.5 Gbs
- 3.0 Gbs
- 6.0 Gbs
- 48 bit LBA (logical block address)
- 64 bit LBA
Now WHY should 64 bits of Logical Block Address be required for drives larger than a single terabyte or so?
If I look at the addressing range for a 48 bit LBA, (248), I get 281 trillion bytes, (2.81 x 1014 or 281 TB), if we assume that the smallest item addressed by the logical block address is a single byte.
However – these are logical BLOCK addresses, not byte addresses and the smallest addressable unit is the sector, (or allocation unit), which is, (usually), 512 bytes. So what you should have is 281 trillion sectors of 512 bytes each which is a pretty doggone big number. Even if we ignore sectors and count just bytes, we still have more than 281 terabytes to play with.
Just for grins and giggles, if I assume that this is 281 (plus-or-minus) terra-BITS – we’d divide by 8, which still gives us well over 35.2 terra-BYTES of storage.
The only thing that comes even close to conventional numbers is dividing the 281T, by 512 – which gives us right at 551 gigs.
Again, this does not make sense.
First: There is no logical reason to divide by the sector byte count.
Second: If that were true, there would be no 1TB drive on the planet that could possibly work. They would all puke at 551 gigs due to wrap-around.
Looking at a 64 bit LBA, 264 equals 3.6 exta-bytes (3.60 x 1017 bytes) which should be plenty enough bytes to last anyone for at least the next year or so until the google-plex sized drives come out.
So, no matter how we slice it, there should be plenty of bytes to go around and I suspect that the 64 bit LBA is more of a marketing tour de force rather than a real hardware requirement.
So. . . . What is the real limiting factor?
My money is on “the controller card and its memory”.
The SATA controllers that talk to both the drives and the computer buss itself have to do a significant amount of data-translation – parallel to serial – as well as serial to parallel. Addresses as well as data received need to be assembled and dis-assembled somewhere and the serial ATA controllers have to have registers large enough to handle the data widths.
My suspicion is that the controller card memory, which was plenty and more than plenty, when handling drives 1TB or smaller; becomes a critical resource when handling 2TB drives.
I also suspect that my specific controller card, (I am assuming it was spec’d for four 1TB drives max), depends on the fact that at no time will all four drives be sending data absolutely simultaneously as the controller can “control” (duty-cycle), the data streams to keep things in-bounds.
Two 2TB drives running at the same time is the equivalent of all four 1TB drives talking all at once – and that becomes a juggling act that the controller may have trouble keeping up with, since the controller cannot duty-cycle individual 1T data-streams. And when a hard-drive controller starts dropping the balls, well. . . . Lets just say that it’s not a pretty sight.
So – IMHO – the real limiting factor here is that the existing hardware SATA controllers have been outgrown by their respective drive sizes; requiring us to either limit the number of 2T drives, (or not use them at all), OR upgrade to a more modern controller that is equipped to handle the larger drive sizes.
What say ye?