QA@IT

Linuxで大量のファイルを削除する方法

4990 PV

現在、複数サイトが稼働しているwebサーバより、特定ディレクトリ以下に格納されている100万弱のファイルを削除したいと思っています。

いろいろ調べ、
echo * | xargs rm
や、
find . -type f -print | xargs rm
等を試したのですが、どうしてもI/O waitが100%近くまで跳ね上がってしまい、サイトの表示速度に影響が出てしまいます。

ある程度のCPU負荷やI/O waitが生じてしまうのは仕方がないとは思いますが、何か良い方法はありませんでしょうか。
よろしくお願いいたします。

CPU:Intel(R) Core(TM)2 Quad CPU Q9000 @ 2.00GHz
MEM:4038204 kB
OS:Red Hat Enterprise Linux Server release 5.8(本番稼働中)
Arch:x86_64

回答

効果があるかどうか判りませんが、ionice を使ってみてはどうでしょうか?

ionice -n7 $COMMAND

root なら・・・

ionice -c3 $COMMAND
編集 履歴 (0)
  • 返信が遅くなってしまい、申し訳ありません。
    ioniceの存在を失念していました・・・早速試してみます。
    ご回答ありがとうございました。
    -

原理的に良い解決はないでしょう。
IO使用率を上げないというのが目的であれば、時間はかかりますが、ゆっくり消せばいいかと。
たとえば100個消して1秒休むとか。

あとは、もともと専用のパーティションを用意して、一度アンマウントしてフォーマット(mkfs)するか。

編集 履歴 (0)
  • 返信が遅くなってしまい、申し訳ありません。
    ご回答ありがとうございました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。