web-dev-qa-db-ja.com

Linux-助けて、私はiノードが不足しています!

小さなファイルがたくさんあるファイルシステムがあります。現在、iノードの約80%が使用されています(df -i)、ただしディスク領域の60%しか使用されません。 iノードの数を「増やす」にはどうすればよいですか?単なるディスク領域の場合は、ディスクのサイズを増やすだけでよいことがわかります(このディスクはLVM上にあります)。ディスクのサイズを大きくすると、iノードの数が増えますか?

もしそれが役に立てば、私はこのディスクが置かれているファイルシステムを拡大するつもりです。

16
Rory

男mke2fs

Iノード数の-Nが表示されます

したがって、新しいパーティションをフォーマットするときにそれを指定できます。今はあまり役に立ちませんね?

ファイルシステムを調整するtune2fsには、iノードを追加する方法がないようです。

しかし、おそらくext3または4がこれを実行し、他の誰かが知っています...?

だから今あなたはオプションがあります:バックアップ、パーティションの再フォーマット、復元。

14
Paul

元の質問に答えるために、おそらく質問者に遅れています-はい、LVM2でEXT2/3を増やすと、iノードの制限も増えます。

ちょうど65kのiノード制限を持つ1Gサイズのパーティションがありました。後

lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var

... iノードの制限は128kになりました。

15
Aleš Krajník

小さなファイルがディスクスペースを消費することがわかっていた場合は、FSを動的なiノード割り当てと共に使用する必要があります。ReiserFSや新しいモダンFS( XFS、JFS)の代わりにEXT2/3/4(私はあなたが使用していると思いますが、そうは言っていません)。

ファイルシステムの移行は、おそらくあなたの状況で良い選択です。

12
user29686

一時停止として、新しいファイルシステムをマウントし、そこにfs階層の一部をcp/rm/ln-sします。これで、いくつかの予備のiノードがあります。 2つのfses間でファイルをmvすることはできないので、それを行う必要のあるものを壊すことに注意してください。ただし、多くのアプリでは、これは透過的です。

次に、Paulのアドバイスに従って新しいfsを作成し、それに移行します。

3
Charles Stewart

Ext4でも同じ問題が発生します。小さなパーティションを作成して大量の小さなファイルを作成すると、iノードが不足し、flex_bg使用できない機能tune2fs iノードを増やす。

個人的には、どのバージョンのrieserfsよりもext4を使用します。フォーマットするときは、次のようにします。

mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo

この方法でフォーマットすると、512Mのブートパーティションに33160のiノードが作成されます。

私はこれを何年もreiserfsを使用してきた人物と言いますが、カーネルサポートはext *ほど良くなく、ファイルシステムは時間の経過とともに断片化され、遅くなります。

2
Suicidal