stat -c%Bとstat -c%oの違いは何ですか? [コピー]

stat -c%Bとstat -c%oの違いは何ですか? [コピー]

学術目的でファイルの内部断片化を表示しようとしています。私が理解しているのは、内部断片化は、ファイルサイズとファイルを含むすべてのブロックサイズとの違いとして現れることです。ブロック数を見つけるのは簡単です。私の問題はチャンクのサイズを見つけることです。 stat -c%oが返した数値ですか? (4096)またはstat -c%B(512)。

2つの違いは何ですか?オンラインで答えを見つけようとしましたが、ますます混乱しています。 blockdev --getbsz /dev/sda2 のような他のコマンドは、私のファイルシステムブロックサイズを4096として表示します。しかし、計算を行った結果、512が私が探している答えに適しているようです(私がテストしているファイルサイズは44933、ブロック数は88です。ここに4096を掛けると360448になります。ファイルサイズの8倍を超えます) 。

答え1

ドキュメントにstat(1)記載されています(Centos7バージョンから入手したもので、stat(1)他のソースは異なる場合があります)。

   %b     number of blocks allocated (see %B)
   %B     the size in bytes of each block reported by %b

   %o     optimal I/O transfer size hint

これは、最初のものはファイルシステムに割り当てられたブロックに関するものであり、2番目のものはそのファイルのI / Oに関連する値であることを示しています。名詞(割り当てられたチャンク)と動詞(該当チャンクの転送)は多少異なります。

関連情報