
今天早上凌晨6点多,被一阵电话铃吵醒,原因:公司的一台服务器磁盘满了,监控中心打来电话,让赶紧去处理。于是,赶紧起来VPN,去把那台机器上一些不必要的日志文件给删了。以前都不是我处理,今天自己第一次处理,还浪费了不少时间。总结一下,该怎么做最快?1,一开始还是先把问题临时处理了再说,所谓先抗住,再优化。
Step1,第一步,先看磁盘空间。首用命令:df -h这个命令没啥好说的,参数也比较简单。可以看到哪个磁盘分区下的使用率很高。比如说:/data/分区下的使用率最高。Step2,到/data/目录下,是用du-h这个命令去看。如果你想看从当前这个目录下面,目录层数为N层的各个目录的大小,可以用: du -h --max-depth=3看从当前这个目录下面,三级目录深度的各个目录的大小是多少。当然,这个du 还有一个有用的参数,--time表示各个文件最后的修改时间。这里还有一个命令比较方便。find ./ -mtime +2 -exec ls -alh {} ;这个命令的意思是,查找当前目录下,所有文件修改时间在两天之前的文件(注意到2前面的加号没?),并且对这些文件执行 ls-alh 命令。这个命令一开始打的时候,70%执行报错,因为大家好想都会写成这样:{};要注意这里的右边的大括号和反斜杠之间要加上一个空格。呵呵,当然了,再看了那么多文件都可以删除的时候,就可以执行这样的命令啦:find ./ -mtime +2 -exec rm {} ;2,上面的过程走完之后,估计硬盘满的问题,只能说是暂时解决了。如果要想真正彻底的解决硬盘的使用问题。我觉得应该是这样:a,合理规划好,所有服务器上,每个目录存放什么样的文件,每个文件都怎么存放?比如说要最近3天的文件,那么前2天的文件就压缩了放在本机,最后一天的不压缩。这样的文件保存信息,最好放在一张配置表里面。方便查阅和管理。另外,压缩和清除的脚本,也可以按照配置表中的信息来进行文件的操作。b,如a所说,写一个脚本每天去服务器上清理这些文件,按照配置表中的信息,该压缩的压缩,该备份的备份,该删除的删除。并且最好能把每天每台机器清理之前的磁盘情况和清理之后的磁盘情况,报告出来。c,这里我觉得还有一个问题,需要注意。就是每台机器每天处理计算时候,需要的磁盘空间大小。比如说,有的统计机器需要拉业务机器上的日志来分析,这个时候统计机器的硬盘一定要留有足够大的空间能村的下这么多日志文件。也就是说,要保证服务器上,有足够的空间去给计算机计算。关于每台机器需要处理的磁盘大小,那就需要自己去挨个挨个分析了。d,最后,如果我们的磁盘清理脚本,能够每天以邮件的形式告诉大家,某台机器,清理前多少的硬盘空间,处理了哪些文件,处理后硬盘大小。那么,这样的话,每天可以对服务器的硬盘使用情况进行关注。就不会出现硬盘空间满的情况啦。当然,这建立在每个人使用完服务器之后,都有顺手清理掉使用过的文件的习惯。也许这也可以交给我们的脚本去做。