-
3TB hard disk used as external USB connection or internal Sata connection
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.
-
Fdisk can see 3TB capacity but when given the opportunity to use up 3TB it is restricted to only 2TB
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
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-364801, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-267349, default 267349):
Using default value 267349
Command (m for help): p
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 267349 2147480811 83 Linux
In the above the 3TB disk has 364801 cylinders but fdisk can only default to 267349 cylinders.
With 255 head per cylinder, 63 sectors per head and 512 bytes per sector 267,349*255*63*512 = 2199,020,382,720 bytes which is the 2TB limitation of MSDOS partition table.
If Gparted is used to create a partition bigger than 2TB it issues a warning and refuses to proceed.
Last edited by saikee; 09-03-2011 at 09:46 AM.
-
How to use gpt scheme on a hard disk larger than 2TB
Here are all the commands needed
Code:
parted /dev/sdb
mklabel gpt
mkpart Ubuntu 0 3TB
quit
mkfs.ext4 /dev/sdb1
mkdir /mnt/sdb1
mount /dev/sdb1 /mnt/sdb1
df
The red commands are issued at terminal as the root user. The blue commands are issued inside partitioning Program "parted"
The last command instructs Linux to displayed the mounted partitions/folders and this is what it shows up at the terminal
Code:
root@saikee-desktop:/home/saikee# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 480696480 355233312 101044368 78% /
none 3090708 560 3090148 1% /dev
none 3094936 396 3094540 1% /dev/shm
none 3094936 320 3094616 1% /var/run
none 3094936 0 3094936 0% /var/lock
none 3094936 0 3094936 0% /lib/init/rw
/dev/sda1 56208032 16349088 39858944 30% /media/SDA1_FAT32
/dev/sda6 56235500 28247876 27987624 51% /media/sda6_Win7-64
/dev/sdb1 2884283608 205808 2737564548 1% /mnt/sdb1
The purpose line indicated my 3TB partition, from an internal hard disk, is ready to use and it got 2884 Gb approximately.
I would say using gpt partitioning scheme is simple and fast in Linux.
Last edited by saikee; 09-03-2011 at 11:06 AM.
-
I would be curious if there are any speed differences from external with controller and internal without? I have three 2TB externals that I use for my home backup (soft RAID0 + Encrypt). When I got them the 2TB were cheaper even with 3 to hit my 6TB target. Since they are at the threshold, no controller chip is needed. It is always an obvious hit when transferring to them, so further latency from a controller would be a turn off (can it be disabled if using a non-MSDOS partition?).
"Whenever you find yourself on the side of the majority, it's time to pause and reflect."
-Mark Twain
-
If the disk is run as an internal hard disk it is at Sata II speed which would be 2 to 4 times faster than running as a USB2 device.
I use mobile racks for internal drives and external USB2 docking stations. All of them accept the bare disk. Thus I can put the disk from internal to external in seconds. For back up I always run them as internal disks to save the time.
I haven't investigated the benefit of using 4096 bytes per sector as I am sure the USB3 is the way to go rather than squeezing whatever left in USB2.
The 3TB partitioned in gpt is usable in 64-bit MS Windows so there may be a market for it. 64-bit Windows can use gpt disk but require efi firmware to boot from it.
-
Internal would be a bad test then. I'm mostly curious if the controller itself and/or the 512 vs 4096 adds any latency. It'll be awhile before I have to upgrade the array, your post just sparked the idea.
"Whenever you find yourself on the side of the majority, it's time to pause and reflect."
-Mark Twain
-
I believe the hard disk itself also has some electronic to interact with the USB2 base receptacle where the controller may have been doctor. This is because I also test the USB2 base receptacle with another 500Gb hard disk and it didn't reported the 4096 bytes per sector as the 3TB unit did.
When used as an internal disk the 3TB proves its read/write head only delivers 512 bytes per sector. Thus by having a middleman, in the form of USB controller, to repackage the information to 4096 bytes should only reduce rather than add performance of the hard disk I would have thought.
What is curious about this 3TB disk is it wouldn't respond to section size change at all by the command fdisk and testdisk with which I did attempt to force it back to 4096 bytes per sector. May be I have missed something.
-
What is the model of the hard drive? Since is not advanced format 4k is it using lba48?
Thanks
-
I have a 3tb external hdd. its controller broken.
I have a 3tb external hdd. its controller broken. you says that if it used as internal drive, then the content will be lost.
i hope only when writting will be performed and not reading? right?
-
Originally Posted by estatistics
I have a 3tb external hdd. its controller broken. you says that if it used as internal drive, then the content will be lost.
i hope only when writting will be performed and not reading? right?
Same thing happened to me and I lost everything. Nowadays I make backups of my backups.
-
I suggest you try to check it by reading its content as an internal disk. Lots of changes to the Linux kernel and MS Windows since last time I wrote this thread.
My guest is if the disk has been formatted and has data on it then all OSes would be able to continue to read and write.
-
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
|