ディスクサイズは/sys/block/sda/size
常に正確ですが、/sys/block/sda/sda2/size
パーティションタイプが拡張、ブートなどの場合、パーティションサイズが正しくないため、MBRを読み取って正しいパーティションサイズを取得します。
/sys/block/sd*/sd*/size
ファイルの値はどういう意味ですか? MBRを読み取るか、コマンドを使用する以外にパーティションのサイズを取得する正しい方法は何ですか?
例:
nyc@nyc:~/Documents$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 1 TiB, 1099511627776 bytes, 2147483648 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: dos
Disk identifier: 0x13ce1e72
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 1881196543 1881194496 897G 83 Linux
/dev/sdb2 1881196544 2147483647 266287104 127G 5 Extended
/dev/sdb5 1881198592 1983643647 102445056 48.9G 83 Linux
/dev/sdb6 1983645696 2076295167 92649472 44.2G 83 Linux
/dev/sdb7 2090141696 2139455487 49313792 23.5G 83 Linux
/dev/sdb8 2139457536 2147483647 8026112 3.8G 7 HPFS/NTFS/exFAT
nyc@nyc:~/Documents$ cat /sys/block/sdb/size
2147483648
nyc@nyc:~/Documents$ cat /sys/block/sdb/sdb2/size
2
答え1
パーティションが論理パーティションを含む拡張パーティションであるため、2つを取得します。ここで、2はセクタ数を意味する512 byte
か、ブロックが1つあると言うことができます1K
。次のコマンドを使用してlsblk
出力を取得できます。
sdb2 8:3 0 1K 0 part
これは拡張パーティションであることを示します。