sysfs ブロックサイズの数

sysfs ブロックサイズの数

ファイルは次の場所にありますか?

/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サブディレクトリは必ずしも存在するわけではなく、ブロックデバイスによって異なります。)

関連情報