如何拯救没有空闲inode的服务器(来自DDOS)

我的networking服务器之一是DDOS攻击。 除了有数百万PHP会话文件用完分区的100%inode以外,一切都很好。 整个/分区只有一个分区,

尝试了几个解决scheme,但只是在一定程度上工作。 https://unix.stackexchange.com/questions/37329/efficiently-delete-large-directory-containing-thousands-of-files?newreg=07f276292205457ab9975a0ea68e9273

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

释放了8%的inode后,磁盘变得非常缓慢,无法删除更多内容。

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树重新平衡。 但是,我如何诊断/解决慢速删除问题呢?

“`

一个快速的做法是移动/重命名你当前的/tmp目录并创build一个新的目录,这样/tmp正常使用不再受到影响。

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

也许你也需要为/var/tmp做同样的事情。 这可以让你和平地清理/ tmp-old。


作为一种缓解措施:

考虑使用一些内存来创build一个单独的tempfs分区来作为PHP会话文件的存储空间,这将会在一定程度上限制对系统其余部分的影响。

 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"