Friday, 29 September 2017

Aligned partitioning of 2TB disk with Linux fdisk


Is there a way to create a single 2TB partition, which is 4096-byte-sector aligned, on a disk using the standard Linux fdisk (I have tried version 2.17.2)?


I've tried the following things and ran into the described error:



  • If I simply use the -u flag, it sets the cluster size to one sector of 512 byte. Then, the partition would have to be 3,906,250,000 clusters long and fdisk truncates this number to 2,147,483,647 (2^31-1).

  • If I use -b 4096, it allows me to create the partition just fine (with length 488,281,506 sectors), but if I check the size of the resulting partition using blockdev --getsize64, it shows that the partition is only 250GB big, i.e. it is still using a sector size of 512.

  • If I try to set the sector and head count using -S 64 -H 32, for example, then it always sets the sector count back to 63, which doesn't divide evenly into 4096 (I know, 32 dividing evenly by 8 is technically enough, but - call me perfectionist - I'd really like to have the partition start at sector 2048 (1MB aligned), as I read is the recommended setting these days.


Is there some combination of parameters that I can pass to fdisk, that will allow me to create a partition that starts at 1MB (sector 2048 [256] for 512-[4096-]byte sectors) and is exaclt 2TB long (3,906,250,000 [488,281,506] sectors for 512-[4096-]byte sectors)?


(I read that I can just use gparted and have it change the drive to GPT partitioning, but I'd really like to know if there is a way to do it with standard fdisk and an MBR partition. I don't see a reason why MBR partitions shouldn't allow for this...)



Answer



UPDATE:


Newer versions of fdisk (e.g. v2.20.1) do not have the issue of truncating the cluster number as described in the question any more. Therefore, one can now simply use


fdisk -c /dev/sdX

to create a partition starting at 2048 and ending at 3906252047 to create the desired layout.


ORIGINAL ANSWER:


I found one way to do it:


fdisk -S 16 -H 1 -c /dev/sdX

Then, I can create a partition that starts at 129 and ends at 244,140,753.


Now, if I do fdisk -l -u /dev/sdX, I will get:


Disk /dev/sdX: 2000.4 GB, 2000365289472 bytes
1 heads, 16 sectors/track, 244185216 cylinders, total 3906963456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xee3e796d

Device Boot Start End Blocks Id System
/dev/sdX1 2048 3906252047 1953125000 fd Linux raid autodetect

and blockdev --getsize64 /dev/sdX1 gives me exactly 2,000,000,000,000.


Now the big question: Does anyone see a problem with the -S 16 -H 1? :)


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...