inodeあたりの最大バイトレートが67108864の理由は何ですか?なぜ最大値があるのですか?

inodeあたりの最大バイトレートが67108864の理由は何ですか?なぜ最大値があるのですか?

純粋な大容量ビデオファイルでディスクをフォーマットするときに使用可能なディスク容量を最大にするために、inode値あたりの適切なバイト数を計算しました。

しかし、私を迎えたのは次のようでした。

mkfs.ext4: invalid inode ratio [RATIO] (min 1024/max 67108864)

私は最小値が理論的に使用できるものから派生したと仮定します。使用できるよりも多くのinodeを持つ必要はありません。

しかし最大値はどこから来るか。mkfs生成されたファイルシステムにどのファイルサイズを入れるのかわかりません。したがって、そうでない場合は、{disk size} - {1 inode size}最大ファイルサイズが67 MBであることはもちろん、なぜ最大ファイルサイズがあるのか​​はまったくわかりません。

ベストアンサー1

ファイルシステムの構築方法によるものです。少し混乱しています。デフォルトでは、レートを1/64 MBに下げることはできません。

~からkernel.orgのExt4ディスクレイアウトドキュメント、ファイルシステムの内部構造がファイルシステムのサイズを制御するブロックサイズ(デフォルトでは4kB)に関連付けられていることがわかります。ブロックグループおよびブロックグループのinodeの数。ブロックグループグループ内のブロックのブロックサイズと1つ以上のinodeブロックを含むビットマップ。

ビットマップのため、最大ブロックグループサイズが8 blocks * block size in bytesあるため、4kBブロックを持つFSでは、ブロックグループサイズは32768ブロックまたは128MBです。 inodeは少なくとも1つのブロックを占めるので、4kBブロックの場合、(4096 B/block) / (256 B/inode) = 16 inodes/block 128MBあたり少なくとも16個のinodeまたは8MBあたり1個のinodeを取得します。

256B / inodeの場合、これは256B / 8MB、つまり32kBあたり1バイトまたはフルサイズの約0,003%です。

inodeの数を減らすことは役に立ちません。部分的に埋められた inode ブロックだけが得られます。また、割り当てがブロック単位で行われるため、inodeのサイズは重要ではありません。ブロックグループサイズはメタデータの実際の制限です。


ブロックサイズを増やすと便利です。理論的には、最大ブロックグループサイズはブロックサイズの2乗に応じて増加します(ただし、64kブロック/グループよりわずかに小さいものに制限されるようです)。ただし、システムページサイズより大きいブロックサイズは使用できないため、x86では4kBブロックしか使用できません。


しかしbigalloc特徴これがまさにあなたが望むものです:

大容量ファイルで構成されているほとんどのファイルシステムでは、断片化とメタデータのオーバーヘッドを減らすために、複数のブロック単位でディスクブロックを割り当てることができます。 bigalloc関数はまさにこの機能を提供します。

管理者は、mkfsの時点でブロッククラスタサイズ(スーパーブロックのs_log_cluster_sizeフィールドに保存されます)を設定できます。その時点から、ブロックビットマップは個々のブロックではなくクラスタを追跡します。つまり、ブロックグループのサイズは128MiBではなく数GBですが、ディレクトリの場合でも最小割り当て単位はブロックではなくクラスタになります。

を使用してこの機能を有効にし、を使用してmkfs.ext4 -Obigallocクラスタサイズを設定でき-C<bytes>ますmkfsが、次の点に注意してください。

Warning: the bigalloc feature is still under development
See https://ext4.wiki.kernel.org/index.php/Bigalloc for more information

割り当て遅延に関する問題がこのページに記載されています。ext4マニュアルページと言葉「リスクが大きい」Bigalloc Wikiページにも表示されます。


これは、このオプションで設定されている64 MB / inode制限とは無関係です-i。インターフェイスレベルで設定された任意の制限のようです。このオプションを使用して inode の数を-N直接設定することもでき、使用時には確認されません。上限がありますに基づいてこれ最高実際に選択した構造制限のブロックサイズではなく、ファイルシステムのブロックサイズです。

64kブロック/グループ制限のため、64MB/inodeの比率がなければbigalloc、できるだけ少ないinodeを得ることはできませんが、これを使うとそれよりはるかにbigalloc低いinode数を設定できます。

おすすめ記事