web-dev-qa-db-ja.com

EXT4「デバイスにスペースが残っていません(28)」が正しくありません

私はiノードの使用、マウントの問題などについて他の質問/回答をしましたが、それらの質問はどれも当てはまらないようです...

df -h

/ dev/sdd1 931G 100G 785G 12%/ media/teradisk

df -ih

/ dev/sdd1 59M 12M 47M 21%/ media/teradisk

基本的に、私はEXT4フォーマットのドライブのサイズが1TBであり、約1200万(12201106)個のファイルを1つのディレクトリに書き込んでいます。 EXT4のディレクトリあたりのファイル数の制限に関するドキュメントは見つかりませんが、ファイルシステムはスペースが残っていないと報告しています。

奇妙なことに、ドライブとターゲットフォルダーに新しいファイルを作成することはできますが、大きなcp/rsyncを実行すると、mkstemprenameの呼び出しでデバイスに空き容量がないことが報告されます。

rsync:mkstemp "/media/teradisk/files/f.xml.No79k5" failed:No space left on device(28)

rsync:「/media/teradisk/files/f.xml.No79k5」の名前を変更->「files/f.xml」:デバイスにスペースが残っていません(28)

この多くのファイルを1つのディレクトリに保存することは、多くの理由で推奨されないことはわかっていますが、私が手助けできない限り、それらを分割したくありません。

Tmpfs、デバイス、その他すべてのiノードとスペースの使用状況は問題ありません。原因について何か考えはありますか?

6
Aiden Bell

XFS filesystem は、現在実行しようとしていることをサポートする(長期的な)ソリューションです。大きなファイル数のディレクトリはXFSの問題ではありません。もちろん、これをアプリケーションレベルで修正することも役立ちます...

2
ewwhite

ディレクトリサイズの制限に達しているようです。ディレクトリ自体は、その中のすべてのファイルの名前(+ iノード番号とおそらく他のメタデータ)を含むある種の特別なファイルです。また、2Gを超えることはできません。

とにかく、1つのディレクトリに数千を超えるファイルを含めることはお勧めできません。ファイル名による検索は非常に遅くなり、ls、rmなどの標準的なツールでは多くの問題が発生します。

更新:

あはは!

http://old.nabble.com/re:The-maximum-number-of-files-under-a-folder-td16033098.html

2008年3月13日13:23 -0400に、Theodore Ts'oは次のように書いています。

ディレクトリ自体が2GBを超えることはできないという事実と、ファイルシステム全体が使用できるiノードの数を除いて、フォルダ内のファイル数に制限はありません。もちろん、ディレクトリのインデックス作成を有効にしていない場合は、ディレクトリ検索のパフォーマンスが気に入らないかもしれませんが、それは別の話です。

また、現在のext3 htreeコードには、2レベルのみという制限があります。 2GBの制限に加えて、ファイル名の長さにもよりますが、約1500万のファイルで問題が発生します。

5
rvs

あなたにとってext4は絶対に必要ですか?最近のXFSは、このような状況を問題なく処理する必要があります。

1

私はこの問題を抱えていました。私の解決策は:

mkfs.ext4 -i 1024 -b 1024 /dev/blah

1
Dan Brough