注意:我是一名 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
显示以您在其输出 (kB
、MB
、GB
) 中看到的单位表示的值。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。