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출력( kB, MB, ) GB에 표시되는 단위로 값을 표시합니다.

  • fdisk귀하의 경우 크기와 같이 물리적 섹터로 표현된 값을 표시합니다 512 bytes.

다음 값은엄격한. 그들의 세분성은 부문입니다. 파티션은 섹터 중간에서 시작하거나 소수 섹터를 포함할 수 없기 때문에 더 세밀한 단위(예: 바이트)가 필요하지 않습니다. 필요한 경우 값을 바이트로 다시 계산할 수 있습니다.

kB나 MB 등의 단위로 표현된 값은 반올림될 뿐만 아니라 모호하기도 합니다.1MB가 실제로 1,000,000바이트, 1,024,000바이트 또는 1,048,576바이트를 나타낼 수 있습니까?이러한 모호성으로 인해 256GB(from parted) 및 238G(from fdisk) 모두 "올바른" 크기를 가지며, 단지 서로 다른 단위를 사용한다는 것입니다.

엄밀히 말하면 /dev/nvme0n1p2499066880개의 섹터가 있습니다. 섹터 크기(512바이트)를 곱합니다. 결과는 255522242560입니다. 10 9 로 나누고 결과를 반올림합니다. 256을 얻습니다.

이제 255522242560을 1024 3 으로 나누고 결과를 반올림합니다. 238을 얻습니다.

관련 정보