ディレクトリごとのファイル数


19

約100000個の小さなファイルのディレクトリがあります(各ファイルは1〜3行で、各ファイルはテキストファイルです)。ディレクトリのサイズはそれほど大きくありません(2GB未満)。このデータは、専門的に管理されたNFSサーバーにあります。サーバーはLinuxを実行します。ファイルシステムはext3だと思いますが、確かにわかりません。また、サーバーへのルートアクセス権がありません。

これらのファイルは、私が制御できない大規模な科学実験の出力です。ただし、結果を分析する必要があります。

このディレクトリでのI / O操作/処理は非常に遅くなります。ファイルを開く(Pythonでfopen)、開いているファイルから読み取る、ファイルを閉じる、すべて非常に遅いです。bash ls、duなどでは機能しません。

質問は:

処理、fopen、読み取りなどを実行するのに実用的な方法で、Linuxのディレクトリ内のファイルの最大数はいくつですか?答えは、fsタイプ、カーネルバージョン、サーバーバージョン、ハードウェアなど、多くのものに依存することを理解しています。可能な場合は、経験則が必要です。


6
あなたの直接の質問はGilesによってよく答えられましたが、全体として、Linuxファイルシステムは、ごく小さなデータのキーとしてファイル名を使用している場合、データベースの代わりになりません。生成を制御することはできませんが、データを分析しやすい形式に後処理できます。そうしないと、すべてのステップでファイルシステムのオーバーヘッドが発生します。オーバーヘッドは削減できますが、排除する方が幸福になる場合があります。
msw

回答:


22

あなたが推測するように、それは多くのことに依存します、主にファイルシステムのタイプとオプション、そしてある程度カーネルのバージョン。ext2 / ext3 / ext4シリーズでは、dir_indexオプションが表示されたとき(ext3の最初のリリース後)に大幅な改善が行われました:線形リスト(線形時間アクセス)ではなく、検索ツリー(対数時間アクセス)としてディレクトリが保存されます)。これはNFSで見ることができるものではありませんが、管理者と連絡を取れば、実行するように依頼することができますtune2fs -l /dev/something |grep features(おそらく、アップグレードするように説得してもよいでしょうか?)。重要なのはファイルの数だけであり、サイズではありません。

でもdir_index、100000は大きく感じます。理想的には、ファイルを作成するプログラムの作成者にサブディレクトリのレベルを追加してもらいます。パフォーマンスを低下させないために、ext2またはext3なしdir_index、および20000ありdir_indexまたはreiserfsの場合、ディレクトリごとに約1000ファイルの制限を推奨します。ファイルの作成方法を制御できない場合は、他の操作を行う前にそれらを別のディレクトリに移動してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.