How to calculate partition Start End Sector

external-hddfdiskhard-diskmkfs

I am wondering what Start and End value to choose when partitioning my ext. SSD using fdisk.

fdisk suggests 2048-250069679, default 2048 but 250069679 cannot be divided by 512 nor by 2048. Wouldn't it be better to set the Start and End value to a number that can be divided by 512 or 2048 or 4096?

For example: Start 4096 and End 250068992

Command (m for help): p

Disk /dev/sda: 119,2 GiB, 128035676160 bytes, 250069680 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
Disklabel type: dos
Disk identifier: 0xa4b57300


Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-250069679, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-250069679, default 250069679): 

Created a new partition 1 of type 'Linux' and of size 119,2 GiB.


Command (m for help): p
Disk /dev/sda: 119,2 GiB, 128035676160 bytes, 250069680 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
Disklabel type: dos
Disk identifier: 0xa4b57300

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1        2048 250069679 250067632 119,2G 83 Linux

Command (m for help): i
Selected partition 1
         Device: /dev/sda1
          Start: 2048
            End: 250069679
        Sectors: 250067632
      Cylinders: 15566
           Size: 119,2G
             Id: 83
           Type: Linux
    Start-C/H/S: 0/32/33
      End-C/H/S: 206/29/63


mkfs.ext4 /dev/sda1
mke2fs 1.43.4 (31-Jan-2017)
Ein Dateisystems mit 31258454 (4k) Blöcken und 7815168 Inodes wird erzeugt.
UUID des Dateisystems: fdce9286-4545-447c-9cca-7d67f5bb9f43
Superblock-Sicherungskopien gespeichert in den Blöcken: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872


fdisk -l
Disk /dev/sda: 119,2 GiB, 128035676160 bytes, 250069680 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
Disklabel type: dos
Disk identifier: 0xa4b57300

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1        2048 250069679 250067632 119,2G 83 Linux

And how can it be that the Sectors number is lower than the End value?

Command (m for help): i
Selected partition 1
         Device: /dev/sda1
          Start: 2048
            End: 250069679
        Sectors: 250067632
      Cylinders: 15566
           Size: 119,2G
             Id: 83
           Type: Linux
    Start-C/H/S: 0/32/33
      End-C/H/S: 206/29/63

Best Answer

Alignment doesn’t matter for the end sector, at least not for performance reasons. Alignment of the start sector affects all the sectors in the partition; alignment of the last sector only affects the last few sectors of the partition, if at all.

Sectors are numbered from 0; fdisk is suggesting the last sector on your disk (which has 250069680 sectors).

  Start: 2048
    End: 250069679
Sectors: 250067632

is correct, 250069679 minus 2048 plus one is 250067632: the partition contains 250067632 sectors, starting at offset 2048. Note that this is aligned to 4096 bytes: 250067632 is a multiple of 8 (the sectors contain 512 bytes here, and 8×512 is 4096).

Depending on how you use the partition, alignment of the end sector might be important; for example, if you’re partitioning a 512e disk (a disk which uses 4096-byte sectors internally, but exposes 512-byte logical sectors), and want to use it with cryptsetup and 4096-byte blocks to improve performance (cryptsetup luksFormat --sector-size=4096), you’ll have to ensure that the partition contains an exact multiple of 4096 bytes (not sectors).

Related Question