阿里云服务器磁盘满了怎么办?

云计算

阿里云服务器磁盘满了是一个常见但需要谨慎处理的问题。处理前请务必先确认是系统盘还是数据盘,以及是否还有扩容空间。以下是分步骤的排查与解决方案:


🔍 第一步:快速诊断(确认占用情况)

# 1. 查看各分区使用率
df -h

# 2. 定位大文件/目录(以根目录为例)
du -sh /* | sort -hr | head -n 20

# 3. 查找大于 500MB 的文件
find / -type f -size +500M -exec ls -lh {} ; 2>/dev/null | sort -k5 -hr | head -n 20

# 4. 检查日志文件(常见占用大户)
ls -lhS /var/log/
journalctl --disk-usage  # 查看 systemd 日志占用

💡 注意:避免直接 rm 大文件!若被进程占用,需先终止进程或重启服务释放句柄。


🛠️ 第二步:安全清理(优先尝试)

✅ 可安全清理项:

类型 操作建议
旧日志 sudo journalctl --vacuum-time=7d
sudo find /var/log -name "*.log" -mtime +7 -delete
缓存文件 sudo apt-get clean (Debian/Ubuntu) 或 sudo yum clean all (CentOS)
临时文件 /tmp, /var/tmp 中过期文件
Docker 垃圾 docker system prune -a --volumes(慎用!会删除未运行容器镜像)
包管理器缓存 yum clean packages / apt autoclean

⚠️ 警告:
❌ 不要直接删除 /proc, /sys, /dev 等虚拟文件系统
❌ 避免误删系统关键目录(如 /etc, /bin, /usr


📈 第三步:磁盘扩容(推荐方案)

如果清理后仍不足,扩容是最稳妥的方式(尤其对系统盘)。

场景 A:云盘支持在线扩容(无需停机)

  1. 登录 阿里云控制台
  2. 进入 云服务器 ECS → 实例 → 磁盘管理
  3. 找到对应磁盘 → 点击 更多 → 扩容
    • 选择新容量(注意:仅支持增大,不可缩小)
    • 勾选“自动格式化”(可选,但建议手动操作更安全)
  4. 扩容后需在操作系统内扩展文件系统
# 示例:假设原/dev/vda1 从 40G 扩到 80G
lsblk              # 确认新大小已生效
growpart /dev/vda 1  # 安装工具:yum install cloud-utils-growpart 或 apt install cloud-guest-utils
resize2fs /dev/vda1  # ext4 文件系统
# 若是 xfs 格式:xfs_growfs /

✅ 优势:业务无感知,数据零丢失
⚠️ 注意:部分老旧系统或 LVM 配置需特殊处理,建议提前备份快照!

场景 B:无法在线扩容(需停机)

  • 创建磁盘快照(重要!)
  • 关机 → 扩容磁盘 → 开机 → 按上述步骤扩展文件系统

🔄 第四步:长期优化建议

  • 启用 日志轮转(logrotate)自动压缩/清理旧日志
  • 将大文件(如数据库、上传附件)迁移至独立数据盘或 OSS
  • 部署监控告警(通过云监控设置磁盘使用率 >80% 报警)
  • 定期执行 df -h + du 巡检脚本

❗ 紧急情况处理

若磁盘 100% 导致服务无法启动:

  1. 尝试进入单用户模式/救援模式挂载只读分区
  2. 紧急删除非关键大文件(如旧备份、测试数据)
  3. 联系阿里云技术支持(提供实例 ID 可申请紧急协助)

需要我帮你生成一个自动化巡检脚本,或指导具体某类文件(如 MySQL 慢查询日志、Docker 镜像)的清理方案吗?