/sys/block/でのみディスクバイトサイズを計算します。

/sys/block/でのみディスクバイトサイズを計算します。

バイナリを呼び出さずに常に動作するようにブロックデバイスまたはそのパーティションのいずれかのバイトサイズを取得するには、次のように正確です。

/sys/block/sda/sda1/size
or /sys/block/sda/size

次の乗算:

/sys/block/sda/queue/physical_block_size

または論理ブロックサイズまたはハードウェアセクタサイズ

もっと良い方法がありますか?

ベストアンサー1

より多くの研究の最後に、ついに答えを見つけました。

Linuxは、デバイスの実際のブロックサイズに関係なく、常にセクタを512バイトの長さで処理します。

ソースによると: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/types.h?id=v4.4-rc6#n121

私は次のような意見に導きました。 ブロックデバイスサイズの決定

愚かなように見えますが、[size]に512を掛けます。

私は私のプログラムが壊れたくないので、これが今から15年後でもまだ正しい仮定であることを願っています。物理ブロックサイズインターネット検索で見つけたように、時には4096かもしれないので、間違っているようですが、それでも読む価値があるかもしれません。論理ブロックサイズまたはハードウェアセクタサイズいつも512なのに?これについて意見がありますか?

おすすめ記事