当前位置: 首页 > news >正文

Linux磁盘告急:巧用ncdu定位并清理/dev/sda高占用

1. 当Linux服务器突然报警:磁盘爆满的紧急处理

"服务器磁盘空间不足"这个红色警告突然跳出来时,相信很多运维同学都会心头一紧。我上周就遇到了这个情况:凌晨三点收到报警短信,/dev/sda6分区显示100%占用,导致关键服务直接崩溃。这种紧急情况下,最怕的就是病急乱投医——盲目删除文件可能造成数据丢失,而慢慢排查又等不起。

先分享个快速缓解的"急救包"(建议收藏):

# 快速清理APT缓存(安全操作) sudo apt-get autoclean sudo apt-get clean sudo apt-get autoremove # 清理系统日志(需谨慎) sudo journalctl --vacuum-size=200M

但这些都是治标不治本。真正要解决的是找到那些"空间吸血鬼"——可能是失控的日志文件、残留的Docker镜像,或是某个被遗忘的临时目录。这时候就需要专业的空间分析工具上场了。

2. ncdu:比du更聪明的磁盘分析利器

传统du命令虽然能查看目录大小,但在处理深层目录时就像举着手电筒找钥匙——效率太低。而ncdu则是给了你一个热成像仪:交互式界面、可视化占比、快捷键操作,这些特性让它成为我的首选工具。

安装简单到令人发指:

# Debian/Ubuntu系 sudo apt install ncdu # RHEL/CentOS系 sudo yum install ncdu

实测几个高效操作技巧:

  • 按大小排序:进入目录后按s键,立即揪出最大文件
  • 快速导航:用j/k上下移动,进入子目录,返回上级
  • 删除文件:对可疑文件按d直接删除(有确认提示)
  • 图形化显示:按g切换百分比柱状图模式

有次我用ncdu扫描/var目录时,发现某个服务的日志文件居然涨到了80GB——原来是因为日志轮转配置错误。这种问题用常规命令排查就像大海捞针,而ncdu的图形化界面让异常数据无所遁形。

3. 深度清理实战:以Docker为例

通过ncdu分析,90%的情况下/var/lib/docker都是罪魁祸首。Docker就像个贪吃蛇,不知不觉就会吞掉大量空间。分享我的清理组合拳:

3.1 基础清理

# 删除停止的容器、无用镜像等 sudo docker system prune -a

这个命令会交互式确认,能清理出惊人空间。但要注意它会删除所有未被使用的镜像,生产环境慎用。

3.2 高级清理

对于顽固的存储占用,需要定位具体容器:

# 查看各容器占用空间 docker ps -s --format "{{.ID}}: {{.Size}}" # 针对大容器检查日志位置 docker inspect --format='{{.LogPath}}' 容器ID

3.3 日志清理脚本

这是我常用的日志清理脚本(保存为clean_docker_logs.sh):

#!/bin/bash LOG_DIR="/var/lib/docker/containers" MAX_SIZE="100M" echo "===== 开始清理Docker日志 =====" find $LOG_DIR -name "*-json.log" -size +$MAX_SIZE -print0 | while IFS= read -r -d '' log; do echo "清空日志: $log" : > "$log" done echo "===== 清理完成 ====="

4. 防患于未然:磁盘空间监控方案

清理只是补救,预防才是王道。推荐我的监控三板斧:

  1. Prometheus+Alertmanager:设置磁盘使用率超过85%自动报警
  2. Logrotate配置:对所有服务日志强制轮转
# /etc/logrotate.d/自定义服务 /var/log/myapp/*.log { daily rotate 7 compress missingok notifempty }
  1. 定时清理任务:在crontab中加入定期维护
# 每周日凌晨3点清理 0 3 * * 0 /usr/bin/docker system prune -f 0 4 * * 0 /path/to/clean_docker_logs.sh

最后说个血泪教训:有次清理后发现数据库异常,原来误删了MySQL的临时文件。现在我的原则是——删除前先用tar -zcvf backup.tar.gz 待删目录做个备份,这个习惯至少救过我三次。

http://www.jsqmd.com/news/788890/

相关文章:

  • BiSeNetv2:实时语义分割的巅峰之作——原理、架构与深度解析
  • QMC音频解码工具:5分钟解锁加密音乐文件的完整指南
  • 5分钟掌握Chrome文本批量替换神器:告别手动修改的烦恼
  • NVIDIA Profile Inspector终极指南:免费解锁50+隐藏显卡设置
  • AI代理的议会决策:多模型协同与xAI Grok联邦架构实践
  • 天猫超市卡如何快速变现?超详细教程! - 团团收购物卡回收
  • Windows右键菜单管理神器:3分钟让你的右键菜单清爽高效
  • Winform项目老树开新花:用CefSharp+ECharts轻松搞定现代化数据大屏(含资源释放避坑指南)
  • Qovery Engine 实战:用 Rust 统一多云部署,简化云原生应用交付
  • 2026年论文AI率高怎么破?亲测10款降AI工具,降AI率毕业收藏攻略 - 降AI实验室
  • 模型评估实战指南:从混淆矩阵到F1分数,如何精准衡量算法表现
  • Hotkey Detective:揭秘Windows热键冲突的智能诊断利器
  • AutoLISP对话框(DCL)实战:从零构建用户交互界面
  • Linux服务器磁盘突然被占满?小心是Docker在“吃”空间!手把手教你用ncdu排查和清理
  • 解决智能制造中工业机理的难点
  • 终极指南:如何用XUnity自动翻译器5分钟破解游戏语言障碍
  • 高性能B站视频下载解决方案:哔哩下载姬技术架构与实战部署指南
  • 别再手动敲空格了!LaTeX中itemize环境实现悬挂缩进的3种实用技巧
  • 在【Excel】、【PowerPoint】、【Word】 和 【Outlook】中与 【Claude】 协同工作
  • 深入.eh_frame:GCC/Clang编译后,你的程序如何“记住”自己的调用栈?
  • Hotkey Detective:Windows热键冲突终极解决方案,快速定位“热键小偷“的完整指南
  • 告别‘四不像’!用MyDock+MyFinder在Win10上打造一个真正好用的Mac风格桌面(附字体图标包)
  • 5G手机省电的秘密武器:BWP动态带宽切换实战解析(附配置示例)
  • 初创团队如何利用Taotoken的Token Plan有效控制大模型试错成本
  • QMC音频转换终极指南:快速解锁加密音乐文件
  • 为什么docx2tex能在5分钟内解决Word到LaTeX的格式转换难题?
  • 如何在Chrome浏览器中实现快速批量文本替换?终极效率工具指南
  • AI Agent配置生成器:基于agentforge的自动化项目脚手架实践
  • GBK转UTF-8终极指南:告别乱码困扰的免费利器
  • NS-USBLoader完整指南:Switch游戏传输、RCM注入和文件管理的终极解决方案