inodeの統計出力とディスク使用量

inodeの統計出力とディスク使用量

私の統計結果は次のとおりです。

[alankoh@SJOAM swap]$ stat myswapfile 
  File: `myswapfile'
  Size: 2147483648  Blocks: 4194312    IO Block: 4096   regular file
Device: fd03h/64771d    Inode: 1179650     Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-08-06 16:22:28.672852866 +0800
Modify: 2015-07-02 07:39:04.781064916 +0800
Change: 2015-07-02 07:39:04.809064917 +0800

割り当てられたブロック(4194312)にinode自体のサイズが含まれていますか?それとも「実際のデータ」の部分を参照していますか?

それでは、上記のinodeのサイズをどのように知ることができますか?

物理ブロックサイズは512 x 4194312割り当てブロック= 2147487744バイトです。

ファイルサイズは2147483648バイトです。

2147487744 - 2147483648 = 4096バイト

4096バイト= IOブロック

上記の計算はIOブロックとどのような関係がありますか?ファイルにスペースが必要なときはいつでも、割り当て単位あたりIOブロックがありますか? 4096 = 8ブロック×512バイト?

ベストアンサー1

「チャンク」の値は何st_blocksですか(struct stat) 測定結果は標準化されていない。

通常、ファイルシステムのコンテンツに使用されるブロック数を計算します。この値にブロックサイズを掛けるとファイルサイズになり、ブロックサイズの最も近い倍数に丸められます。 1つの例外があります。ファイルスパースファイルすると、少ない数のブロックを使用します。これにより、説明できないいくつかのことが残ります。

  • ファイルメタデータによって消費されるスペース:タイムスタンプ、権限などの伝統的なUnixレイアウトでは、このメタデータはinodeに保存されますが、最新のファイルシステムは大きなメタデータなしで大量のメタデータ(アクセス制御リスト、拡張セキュリティプロパティなど)を持つことができます。常に固定サイズのinodeに収まります。
  • 間接ブロックによって消費されるスペース:大容量ファイルの場合、ファイルの内容を含むブロックのリスト自体が多数のブロックを占有する可能性があります。
  • ディレクトリエントリ(またはファイルに複数のハードリンクがある場合はエントリ)が消費するスペース。このスペースはディレクトリ自体のサイズを占めます。

私はinodeサイズを値の一部として報告するファイルシステムを知りませんst_blocks。ほとんどのUnixファイルシステムには、inodeを残りのコンテンツから分離し、inode使用量とブロック使用量を別々に追跡するレイアウトがあります。一部のファイルシステムには間接ブロックが含まれていますが、st_blocks一部ではありません。

ブロックサイズとコンテンツサイズの違いを引き起こす可能性がある他の要因があります。たとえば、圧縮ファイルシステムでは、この関係はファイルの圧縮可能度に依存します。一部のファイルシステムは、複数の小さなファイルまたはより大きなファイルの終わりの間でブロックを共有できます。たとえば、1024バイトブロックには、200バイトファイルの最後の100バイトと1124バイトファイルを含めることができます。st_blocks両方のファイルの値として計算されます。

「IOブロック」の値は「ブロック」の値とは関係ありませんst_blksizestruct statこのst_blksize値は、ファイルを読み書きするときにこのサイズのバッファを使用すると、より良いパフォーマンスが得られることをアプリケーションに暗示します。複雑なパフォーマンス特性を持つ最新のシステムでは、関連性がある場合とない場合があります。

多くのシステムでは、この値の単位は以下から派生st_blocksします。f_bsizestruct statvfs。単位はファイルシステムによって異なります(ext4などの同じタイプのファイルシステムでも1024、2048、または4096を使用できます)。私はこれがLinuxでは常にそうだと思いますが、POSIXはそれを保証しません。 Linuxでは、をf_bsize使用して値を表示できますstat -f

duユーティリティは、ファイルのディスク使用量を計算するときに正しい計算を実行します。このユーティリティは値に適切なブロックサイズを掛けるだけです(したがって、ほとんどのシステムではinodeを含めません)dust_blocks

inodeのサイズを見つける一般的な方法はありません。一部のタイプのファイルシステムでは、ファイルシステム定義で見つけることができる固定サイズのinodeを使用します。一部のファイルシステムタイプは、ユーティリティ(tune2fsext [234]など)を使用してクエリできる特定のファイルシステムに固定サイズを使用します。

おすすめ記事