Linux – Why there is a difference in size reported by lsblk, gdisk and parted

hard drivelinuxparted

[anaconda root@861767 ~]# lsblk /dev/sda
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda            8:0    0 465.8G  0 disk 
├─sda1         8:1    0   512M  0 part 
└─sda2         8:2    0 465.3G  0 part 
  ├─sys-root 253:2    0    10G  0 lvm  
  ├─sys-var  253:3    0     4G  0 lvm  
  ├─sys-tmp  253:4    0     4G  0 lvm  
  └─sys-home 253:5    0 447.3G  0 lvm  
[anaconda root@861767 ~]# gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2029 sectors (1014.5 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   0700  
   2         1050624       976773119   465.3 GiB   8E00  
[anaconda root@861767 ~]# parted -s /dev/sda unit GB print
Model: ATA GB0500EAFYL (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      0.00GB  0.54GB  0.54GB  ext4
 2      0.54GB  500GB   500GB                      lvm

[anaconda root@861767 ~]# 

lsblk and gdisk reports the disk size is 465.5G
parted says the size is 500G

Which one is real? And why there is inconsistency?

Best Answer

Disk manufacturers advertise disk sizes in multiples of 1000. That is, a "KB" is 1000 and not 1024 as software people are used to.

For you, it seems that lsblk and gdisk are using the 1024 value but parted is using 1000.

465.5 * 1024 * 1024 * 1024 == 499,826,819,072

Now, divide:

499,826,819,072 / (1000 * 1000 * 1000) == 499.826

which maps to the 500 that parted is reporting

Notice that lsblk and gdisk use GiB but you gave the GB option to parted. Try parted with the GiB option

Related Topic