web-dev-qa-db-ja.com

Linuxファイルシステムのiノード/ブロックサイズの適切な量を計算する方法

Ext3に変換する古いライザーファイルシステムがあります。私が抱えている問題は、このパーティションの適切なブロックサイズとiノードサイズを決定することです。

パーティションのサイズは44GBで、1 kb〜10 kbのサイズの3,000,000以上のファイルを保持する必要があります。どのようにして、iノードとブロックサイズの最適な比率を把握できますか?

以下は私が試したもので、問題ないように見えますが、ファイルのコピーが非常に遅くなります。

mkfs.ext3 \
 -t ext3 \
 -c \
 -c \
 -b 1024 \
 -i 4096 \
 -I 128 \
 -v \
 -j \
 -O sparse_super,filetype,has_journal\
  /dev/sdb1

ありがとう。

5
user36559

そのような限られた質問に対する「正しい」答えはありません。デスクトップまたはラップトップをセットアップする場合は、次のようにします。

mkfs.ext3 /dev/sda1

プログラムは、経験の浅い人間よりも優れた方法を選択できます。巨大なWebサイトを保存する場合、小さな個々のファイルが大量に存在する可能性があるため、extには最大25%のiノードが必要になる場合があります。

しかし、実際にはmkfsプログラムに「最大25%のiノード」としか伝えていません。ほとんどのファイルシステム作成設定は、RAIDストライピングなど、ファイルシステムのジオメトリを調整する必要がある特殊なアプリケーションで使用されます。そうしないと、非常に遅くなります。

私は人々が彼らのペットのファイルシステム設定を持っていることを知っています。 40GBのデスクトップまたはラップトップパーティションでデフォルト値から逸脱することの有用性を実証できる人はまだ見つかりません。

そしてextはすべてに最適なファイルシステムではありません!特定のパーティションが多くの小さな個別のファイルを保持するため、ラップトップで3つの異なるパーティション形式タイプを使用します。/homeパーティションのように、はるかに少数の大きなファイル(ext3システムに適しています)を保持するものもあります。

/usrは500,000個の個別のファイルを持つことができ、extは扱いにくいですが、reiserfsは飛んでしまいます。もう1つはaclsです。使用する場合は、aclsを使用することをmkfs.ext3に通知する必要があります。 aclsは権限の微調整であり、通常、シングルユーザーシステムでは重要ではありません。ただし、20人の通常のユーザーのグループがあり、それらの一部に異なるアクセス制御が必要な場合は、aclsを使用する必要があります。

私は個人的にはxfsが一般的なファイルシステムとして好きですが、SELinuxではそのままでは機能しません。しかし、それは最も洗練された効率的なファイルシステムです。 HPCのいくつかのブランドで使用されています。よろしければグーグルで検索できます。 extパーティションの8%を無駄に浪費します。それはとんでもないです。

しかしext4の方が優れています。私はあなたのためにコマンドラインを吐き出すつもりはありません。パーティションの使用を決定し、それに応じてファイルシステムを設計する必要があります。 extは信頼できますが、戦車も信頼できます。それはあなたが町の周りを運転したいという意味ではありません。

これが少しお役に立てば幸いです。

2
fragileswan

ファイルごとにiノードが必要です。iノードのサイズによって、別のiノードとファイルを処理するのに十分なブロックが必要になる前に到達できる直接ブロックの数が決まります。

したがって、あなたの場合、iノードの最小数は3.000.000+になります。デフォルト値を使用すると、12個の直接ブロックを取得できます。したがって、1kBのブロックサイズで、必要なものを手に入れることができます。

明らかに、iノードサイズを小さくし、ブロックサイズを大きくして、iノードの数を増やすことができます。これにより、使用可能なスペースは少なくなりますが、同じファイルシステム内のファイルは多くなります。

1
jneves