「inodeサイズ」と「inodeあたりのバイト数」の違いは何ですか?

「inodeサイズ」と「inodeあたりのバイト数」の違いは何ですか?

次の情報は、マニュアルページから取得したものです。 inodeあたりのバイト数とinodeサイズの違いを知りたいです。

-i bytes-per-inode

バイト/アノード比を指定します。 mke2fs は、ディスク上の各 inode バイトスペースごとに inode を生成します。 inodeあたりのバイト比率が高いほど、生成されるinodeの数が減ります。この値は通常、ファイルシステムのブロックサイズより小さくしてはいけません。そうでなければ、あまりにも多くのinodeが生成されます。ファイルシステムが作成された後は、ファイルシステムのinode数を拡張できないため、このパラメータの正しい値を決定するときは注意が必要です。

-I inode-size

各inodeのサイズをバイト単位で指定します。 mke2fsはデフォルトで256バイトのinodeを生成します。 2.6.10以降のカーネルと一部の以前のベンダーカーネルでは、128バイトを超えるinodeを使用して拡張属性を保存してパフォーマンスを向上させることができます。 inode-size 値は 128 以上の 2 の累乗でなければなりません。 inode サイズが大きいほど、inode テーブルはより多くのスペースを消費するため、ファイルシステムで使用可能なスペースが減り、パフォーマンスに悪影響を及ぼします。大きな inode に格納されている拡張属性は、以前のカーネルでは表示できず、これらのファイルシステムは 2.4 カーネルのインストールでは機能しません。ファイルシステムが作成された後は、この値を変更することはできません。

ベストアンサー1

さて、まず、inodeとは何ですか? Unixの世界では、inodeはファイルエントリです。ディレクトリのファイル名はインデックスノード(リンク!)のラベルにすぎません。 inodeは複数の場所で参照できます(ハードリンク!)。

-i inodeあたりのバイト数(inode_ratioとも呼ばれる)

不明な理由から、このパラメータは時々次のように記録されます。inodeごとのバイト時々アノード比。文書によると、これはバイト/Inode率。ほとんどの人は、次のいずれかを説明するとよりよく理解できます。

  • Xバイトの記憶領域ごとに1つのinodeがあります(ここでXはinodeあたりのバイト数)。
  • 受け入れ可能な最小平均ファイルサイズ。

公式(からインポートmke2fs ソースコード):

inode_count = (blocks_count * blocksize) / inode_ratio

あるいは、単純化することもできます(「パーティションサイズ」がほぼ同じであると仮定して割り当てを確認blocks_count * blocksizeしませんでした)。

inode_count = (partition_size_in_bytes) / inode_ratio

注 1: FS の作成時に固定数の inode を提供しても ( mkfs -N ...) ファイルシステムのサイズを拡張すると、より多くの inode に対応できるように、その値が比率に変換されます。

注2:この比率を調整する場合は、使用したいよりもはるかに多くのinodeを割り当てる必要があります。ファイルシステムを再フォーマットしたくないでしょう。

-I インデックスノードサイズ

これは、ファイルシステムが持つことができる各inodeに対して、ファイルシステムが割り当て/予約するバイト数です。このスペースは、inode属性を保存するために使用されます(読み取りインデックスノードの紹介)。 Ext3では、デフォルトのサイズは128です。 Ext4では、デフォルトのサイズは256です(extra_isizeインライン拡張プロパティストア用のスペースを保存して提供するために使用されます)。読むLinux:inodeのサイズを変更するのはなぜですか?

注:Xバイトのdisjkspaceは、使用可能かどうかに関係なく、割り当てられた各inodeに割り当てられます。ここで、Xはinode-sizeです。

おすすめ記事