"-l"オプションを持つfdisk - デバイスに関する情報をどのように取得しますか?

私はソフトウェア定義デバイスを試していますが、ブロックサイズ= 512バイトで動作するように強制しようとしていますが、Linuxはそれを望んでいないようです。

デバイスに最小コマンドチャンク数を報告するよう強制しましたSCSI INQUIRY

hekto@ubuntu3:~$ sudo sg_inq -p 0xb0 /dev/sde
VPD INQUIRY: Block limits page (SBC)
  Maximum compare and write length: 255 blocks
  Optimal transfer length granularity: 1 blocks
  Maximum transfer length: 1 blocks
  Optimal transfer length: 1 blocks
  Maximum prefetch transfer length: 0 blocks
  Maximum unmap LBA count: 0
  Maximum unmap block descriptor count: 0
  Optimal unmap granularity: 0
  Unmap granularity alignment valid: 0
  Unmap granularity alignment: 0
  Maximum write same length: 0x0 blocks
  Maximum atomic transfer length: 0
  Atomic alignment: 0
  Atomic transfer length granularity: 0

ただし、fdisk -lまだ物理ブロックサイズ= 4096を報告します。

hekto@ubuntu3:~$ sudo fdisk -l /dev/sde

Disk /dev/sde: 5 MB, 5120000 bytes
1 heads, 10 sectors/track, 1000 cylinders, total 10000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes  <== see here
I/O size (minimum/optimal): 4096 bytes / 524288 bytes.  <== and here  

この数字(上記参照)はどこから来ましたか?

オペレーティングシステム:Ubuntu 14.04.5 LTS、カーネル3.19.0-78 - 一般

(MacBookのVMware Fusion 8.5.8で仮想マシンとして動作)

ベストアンサー1

使用することをお勧めしますトラック(1)理解するシステムコール(2)コマンドで完了しますfdisk。つまり、rootとして実行します。

  strace fdisk -l /dev/sde

ioctlあなたはすでに次のようなものを使用していることがわかりましたBLKIOMINBLKPBSZGET

カーネルがこれらのパラメータをどのように計算するのかわかりません。標準偏差(4)

おすすめ記事