记一次Linux系统故障处理
背景
公司内外网管控,之前同事开发了一款管控系统,可以通过上传文件至服务器然后通过工作流审批通过后再在其他网络下载文件。近日用户频繁报文件上传不了,系统用不起来了。
处理过程
1. 首先排查服务器,发现是一台centos系统的主机,远程ssh进入先查找磁盘使用情况,终端里执行以下命令,发现果然磁盘已经使用100%
df -lh
2. 打算去机房,找一块硬盘插上,然后再想办法将历史文件拷贝至其他存储用于存档,去了发现有一块3T的硬盘空闲中未挂载,于是网上找挂载的教程,最后参考这篇文章。
3. 发现文件存储路径中文件数量太多了,于是决定写脚本来根据时间过滤出今年之前的所有文件拷贝至另外一块硬盘用于存档,Python脚本如下:
# -*- coding: UTF8 -*- import time import datetime import os '''把时间戳转化为时间: 1479264792 to 2016-11-16 10:53:12''' def TimeStampToTime(timestamp): timeStruct = time.localtime(timestamp) return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct) '''获取文件的修改时间''' def get_FileModifyTime(filePath): filePath = unicode(filePath,'utf8') t = os.path.getmtime(filePath) return TimeStampToTime(t) path = '/home/hsit/service/fus/node_modules/blueimp-file-upload-node/public/files/' total = 0 total_size = 0 lst = os.listdir(path) for i in range(0, len(lst)): pa = os.path.join(path, lst[i]) if os.path.isfile(pa): modify_time = get_FileModifyTime(pa) if modify_time < '2018-01-01': total = total+1 # size = get_FileSize(pa) total_size += size # print u'%d. %s 修改时间: %s \r\n 文件大小: %f MB' % (total, lst[i], get_FileModifyTime(pa), size) # os.system('scp -r %s odoo@10.10.10.151:/dev/sda1/'% pa) os.system('cp -r %s /dev/sdb'% pa) os.system('rm -rf %s' % pa) print 'total:%d, total-size:%fMB' % (total, total_size)
4. 将脚本文件传至服务器执行,使用scp命令
scp -r /home/odoo/Documents/cp.py 用户名@IP地址:/home/hsit/Documents
5. 使用Python执行脚本,看到打印输出执行结果,整个磁盘空间清理过程执行完成。
6. 重启管控系统服务,搞定。
遗留问题
只是暂时解决的存储问题,以后磁盘还是会满,后续会加入定期执行文件存档服务就能彻底解决问题。