web-dev-qa-db-ja.com

無料のiノードがないサーバーをレスキューする方法(DDOSから)

私のWebサーバーの1つがDDOS攻撃を受けました。何百万ものPHPセッションファイルがパーティションの100%iノードを使用していることを除いてすべてが順調です。/全体に対して1つのパーティションしかありません

いくつかの解決策を試しましたが、ある程度しか機能しませんでした。 https://unix.stackexchange.com/questions/37329/efficiently-delete-large-directory-taining-thousands-of-files?newreg=07f276292205457ab9975a0ea68e927

http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux

Iノードの8%を解放した後、ディスクは非常に遅くなり、それ以上何も削除できなくなります。

rm -f filename* 

rsync -a --delete empty_dir/    yourdirectory/

Perl -e 'for(<*>){((stat)[9]<(unlink))}'

そして、ディスクは今このように見えます

Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/vda1      2621440 2385895 235545   92% /
tmpfs           128789       1 128788    1% /dev/shm

ディレクトリにはまだ600万以上の小さなファイルがあります。上記のメソッドは約2ファイル/秒で削除します

Bツリーのリバランスについて読みました。しかし、どうすれば遅い削除の問題を診断/解決できますか?

`` `

4
Reed

簡単な方法は、現在の/tmpディレクトリを移動/名前変更し、新しいディレクトリを作成して、/tmpの通常の使用に影響を与えないようにすることです。

mkdir /newtmp
chmod 1777 /newtmp
mv /tmp /tmp-old && mv /newtmp /tmp 

/var/tmpについても同じことをする必要があるかもしれません。これにより、/ tmp-oldを平和的にクリーンアップできます。


緩和策として:

メモリの一部を使用して、PHPセッションファイルのストレージとして使用する個別のtempfsパーティションを作成することを検討してください。これにより、システムの他の部分への影響が多少制限されます。

つまり.

mkdir /var/cache/php
chmod 1777  /var/cache/php
mount -t tmpfs size=500M  /var/cache/php

php.iniを編集して設定します

session.save_path = "/var/cache/php"
8
HBruijn