I've been working on a move from 2TB to 3.0TB drive over the weekend and thought I'd discuss this topic. Now that I've "walked a mile in their shoes" I understand why drives are limited to 3TB. I don't understand why they chose to take this path to get to where they are, but that's another story for another day.
[
First off, they use MBR/MSDOS partitioning, yeah, good ole fdisk and all its limitations. So that means there is a 2TB limitation for any partition. You can have a > 2TB drive so long as the partitions don't exceed 2TB.
So here's the partition table from the 2.0TB drive I started with:
They've taken this drive and split into an odd configuration. There's a very small partition (sdc1, about 1GB) that is empty. I'm not sure what role it plays in things. Next, they build 2x 500GB partitions (sdc2+sdc3 @ 524280000) you'lll have to trust me that it comes out to 500GB in binary math.
This next part is where it gets funky... to avoid running out of primary partitions (sdc1+2+3 are primary partitions) they build partition 4 with the remainder of the disk as an extended partition. This is inherently limited to 2TB because we're using fdisk. That's reason 1 for the 3TB disk limit.
We still have unused space on the disk, because they keep carving up the disk within the extended partition. So, we have a 500GB partition (sdc5) and a ~375GB (sdc6) partition within the extended partition.
When you move over to a 3TB drive, you run into the next limitation, which is no more than 8 partitions on an MBR/MSDOS partitioned disk. They simply extend the partitioning scheme outward thusly:
So you can see that this disk got extended out to 8 partitions (sda 7+8), with 1,2,3,5,6 and 7at 500GB and the 8at around 300GB.
I understand what Dish has done, but at this point I haven't the faintest clue as to why this method was selected.
Please bear with me, I'll probably be editing this several times to get the spacing just so in the code sections.
[
First off, they use MBR/MSDOS partitioning, yeah, good ole fdisk and all its limitations. So that means there is a 2TB limitation for any partition. You can have a > 2TB drive so long as the partitions don't exceed 2TB.
So here's the partition table from the 2.0TB drive I started with:
Code:
Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes
1 heads, 63 sectors/track, 62016336 cylinders
Units = cylinders of 63 * 512 = 32256 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdc1 2 33290 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdc2 33290 16677353 524288000 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sdc3 16677353 33321417 524288000 83 Linux
Partition 3 does not end on cylinder boundary.
/dev/sdc4 33321417 62016336 903889974+ 85 Linux extended
Partition 4 does not end on cylinder boundary.
/dev/sdc5 33321418 49965481 524288000 83 Linux
/dev/sdc6 49965482 62016336 379601911 83 Linux
[
They've taken this drive and split into an odd configuration. There's a very small partition (sdc1, about 1GB) that is empty. I'm not sure what role it plays in things. Next, they build 2x 500GB partitions (sdc2+sdc3 @ 524280000) you'lll have to trust me that it comes out to 500GB in binary math.
This next part is where it gets funky... to avoid running out of primary partitions (sdc1+2+3 are primary partitions) they build partition 4 with the remainder of the disk as an extended partition. This is inherently limited to 2TB because we're using fdisk. That's reason 1 for the 3TB disk limit.
We still have unused space on the disk, because they keep carving up the disk within the extended partition. So, we have a 500GB partition (sdc5) and a ~375GB (sdc6) partition within the extended partition.
When you move over to a 3TB drive, you run into the next limitation, which is no more than 8 partitions on an MBR/MSDOS partitioned disk. They simply extend the partitioning scheme outward thusly:
Code:
Disk /dev/sda: 3000.6 GB, 3000592982016 bytes
1 heads, 63 sectors/track, 93024336 cylinders
Units = cylinders of 63 * 512 = 32256 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 33 33321 1048576 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 33321 16677385 524288000 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3 16677385 33321448 524288000 83 Linux
Partition 3 does not end on cylinder boundary.
/dev/sda4 33321448 93024336 1880640984 85 Linux extended
Partition 4 does not end on cylinder boundary.
/dev/sda5 33321481 49965544 524288000 83 Linux
/dev/sda6 49965577 66609640 524288000 83 Linux
/dev/sda7 66609673 83253736 524288000 83 Linux
/dev/sda8 83253737 93024336 307773880+ 83 Linux
So you can see that this disk got extended out to 8 partitions (sda 7+8), with 1,2,3,5,6 and 7at 500GB and the 8at around 300GB.
I understand what Dish has done, but at this point I haven't the faintest clue as to why this method was selected.
Please bear with me, I'll probably be editing this several times to get the spacing just so in the code sections.
Last edited: