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 usingblockdev --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