web-dev-qa-db-ja.com

ext4パーティションを拡張すると、使用可能なiノードの数が増えますか?

小さなファイルシステムを作成し、必要なときにそれを拡張すると、iノードの数は比例して増加しますか?

オーバーレイストレージドライバーでDockerを使用したい。これは非常にiノードに飢えている可能性があります ハードリンクを使用して下位レイヤーをマージするため。 (元のaufsドライバーはユニオンマウントを効果的にスタックしました。これは追加のiノードを必要としませんでしたが、代わりに実行時に追加のディレクトリルックアップを引き起こしました)。編集:ハードリンク自体は余分なiノードを使用しません。問題は作成する必要のある余分なディレクトリであるとしか思えません。

(閉じた質問 ここ 。答えは間違っていると思います。しかし、質問は閉じているので、新しい質問を作成する必要があると書かれています)。

3
sourcejedi

はい。 man mkfs.ext4を参照してください:

-i bytes-per-inode

バイト/ iノード比を指定します。 mke2fsは、ディスク上のスペースのiノードあたりのバイト数ごとにiノードを作成します。 iノードあたりのバイト数の比率が大きいほど、作成されるiノードは少なくなります。この値は通常、ファイルシステムのブロックサイズより小さくするべきではありません。その場合、これまでに使用できるよりも多くのiノードが作成されるためです。ファイルシステムの作成後にこの比率を変更することはできないことに注意してください。したがって、このパラメーターの正しい値を慎重に決定してください。ファイルシステムのサイズを変更すると、この比率を維持するためにiノードの数が変更されることに注意してください。

これを実験的に検証し、1Gから10Gにサイズ変更し、tune2fs /dev/X | grep Inodeを確認しました。 iノードの数は64Kから約640Kになりました。

これは、「ブロックグループ」を使用するUnixファイルシステムの自然な結果だと思います。パーティションはブロックグループに分割され、各グループには独自のiノードテーブルがあります。ファイルシステムを拡張すると、新しいブロックグループが追加されます。

4
sourcejedi