ファイルは次の場所にありますか?
/sys/block/<xxx>/size
512バイトのブロック数が絶えず参照されていますか、それともブロック数が変わる特別なケースはありますか?
私は次の理由で疑問に思います。
thinkpad :: /sys/block/sdf % cat queue/physical_block_size
4096
thinkpad :: /sys/block/sdf % cat queue/logical_block_size
4096
thinkpad :: /sys/block/sdf % cat size
15408640
15408640 * 512 bytes / 1000000000 = ~8GB
->私のデバイスのサイズは正確ですが、デバイスは4Kブロックデバイスです。
答え1
これsize
入り口返品nr_sects
大地ブロックデバイス構造。伝統的に、Unixディスクサイズの文脈では、「セクタ」または「ブロック」は、基本ハードウェアメーカーが「セクタ」または「ブロック」と呼んでいるかにかかわらず、512バイトを意味します。権威ある文書が見つかりませんが、Linuxのソースコード(例:1)2nr_sects
)フィールドは実際には512バイト単位で表されているようです。
他の方法で処理できます。報告単位に関する文書がないため、定数単位でなければなりません。それ以外の場合、アプリケーションは値の意味を知りません。 (queue
サブディレクトリは必ずしも存在するわけではなく、ブロックデバイスによって異なります。)