web-dev-qa-db-ja.com

CentOS6-iノードがいっぱいです-ファイルを含むフォルダを削除できません

私は40GBのスペースを持つラックスペースにCentOS6サーバーを持っています。サーバーが「デバイスに空き容量がありません」というエラーでクラッシュし続けましたが、50%以上の空き容量があります。

Df-iを実行すると、次のように出力されます。

/dev/xvda1           2490368 2490351      17  100% /

私は問題をポストドロップまでたどったと思います。 postfixとpostdropを無効にする前は、iノードは解放するとすぐにいっぱいになりました。

私が見ることができることから、/ var/pool/postfix/maildropに何千ものファイルが作成されています。フォルダ自体は67MBです。フォルダを「ls」できません。長い間ハングする「rm-rfmaildrop /」を試しました。

このフォルダを削除するにはどうすればよいですか。サーバーでメールを使用していないので、postfixとpostdropとsendmailを無効にしました。

drwx-wx---. 2 postfix postdrop  67M Dec 18 18:25 maildrop 

更新したかっただけです:

ls -1 | xargs -I{} rm {}

上記のコマンドで問題が解決しました

オンとオフに48時間かかりました。/var/pool/postfix/maildropフォルダーにはほぼ2,000,000個のファイルがあるようです。

2
gteh

ファイルでいっぱいのディレクトリがある場合、通常はrmですべてのファイルを削除することはできません

試してみてください:

find /path/to/directory -type f -exec rm {} \;

または、次のコマンドを試してください。

ls -1 /path/to/directory | xargs -I{} rm {}

つまり、コマンドを2つに分割する必要があります。ファイルを処理する部分と、ファイルを削除する部分です。

1つのディレクトリに無数のファイルがある場合、rmなどのコマンドを使用してファイルを削除することはできません。 rmは、どのような場合でも、すべてのファイルとディレクトリの間で反復するためです。

3
freedev

うーん、本当にサーバーを強制終了しますか?したがって、「\;」は使用しないでください。に

find /path/to/directory -type f -exec rm {} \;

このコマンドは、各ファイルに対して「rm」コマンドを実行します。

「find」コマンドを正しい方法で使用します。

find /directory/ -name ‘*’ -exec rm {} +

これにより、見つかったファイルに対してのみ「rm」コマンドが呼び出されます。そしてあなたのサーバーはあなたに感謝します! ;););)

2
DevSilez

Freedevが提案したコマンドのいずれかを実行しようとしてさまざまなエラーを受け取った後、私は次のようにクリーンアップすることになりました。

rm -f 0*
rm -f 1*
rm -f 2*
[...]
rm -f 9*

最初にrm -f 00*を実行して、所要時間を見積もることができます。

0
periklis