web-dev-qa-db-ja.com

FreeBSD 6 ufsのディレクトリ内の最大合計ファイル数は?

FreeBSD 6の1つのサブディレクトリに保存されるファイルの総数に上限はありますか?

ファイルシステムはufsです

3
Ian

これは2008年11月のfreebsd-questionsリストで議論されました。 Erik Trulsson から引用するには:

ディスク上の各iノードには、そのiノードを指すハードリンクの数を示すフィールドが含まれています。このフィールドは(符号付き)16ビット値です。つまり、許可されるハードリンクの最大数は32767です。作成される各サブディレクトリには、その親へのハードリンク( '..')が含まれるため、単一ディレクトリへのサブディレクトリの数は以下に制限されます。 32767より。

通常のファイルには親ディレクトリへのハードリンクが含まれていないため、これによって1つのディレクトリに含めることができるファイルの数が制限されることはありませんが、1つのディレクトリに含めることができるファイルとディレクトリの総数にはもちろん制限があります。ファイルシステムが最初に作成されたときに作成されたiノードの数に基づくファイルシステム。

完全なメッセージスレッドの開始

これらは理論上の限界です。上で説明したように、制限に達するかなり前にパフォーマンスの問題が発生し始めます。

3
Zanchey

合計iノードは、ディレクトリに配置できるファイルの合計の制限です。合計iノードは、ハードドライブをフォーマットするときに作成されます。小さいサイズのセグメントを使用すると、より多くのiノードを作成できます。詳細については、mannewfsを参照してください。

Vfs.ufs.dirhash_maxmemは、ディレクトリ内のディレクトリ名を保持するために使用されるメモリ用です。これはパフォーマンスにのみ影響し、制限はありません。より多くのメモリがある場合は、それを大きくします。それ以外の場合は、気にしないでください。

1
fulanpeng

私はfreebsd6.xで、多数のファイル(50,000以上)を含むいくつかのことを行いましたが、特定の制限を覚えていません。 7.2システムを簡単にチェックすると、制限が100,000をはるかに超えていることがわかります。プロセスは現在も実行中です。失敗した場合は、7.2のハード制限をお知らせします。これは6.xと同様である可能性があります。

そうは言っても、新しいファイル/ディレクトリを作成すると、約30,000を超えるディレクトリエントリのパフォーマンスが大幅に低下します。その時点で、名前だけでなくHashOfName/nameという名前のファイルの作成が開始されるため、検索が簡単になります。

1
chris

その数は、関係するファイルシステムのタイプによっても異なると思います。

1
retracile

あなたの質問はすでに回答されているので、パフォーマンスのヒントはほとんどありません。小さなファイルがたくさんある場合は、vfs.ufs.dirhash_maxmemを増やす必要があります。デフォルトの2MBは、数千のファイルには小さすぎます。

/etc/sysctl.confにそのような行があります

vfs.ufs.dirhash_maxmem=67108864

ここ( FSの改善@ BSDCON )とここ( Wiki )でdirhashについて読むことができます。

1
SaveTheRbtz