Size limit on external USB hard drives

hard driveusb

The internal SATA hard drives have a limit on a lot of motherboards of 2TB and if I want to get a 3TB HDD then I need to connect it using a PCI card (or get a new motherboard).

But I wanted to ask: If I connect a 3TB harddrive to a external USB enclosure, will it work?
The Vantec enclosure I want to buy says it supports up to 3TB HDD but I want to make sure.

Best Answer

To answer the subject line, USB's limit is the limit of its mass-storage class (MSC) spec. This spec is in turn based on the SCSI transparent command set. (See also http://en.wikipedia.org/wiki/USB_mass_storage_device_class#Device_access).

Looking at the various SCSI read commands (https://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068j.pdf, sections 3.15 through 3.19) you can see that there are several versions of the READ command:

  • READ(6) uses 21-bit block address, imposing a 1 GiB limit for devices with 512 byte blocks. READ(6) is obsolete, but may still be used by older devices.
  • READ(10) and READ(12) use 32-bit LBAs, imposing the 2 TiB limit many cases have today.
  • READ(16) and READ(32) use 64-bit LBAs imposing an 8 ZiB limit (that's 8 giga-terabytes!).

Modern USB cases will support 64-bit LBAs and should support any drive you're likely to find. Older cases won't support this and will misbehave if they are attached to a drive larger than 2TiB.

Assuming your USB case supports the drive, then there's the issue of partitioning the drive. The MBR partition scheme (used in various forms since MS-DOS) uses a 32-bit block index. So it has a limit of 2TiB. The solution used today is to switch to the GUID partition table (GPT) format which uses 64-bit block numbers.

All modern operating systems (including Windows, Mac OS X and Linux) support GUID partition tables and should be able to support a >2TiB drive as a data disc.

If you're a Mac or Linux user, then you should be able to boot from the drive as well. Macs have EFI firmware and support booting GPT volumes. Modern Linux systems have code in the GRUB bootloader that, I'm told, will allow booting Linux from a GUID drive without EFI firmware..

If you're running Windows, however, you may or may not be able to boot from the drive. You will need EFI firmware on your motherboard, and you will need to be running a 64-bit version of Windows. Microsoft requires both in order to boot from a GPT drive of any size. This means that if you are running 32-bit Windows or have BIOS-only firmware (without EFI), you will want to make sure your boot disk is 2TiB or smaller, so you can apply an MBR partition.