Why does the partition start on sector 2048 instead of 63?
Solution 1
Because your old disc was partitioned with a old utility, such as the Linux fdisk
, that uselessly implemented track-alignment using the entirely fake disc geometry that you see reported, and your new disc has been or is being partitioned by a newer utility that (by default) aligns to 1MiB boundaries instead.
Further reading
- Jonathan de Boyne Pollard (2011). The gen on disc partition alignment. Frequently Given Answers.
Solution 2
fdisk -c=dos
You used the old DOS partition table when creating your partition. Newer versions of fdisk
do not use dos compatibility mode by default.
Solution 3
Maybe it will be useful to add a comment here.
For LUKS partition, it is said to delete and re-create the partition at the same place, but larger before calling cryptsetup resize
.
But when you created your partition long time ago, it start at the sector 63. Using fdisk, the partition will be recreated at the wrong offset, resulting in a lost partition.
I've managed to recover it using fdisk -c=dos
to be able to create partition from sector 63, without troubles.
Solution 4
The 1 MiB (2048 * 512-byte emulated block size) choice is a great catch-all for various hardware storage configurations. Since file system data structures are generally aligned with the partition start point, this can be important to maximize storage read/write speed.
For example:
RAID may use data stripes ranging from 16 to 256 KiB in size. 1 MiB is an integer multiple of this, so starting the partition at 1 MiB is compatible with the underlying RAID model.
SSDs typically have an erase block size of 128 to 256 NAND pages, which depending on the drive might be 256 KiB or 512 KiB. So here again, starting the partition at 1 MiB is compatible with the underlying SSD storage characteristics.
Advance Format 512e spinning HDDs have a 4 KiB physical block size, and again, 1 MiB is an integer multiple (albeit a rather large one) of this.
So while if you have an AF drive and are partitioning as GPT, you might be perfectly happy with your first partition starting at LBA block 40 (an integer multiple of the 8 logical blocks in each physical block of your HDD), hardly any real-world storage is lost by just starting at LBA block 2048 (1 MiB), which is just a more flexible value for partitioning software to default to since it is suitable for pretty much any hardware configuration.
Solution 5
While I realize that the actual question was answered, a quick fix for the 63 vs 2048 first cylinder issue is something like:
sfdisk -d /dev/sdb | sfdisk --force /dev/sda
(if you're sure you've got drives that are the same size)
You can then proceed with adding the various partitions back into the RAIDs where you got complaints about the partitions not being the same size due to the 63/2048 start cylinder difference throwing off the eventual partition sizes.
Related videos on Youtube
gcb
Updated on September 18, 2022Comments
-
gcb almost 2 years
I had two drives partitioned the same and running two RAID partitions on each.
One died and I replaced it under warranty for the same model.
While trying to partition it, the first partition can only start on sector 2048, instead of 63 that was before. Drive have different geometry as previous and remaining ones. (Fewer heads/more cylinders)
Old drive:
$ sudo fdisk -c -u -l /dev/sdb Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes 255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 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: 0x000aa189 Device Boot Start End Blocks Id System /dev/sdb1 * 63 174080339 87040138+ 83 Linux /dev/sdb2 174080340 182482334 4200997+ 82 Linux swap / Solaris /dev/sdb3 182482335 3907024064 1862270865 fd Linux raid autodetect
Remanufactured drive received from warranty:
$ sudo fdisk -c -u -l /dev/sda Disk /dev/sda: 2000.4 GB, 2000398934016 bytes 81 heads, 63 sectors/track, 765633 cylinders, total 3907029168 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: 0x000d0b5d Device Boot Start End Blocks Id System /dev/sda1 2048 ...
Why is that?
-
Admin over 12 yearsThe output does not indicate that this is an Advanced Format 4K drive:
Sector size (logical/physical): 512 bytes / 512 bytes
. -
Admin over 12 yearsWhy was this downvoted?
-
Admin over 12 yearsI disagree with the downvote, I was also not aware of the track-alignment misconception and JdeBP's info is useful and relevant to a valid question.
-
Admin over 6 yearsReleated questions and answers: superuser.com/q/565577/19956, unix.stackexchange.com/q/81556/3054.
-
Admin almost 5 yearsUsing newer disk drives, GPT is recommended which uses
2048
as start sector by default. The older disk was probably formatted with an older utility and using non-GPT partition table format. For partitioning newer "Advanced Format 4K" disks, use GPTfdisk
Utilities. For RAID, be sure to use typefd00 Linux RAID
and label your partitions appropriately.
-
-
billc.cn over 12 yearsIn other words, the LBA sector number 63 corresponds to cylinder 0, head 1, sector 1 in the CHS format, which is the first sector you can use in the MBR format. However, the number 63 is not divisible by 8, which causes a problem with 4K drives, so some modern tools starts the first partition at 2048 which also provides future GPT compatibility.
-
surfasb over 12 years+1: That was a great read JdeBP. I'm pretty sure I've read this else where, just not sure where. . .
-
jcbwlkr almost 11 yearsThe accepted answer has some valuable information but this answer has the gem that I needed to fix my problem.
-
tomfanning about 10 yearsfdisk wouldn't let me recreate a partition starting at sector 2048 without this argument - I got
First sector (3072-314572799, default 3072):
-
mcr almost 9 yearsThis is critical if you are trying to resize a partition, which with fdisk means deleting and recreating it; you need the partition to start at the same place.
-
David Tonhofer almost 8 years
fdisk
is not an "old utility", it's actively maintained. Just do NOT use "fake disk geometry" via-c=dos
(it's off by default!). The manpage explicitly warns against doing that as CHS is dead as disco. The link to JdBP's page is dead, but the history of the 1MiB (2048 sector) alignment can be found the Wikipedia entry Logical Disk Manager. It's a Windows Vista wart: "Using a 1-MiB alignment boundary allows safer editing of the partition table with Vista Disk Mgt." -
akostadinov almost 8 yearsno longer works with
fdisk from util-linux 2.28
:/ -
akostadinov almost 8 yearsfound it
fdisk -c=dos -u=cylinders /dev/sdb
in gist - gist.github.com/jkullick/febf46756435f1fa99dc56f00782de03 -
Chris Reid over 5 years63 is 111111 in binary. The BIOS of PCs, sector number is/was encoded in six bits, resulting in a maximal number of 111111 (63) sectors per track. This maximum is still used for virtual CHS geometry.
-
Pawel Cioch about 5 yearsyou should explain what it does, source destination?
-
Ярослав Рахматуллин over 2 yearsThis is not a great answer and the linked page is only accessible via the archive: web.archive.org/web/20200214191047/http://jdebp.eu./FGA/… . Any answer that is essentially "because of historical reasons" without explaining the reasons is worthless in my opinion. At best, this answer is somewhat practical but still borderline cryptic.
-
Thorsten Schöning over 2 yearsBEWARE: Unless Im doing something wrong, simply copying the same partitions 1:1 results in the same label names and even PARTUUID e.g. in case of GPT partition tables. that can be changed using FDISK in expert mode with the option
u
(change partition UUID). unix.stackexchange.com/a/341796/174233 -
x4444 about 2 yearsThe article was moved to jdebp.info/FGA/disc-partition-alignment.html