注:私は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/nvme0n1p2
499066880個のセクターがあります。セクタサイズ(512バイト)を掛けます。結果は 255522242560 です。 10 9で割って結果を丸めます。 256を取得します。
これで、255522242560を1024 3で割って結果を丸めます。 238を取得します。