mgmt/docs/disk-management.md

4.5 KiB
Raw Permalink Blame History

磁盘管理工具使用指南

🔧 工具概览

我们提供了三个主要的磁盘管理工具来解决磁盘空间不足的问题:

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

💡 最佳实践

  1. 定期监控: 每天检查磁盘使用情况
  2. 预防性清理: 使用率超过80%时主动清理
  3. 日志轮转: 配置合适的日志轮转策略
  4. 容器管理: 定期清理未使用的容器镜像
  5. 监控告警: 设置磁盘使用率告警阈值

💡 提示: 使用 ./scripts/utilities/disk-monitor.sh 可以快速检查所有节点状态!