65,000ディレクトリを超える新しいディレクトリの作成に失敗しているUbuntu14.04サーバーがあります。 tune2fs -l
を実行しましたが、dir_nlink
フラグが設定されていることがわかります。これを可能にするために他に何をチェックできるか知っている人はいますか?このサーバー構成の他の多くのクローンがあり、それらはすべて65,000マークを超えており、期待どおりに機能しています。 tune2fs -l
の出力を比較しましたが、同じように見えます。私はまだ数百万の無料のiノードとブロックを持っています。ファイルシステムをアンマウントして再マウントしましたが、何も変更されていません。
線形ディレクトリには65000リンクの制限があります。つまり、その周りに多くのサブディレクトリが可能です。ハッシュベースのディレクトリには制限がありません。
新しいファイルシステムを作成する場合、デフォルトはハッシュディレクトリです。ディレクトリがまだ線形である場合は、古いext3パーティションをアップグレードしたことが原因である可能性があります。 (Ext3は後でハッシュベースのディレクトリ機能を取得しました。)
$ Sudo debugfs /dev/partition
$ htree /
htree: Not a hash-indexed directory
dir_index
(ハッシュベースのdir)およびdir_nlink
(無制限のリンク)機能を有効にします。
Sudo tune2fs -O dir_index,dir_nlink /dev/partition
新しく作成されたすべてのディレクトリは、無制限のサブディレクトリを保持できるようになりました。
既存のディレクトリを変換する場合は、次の手順を実行します。
Fsckにディレクトリインデックスを再構築するように指示します。
Sudo e2fsck -f -D /dev/partition
-f
は、ディスクがクリーンな状態であっても、fsckにディスクのチェックを強制します
-D
は、e2fsckにインデックスを再構築するように指示します。
このオプションにより、e2fsckは、ファイルシステムがディレクトリインデックスをサポートしている場合はインデックスを再作成するか、ディレクトリを小さいディレクトリまたは従来の線形ディレクトリを使用するファイルシステム用に並べ替えて圧縮することにより、すべてのディレクトリを最適化しようとします。