为什么我从parted 和fdisk 得到不同的输出?

为什么我从parted 和fdisk 得到不同的输出?

注意:我是一名 Linux 初学者,并试图从以下内容中学习书:Linux 是如何工作的

运行parted -l我得到:

Model: KBG30ZMV256G TOSHIBA (nvme)
Disk /dev/nvme0n1: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name                  Flags
 1      1049kB  538MB  537MB  fat32        EFI System Partition  boot, esp
 2      538MB   256GB  256GB  ext4       

运行时fdisk-l我得到:

...

Disk /dev/nvme0n1: 238,5 GiB, 256060514304 bytes, 500118192 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: gpt
Disk identifier: BCB099F2-0FCD-4A90-83C2-A76C3E49682D

Device           Start       End   Sectors  Size Type
/dev/nvme0n1p1    2048   1050623   1048576  512M EFI System
/dev/nvme0n1p2 1050624 500117503 499066880  238G Linux filesystem

我在跑步时注意到的另一件事lsblk -a

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
nvme0n1     259:0    0 238,5G  0 disk 
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi
└─nvme0n1p2 259:2    0   238G  0 part /

我对使用 fdisk 与 pared 创建分区之间的区别有了基本的了解;但是,我很好奇:为什么 fdisk 和 pared 之间会得到不同的输出(和分区大小)?

我的系统信息正在运行uname -a

Linux  5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

答案1

parted和的输出fdisk有些不同,但并不矛盾。

  • parted显示以您在其输出 ( kBMBGB) 中看到的单位表示的值。

  • fdisk显示以物理扇区表示的值,在您的情况下,其大小为512 bytes

后面的值是严格的。它们的粒度是一个扇区。您不需要更好的粒度(例如以字节为单位),因为分区不能从扇区中间开始或包含小数扇区。您可以根据需要将值重新计算为字节。

以 kB 或 MB 等单位表示的值不仅四舍五入,而且存在歧义:请参阅1 MB 是否真的可以表示 1000000 字节、1024000 字节或 1048576 字节?由于这种歧义,256GB(from parted) 和238G(from fdisk) 的大小都是“正确的”,只是它们使用不同的单位。

严格来说/dev/nvme0n1p2,它有 499066880 个扇区。乘以扇区大小(512 字节)。结果是 255522242560。除以 10 9并对结果进行四舍五入。你得到256。

现在取 255522242560,除以 1024 3,并对结果进行四舍五入。你得到238。

相关内容