Recently I purchased a Seagate Goflex 3TB external USB hard disk to see how this product cope with the limitation of a maximum 2TB in the MSDOS partition table. The disk is a Sata ii in a sealed external hard disk enclosure.

There are a few surprises and I am sharing them with you.

Basically the manufacturer still offering this hard disk with the standard 512 bytes per sector but the USB connection has a special controller telling the world outside that it has 4096 bytes per sector. Due to the 8-time increase of the sector size the 3TB can be accommodated in a normal MSDOS partition table which is what 99.99% PC users are now using.

First I show the reactions of this hard disk by various Linux partitioning tools. The disk was detected as device sdc via a USB port in the PC.

(1) fdisk reaction to a 3TB external USB hard disk
Code:
Note: sector size is 4096 (not 512)

Disk /dev/sdc: 3000.6 GB, 3000591892480 bytes

255 heads, 63 sectors/track, 45600 cylinders

Units = cylinders of 16065 * 4096 = 65802240 bytes

Sector size (logical/physical): 4096 bytes / 4096 bytes

I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk identifier: 0x0009fcd1

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       45601  2930265264    7  HPFS/NTFS
Fdisk is one of those few that manages to report correctly the disk geometry and that it has 4096 bytes per sector and a capacity of 3TB.

(2) cfdisk reaction to a 3TB external USB hard disk
Code:
                         cfdisk (util-linux-ng 2.17.2)
                              Disk Drive: /dev/sdc
                      Size: 3000591892480 bytes, 3000.5 GB

             Heads: 255   Sectors per Track: 63   Cylinders: 364801

    Name        Flags      Part Type  FS Type          [Label]          Sectors
 ------------------------------------------------------------------------------

                            Pri/Log   Free Space                             64*
    sdc1                    Primary   NTFS                            732566316*
                            Pri/Log   Free Space                     5127961685*

     [   Help   ]  [   New    ]  [  Print   ]  [   Quit   ]  [  Units   ]  [  Write   ]
The original 45600 number of cylinders, with 4096 bytes per sector, has increased to 364801 or exactly 8 times. This suggests cfdisk has assumed each sector has only 512 bytes and so it reports the partition sdc1 is now 1/7 of its original size leaving 6/7 of the hard disk space suddenly becoming Free unallocated space.

(3) sfdisk reaction to a 3TB external USB hard disk
Code:
root@saikee-desktop:/home/saikee# sfdisk -l /dev/sdc

Disk /dev/sdc: 364801 cylinders, 255 heads, 63 sectors/track

Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System

/dev/sdc1          0+  45600-  45601- 366283158    7  HPFS/NTFS
/dev/sdc2          0       -       0          0    0  Empty
/dev/sdc3          0       -       0          0    0  Empty
/dev/sdc4          0       -       0          0    0  Empty
sfdisk also assumes 512 bytes per sector and hence the number of cylinders changed from 45600 to 364801, an increase of 8 times.

(4) Gparted reaction to a 3TB external USB hard disk

No reaction from Gparted if the 3TB disk was able to communicate with Linux via its original Goflex USB controller. Gparted senses something fishy and refuses to include it in the detected list.


(5) parted reaction to a 3TB external USB hard disk
Code:
root@saikee-desktop:/home/saikee# parted /dev/sdc

Warning: Device /dev/sdc has a logical sector size of 4096.  Not all parts of
GNU Parted support this at the moment, and the working code is HIGHLY
EXPERIMENTAL.

GNU Parted 2.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) p                                                                

Model: Seagate FA GoFlex Desk (scsi)

Disk /dev/sdc: 3001GB
Sector size (logical/physical): 4096B/4096B
Partition Table: msdos

Number  Start  End     Size    Type     File system  Flags
 1      262kB  3001GB  3001GB  primary
Parted has understood the hard disk better than others and able to report everything correctly and issue a warning at the same time.

(6) MS Windows 7 reaction to a 3TB external USB hard disk
Code:
Microsoft Windows [Version 6.1.7600]

Copyright (c) 2009 Microsoft Corporation.  All rights reserved.
C:\Users\saikee>dir i:

 Volume in drive I is 3TB-partition
 Volume Serial Number is 88FC-0ACD

 Directory of I:\

03/09/2011  01:28    <DIR>          The One 2001 BRRip 720p H264-3Li
               0 File(s)              0 bytes

               1 Dir(s)  2,998,035,451,904 bytes free
The Seagate Goflex 3TB USB external hard disk is aimed at MS systems as the market so it should work flawlessly because MS partitioning tools have no concept of cylinder, head and sector let alone how many bytes in each sector.

The Goflex 3TB USB external hard disk, once pre-formatted in the factory, also works flawlessly in Linux. The information above only shows up the reaction of the partitioning tools.

To investigate the behaviour of this 3TB hard disk I removed its external casing and installed the same disk in my PC to work as an internal hard disk. This is not what the product has been designed for but my experiment is to improve our understanding of this 3TB disk.

From now on the disk is reported as sdb in Linux and still drive I: in Windows 7.

(7) fdisk reaction to a 3TB internal hard disk
Code:
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes

255 heads, 63 sectors/track, 364801 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009fcd1

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       45601   366283158    7  HPFS/NTFS
fdisk was able to see the full 3TB capacity but as an internal hard disk without a USB controller the number of sector is reduced to the standard 512 bytes. Since the partition table has not been changed and so the same 45601 cylinders lead to the partition being shrunk to 1/8 of the original size.

(8) cfdisk & sfdisk reaction to a 3TB internal hard disk

No change when the USB external hard disk became an internal Sata disk.

(9) parted reaction to a 3TB internal hard disk
Code:
root@saikee-desktop:/home/saikee# parted /dev/sdb 
GNU Parted 2.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: ATA ST33000651AS (scsi)

Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      32.8kB  375GB  375GB  primary
The sector size of the same disk has been detected to have 512 bytes but there is now no warning of the 4096 bytes sector size.

(10) Gparted reaction to a 3TB internal hard disk

While Gparted has an issue of seeing the 4096 bytes per sector with a 3TB USB external hard disk and ending up not mounting the disk it nevertheless accepts and reports the same disk when hooked up as an internal Sata. The disk was successfully detected as device sdb. However the sdb1 partition was reported to have an unknown filing structure of 349.31 GiB large with 2.39TiB unallocated space. The ratio of the partition relative to the unallocated space is exactly in the 1:7 ratio indicating Gparted detected the 512 byte per sector correctly but it filing system has been trashed by the reduction of the sector size.

(11) MS Windows 7 reaction to a 3TB internal hard disk
Code:
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\saikee>dir i:

The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.
Now without the USB controller the same partition is not readable by Windows 7. However the original partition has shrunk to 1/7 of the original size leaving two lots of unallocated hard disk space. The first lot stops at 2TB. The second lot is unusable space after 2TB. The combined two lots of the unallocated space represent the 6/7 of the 3TB when the 4096 bytes per sector size was maintained by the availability of the doctored USB controller. My 64-bit MS Win7 therefore is unable to use hard disk space beyond 2TB.

Since the partition was created with 4096 bye per sector it will not function in an read/write environment based on a 512-byte record size because the filing indices would be all wrong. This situation is repeated in Linux even though the partitioning tools are able to deal with the hard disk realistically without the interference of a doctored USB controller.

Conclusions

(1) The Seagate Goflex 3TB USB external hard disk will work as intended with 4096 bytes per sector if the disk has been formatted with the correct software. This is achieved by a special USB controller in the casing.

(2) The content of 3TB disk will be lost if the disk is used as an internal hard disk as without the benefit of the USB controller the disk reverts back to 512 bytes per sector.

(3) The 3TB as an internal hard disk can only be addressed upto 2TB by a MS Windows. Linux will be able to use the full 3TB internal hard disk at least by changing the MSDOS to GPT partition table.

Further investigation

I shall investigated if the 3TB disk could be usable in Linux using the traditional MSDOS partition table since some Linux partitioning tools are able to interpret the geometry correctly.