4.5 KiB
4.5 KiB
磁盘管理工具使用指南
🔧 工具概览
我们提供了三个主要的磁盘管理工具来解决磁盘空间不足的问题:
1. 磁盘分析工具 (disk-analysis-ncdu.yml)
使用 ncdu 工具深度分析磁盘使用情况,生成详细报告。
2. 磁盘清理工具 (disk-cleanup.yml)
自动清理系统垃圾文件、日志、缓存等。
3. 磁盘监控脚本 (disk-monitor.sh)
一键监控所有节点的磁盘使用情况。
🚀 快速使用
监控所有节点磁盘使用情况
# 使用默认阈值 85%
./scripts/utilities/disk-monitor.sh
# 使用自定义阈值 90%
./scripts/utilities/disk-monitor.sh 90
分析特定节点磁盘使用
# 分析所有节点
ansible-playbook -i configuration/inventories/production/nomad-cluster.ini \
configuration/playbooks/disk-analysis-ncdu.yml
# 分析特定节点
ansible-playbook -i configuration/inventories/production/nomad-cluster.ini \
configuration/playbooks/disk-analysis-ncdu.yml --limit semaphore
清理磁盘空间
# 清理所有节点 (安全模式)
ansible-playbook -i configuration/inventories/production/nomad-cluster.ini \
configuration/playbooks/disk-cleanup.yml
# 清理特定节点
ansible-playbook -i configuration/inventories/production/nomad-cluster.ini \
configuration/playbooks/disk-cleanup.yml --limit ash3c
# 包含容器清理 (谨慎使用)
ansible-playbook -i configuration/inventories/production/nomad-cluster.ini \
configuration/playbooks/disk-cleanup.yml -e cleanup_containers=true
📊 分析报告说明
ncdu 文件位置
分析完成后,ncdu 扫描文件保存在各节点的 /tmp/disk-analysis/ 目录:
ncdu-root-<hostname>.json- 根目录扫描结果ncdu-var-<hostname>.json- /var 目录扫描结果ncdu-opt-<hostname>.json- /opt 目录扫描结果
查看 ncdu 报告
# 在目标节点上查看交互式报告
ncdu -f /tmp/disk-analysis/ncdu-root-semaphore.json
# 查看文本报告
cat /tmp/disk-analysis/disk-report-semaphore.txt
# 查看清理建议
cat /tmp/disk-analysis/cleanup-suggestions-semaphore.txt
🧹 清理选项说明
默认清理项目
- ✅ 系统日志: 清理7天前的日志文件
- ✅ 包缓存: 清理 APT/YUM 缓存
- ✅ 临时文件: 清理7天前的临时文件
- ✅ 核心转储: 删除 core dump 文件
可选清理项目
- ⚠️ 容器清理: 需要手动启用 (
cleanup_containers=true)- 停止所有容器
- 删除未使用的容器、镜像、卷
自定义清理参数
ansible-playbook configuration/playbooks/disk-cleanup.yml \
-e cleanup_logs=false \
-e cleanup_cache=true \
-e cleanup_temp=true \
-e cleanup_containers=false
🚨 紧急情况处理
磁盘使用率 > 95%
# 1. 立即检查最大文件
ansible all -i configuration/inventories/production/nomad-cluster.ini \
-m shell -a "find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null | head -5"
# 2. 紧急清理
ansible-playbook configuration/playbooks/disk-cleanup.yml \
-e cleanup_containers=true
# 3. 手动清理大文件
ansible all -m shell -a "truncate -s 0 /var/log/large.log"
常见大文件位置
/var/log/- 系统日志/tmp/- 临时文件/var/cache/- 包管理器缓存/opt/nomad/data/- Nomad 数据~/.local/share/containers/- Podman 数据
📈 定期维护建议
每日监控
# 添加到 crontab
0 9 * * * /root/mgmt/scripts/utilities/disk-monitor.sh 85
每周清理
# 每周日凌晨2点自动清理
0 2 * * 0 cd /root/mgmt && ansible-playbook configuration/playbooks/disk-cleanup.yml
每月深度分析
# 每月1号生成详细报告
0 3 1 * * cd /root/mgmt && ansible-playbook configuration/playbooks/disk-analysis-ncdu.yml
🔍 故障排除
ncdu 安装失败
# 手动安装
ansible all -m package -a "name=ncdu state=present" --become
扫描超时
# 增加超时时间
ansible-playbook disk-analysis-ncdu.yml -e ansible_timeout=600
权限问题
# 确保使用 sudo
ansible-playbook disk-analysis-ncdu.yml --become
💡 最佳实践
- 定期监控: 每天检查磁盘使用情况
- 预防性清理: 使用率超过80%时主动清理
- 日志轮转: 配置合适的日志轮转策略
- 容器管理: 定期清理未使用的容器镜像
- 监控告警: 设置磁盘使用率告警阈值
💡 提示: 使用 ./scripts/utilities/disk-monitor.sh 可以快速检查所有节点状态!