web-dev-qa-db-ja.com

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ブロックデバイスです。

3
Gala

size entry は、ブロックデバイス構造の nr_sectsフィールド を返します。従来、Unixディスクサイズのコンテキストでは、基盤となるハードウェアの製造元が「セクター」または「ブロック」と呼んでいるものに関係なく、「セクター」または「ブロック」は512バイトを意味します。信頼できるドキュメントが見つかりませんが、Linuxのソースコード(例: 12 )を見ると、nr_sectsフィールドは実際に単位で表されているようです。 512バイトの。

別の方法でアプローチすることもできます。単位を報告するファイルがないため、定数単位である必要があります。そうしないと、アプリケーションは値の意味を認識できません。 (queueサブディレクトリは必ずしも存在する必要はなく、ブロックデバイスによって異なります。)