1

I created a 2G partition like this with fdisk:

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 
First sector (4196352-16777215, default 4196352): 
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-16777215, default 16777215): +2G
Partition 2 of type Linux and of size 2 GiB is set

Command (m for help): w
The partition table has been altered!

But if I check the size (again with fdisk) it seems to be

fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 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 label type: dos
Disk identifier: 0xe82746a5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux


blockdev --getbsz /dev/sdb2
4096

Then double-checking things:

echo "2097152*4096/1024/1024/1024" | bc
8

(blocks * bytes / 1024^3 should give GB right?) which implies an 8GB partition.

How am I calculating this wrong?

Snowcrash
  • 679

1 Answers1

1

Ignore the "Blocks" column. Your end sector is 8390655, your start sector is 4196352. So, the number of sectors this partition is spanning is 8390655 - 4196351 (since the first sector is included), or 4,194,304. Each sector is 512 bytes, so two sectors is one kilobyte, so 4,194,304 / 2 = 2,097,152 kilobytes. Divide by 1024**2 to get gigabytes, and you have a partition 2 GB large.

John
  • 17,011