服务器RH2288磁盘空间不足时,最直接的解决路径是先用df -h和du -sh定位占用大头,然后按“日志→临时文件→大文件→内核与Docker”的优先级逐层清理,大多数情况下无需立即扩容。
很多公司的机房角落里都蹲着一台华为RH2288,平时不声不响,某天突然报警说磁盘满了,你登录上去想清理,结果发现分区红得发紫,连tab键补全都开始卡顿,这篇文章专治这种“满盘”焦虑,从定位到清理,手把手带你走一遍完整流程。
第一步:判断哪些目录在“偷吃”磁盘空间
盲目删文件是大忌,先花三分钟搞清楚空间去哪了,登录服务器后,依次执行以下命令:
df -h:查看各分区挂载点使用率,确认是还是/home等分区告急。du -sh /opt /var /home /tmp 2>/dev/null:快速扫一眼核心目录的总占用。du -h --max-depth=2 /var | sort -rh | head -20:列出/var下前20个最占空间的子目录。
业内专家指出,RH2288这类2U机架服务器在跑业务时,/var/log、/opt、/home是三大“高危地带”,日志文件、应用安装包、用户数据常常在不知不觉中膨胀,如果/var/log下的messages或syslog文件超过5GB,通常就是日志轮转配置失效了,先锁定目标,再动手不迟。
服务器磁盘空间不足怎么查:三个命令组合拳
光看目录还不够,你还需要揪出那些“隐藏”的大块头,建议用find命令做一次地毯式搜索:
- 查找大于1GB的文件:
find / -type f -size +1G -exec ls -lh {} ; - 查找7天前的临时文件:
find /tmp -type f -mtime +7 -delete - 检查已删除但被进程占用的文件:
lsof | grep deleted
最后一条最容易忽略,很多场景下,你rm了一个大文件,但df -h显示空间没释放,大概率是某个进程还握着这个文件的句柄,此时执行systemctl restart重启对应服务即可释放空间,千万别直接kill -9,可能会影响在线业务。
第二步:动手清理三大“垃圾源头”
定位完成,接下来进入实操环节,根据清理的性价比和风险等级,我们按以下顺序推进。
清理日志文件:最安全、见效最快
日志是磁盘空间的最大消耗者,也是清理成本最低的对象,对于RH2288上的CentOS或Ubuntu系统,执行:
- 清空已轮转的日志:
find /var/log -type f -name ".gz" -delete - 截断当前正在写入的日志:
truncate -s 0 /var/log/messages(不用rm,避免服务失控) - 设置合理的日志轮转策略:编辑
/etc/logrotate.d/syslog,把rotate次数改为4,size设为100M,让系统自动压缩旧日志。
很多运维朋友不敢动/var/log,怕删了出问题,其实只要不删.log文件本身,只是清空内容或者删.gz压缩包,风险极低。配置好logrotate是防止磁盘再次爆满的根本手段,检查一下/etc/cron.daily/logrotate是否有执行权限,没有就chmod +x补上。
清洗应用缓存与临时文件
RH2288上跑了业务,难免产生缓存,按以下清单逐项排查:
- Java应用临时目录:
/tmp/hsperfdata_、/tmp/jetty-,这些是JVM残留,可安全删除。 - 包管理器缓存:CentOS执行
yum clean all,Ubuntu执行apt-get clean。 - 数据库临时文件:如果跑了MySQL,检查
/tmp下是否有#sql开头的临时表文件,这类文件通常是异常断开留下的,删除前先确认数据库运行正常。 - 系统固件升级残留:华为iBMC或BIOS升级包有时会解压到
/tmp或/home,升级完成后不会自动清理,搜一下.hpm、.bin这类大文件,确认版本没问题就删。
猎杀占用空间的大文件与“僵尸”文件
用find搜出的大文件,需要逐一判断是否可以删除,经验法则如下:
core.xxxx后缀的进程核心转储文件:直接用rm删,这类文件是程序崩溃时留下的,没有保留价值。nohup.out文件:长期运行的服务会持续向这个文件追加日志,如果已超过2GB,先truncate -s 0 nohup.out,再考虑在启动命令里加上重定向。> /dev/null 2>&1
- 视频、ISO镜像等安装包:存放在
/root或/home下的历史安装介质,确认用不到就删。删之前用du -sh逐级核对路径,避免误删项目数据。
第三步:针对RH2288的特殊场景深度清理
RH2288经常承担虚拟化、分布式存储或大数据节点角色,如果你管理的这台机器不在这些场景里,可以跳过本节,但如果在,请重点看。
Docker容器与镜像的空间回收
现在的业务部署偏向容器化。/var/lib/docker很容易撑爆分区,执行docker system df查看占用,清理策略:
docker system prune -a --volumes:一键清理所有悬空镜像、停止的容器和无用数据卷,慎用,会删掉所有未被容器引用的镜像。- 更精准的做法:
docker image ls | grep "<none>",把悬空镜像的ID批量删除。 - 检查容器日志:
du -sh /var/lib/docker/containers//-json.log,超过500MB的日志文件直接truncate -s 0清空。
释放inode索引节点空间
有时候df -h显示还有空间,但系统报“No space left on device”,这是inode耗尽了,RH2288如果跑着消息队列或小文件缓存,容易出现这个问题,执行:
df -i查看inode使用率。find /var/spool -type f | wc -l检查邮件队列或打印队列是否堆积。find / -type f -size 0 | xargs -I {} rm -f {}删除大量空文件。
华为RH2288磁盘扩容方案:当清理解决不了问题时
如果你把上面三步都做完了,发现可用空间依然紧张,或者业务数据本身就在持续增长,那就该考虑扩容了。扩容是根治方案,但需要提前规划窗口期,RH2288通常支持SATA/SAS热插拔硬盘,操作路径如下:
- 确认RAID卡型号:
lspci | grep -i raid,常见的是LSI 2208或PM8060。 - 插入新硬盘后,进入RAID卡BIOS(开机按
Ctrl+R或Ctrl+H),把新盘配置为RAID0或加入现有阵列。 - 使用
parted或fdisk对新盘分区,格式化为xfs或ext4。
- 挂载到新目录,并修改
/etc/fstab实现开机自动挂载。
如果服务器有闲置盘位,这是成本最低的扩容方式,如果是老旧机型,行业共识认为,评估整机替换比单独买硬盘更有性价比,因为老平台对单盘容量支持有限。
清理后的收尾检查与预防机制
空间清理干净了,别急着关终端,花两分钟做一次系统体检,确保没有误伤。
- 检查关键服务状态:
systemctl status确认业务进程都在运行。 - 查看系统日志完整性:
tail -f /var/log/messages看是否有新的报错刷屏。 - 验证数据库可读写:
mysql -e "select 1"或psql -c "select 1",确认能正常连接。
预防方面,建议启用一个简单的磁盘监控脚本,使用crontab定时任务,每天检查一次使用率,超过85%自动告警,脚本逻辑很简短,判断df -h中分区的使用率数字,超过阈值就发邮件或写入日志,这比等系统自动告警再处理要从容得多。
Q&A:关于服务器磁盘空间不足的常见疑问
问:清理日志文件会不会导致无法追溯历史操作记录?
答:可能的,如果生产环境有安全审计需求,建议在清理前用tar -czf /backup/log_archive_$(date +%F).tar.gz /var/log打包压缩,再执行清理,归档文件占用的空间远小于原始日志,同时保留了合规追溯依据。
问:linux清理磁盘空间命令还有哪些是适合RH2288的?
答:除了本文提到的du、find、truncate,还有两个实用命令。ncdu是交互式磁盘分析工具,yum install ncdu后执行,可以用方向键浏览目录占用,操作体验比du更直观。pydf是彩色版df,使用率超过90%的分区会标红,适合快速巡检。
问:将日志重定向到`/dev/null`是有效的清理手段吗?
答:对于nohup.out这类无实际分析价值的输出,重定向到/dev/null能有效避免文件无限增长,但对于/var/log/messages等系统日志,不建议重定向,这些日志是排查硬件故障(如磁盘坏道、内存报错)的关键线索,关闭后会丧失预警能力。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/579434.html




