SDDC = 28GB

SDDC = 28GB

私は答えたこの問題仮説ファイル*.imgのセクタサイズはです512

正しいセクタサイズを見つけるためにデバイスまたはデバイスイメージを照会するにはどうすればよいですか?

答え1

fdisk -l(パラメータの低いL)は、セクタサイズなどの情報も表示します。

$ sudo fdisk -l

Disk /dev/sda: 150.3 GB, 150323855360 bytes
255 heads, 63 sectors/track, 18275 cylinders, total 293601280 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
   /dev/sda1   *          63      208844      104391   83  Linux
   /dev/sda2          208845   209712509   104751832+  83  Linux

これは、セクタサイズが512バイトであることを示します。

編集:最新バージョンのfdiskfdisk(パッケージutil-linux 2.20.1)には、論理セクタと物理セクタのサイズも表示されます。たとえば、「WDC WD10EFRX 1TB Drive」の関連出力は次のとおりです。

Disk /dev/sdn: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

答え2

~によると待機中の sysfs ファイルのドキュメント:

# cat /sys/block/sda/queue/hw_sector_size
512

答え3

コマンドを使用しfile(1)て自分で数学を実行できます。この方法は、FATシステムイメージのみがある場合にも機能します。

たとえば、

$ sudo file -s /dev/sda5 | tr , '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 sectors/cluster 64
 reserved sectors 64
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 536870912 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 65536
 serial number 0x9f981691
 unlabeled

パーティションにはクラスタごとに64個のセクタがあります。セクタあたりのバイト数はデフォルトの512なので、クラスタサイズは32KBです。

セクタサイズは512より大きくなる可能性があります(FAT仕様ではこれを4096に制限しますが、より大きく指定できます)。この場合、出力に追加のバイト/セクタフィールドが表示されます。

$ sudo mkfs.fat -S 4096 -s 16 /dev/sda5
mkfs.fat 4.1 (2017-01-24)

$ sudo file -s /dev/sda5 | tr , '\n'
/dev/sda5: DOS/MBR boot sector
 code offset 0x58+2
 OEM-ID "mkfs.fat"
 Bytes/sector 4096
 sectors/cluster 16
 Media descriptor 0xf8
 sectors/track 63
 heads 255
 hidden sectors 147632128
 sectors 67108864 (volumes > 32 MB)
 FAT (32 bit)
 sectors/FAT 4096
 serial number 0xb059d826
 label: unlabeled

再計算すると、4096バイト×16セクタ=クラスタあたり64KiBです。

答え4

この試み

disk_sector_num=$(cat /sys/block/sdc/size)
disk_size_gb=$(expr $disk_sector_num / 2097152)
echo "sdc = ${disk_size_gb} GB"

SDDC = 28GB

関連情報