当阿里云ECS实例的系统盘空间不足时,可以按照以下步骤进行排查和解决:
一、检查磁盘使用情况
登录到ECS实例,使用命令查看磁盘占用情况:
df -h
这会显示各分区的使用率。重点关注 /(根目录)或 /boot 等系统分区。
进一步查看具体目录占用情况:
du -sh /* 2>/dev/null | sort -hr | head -10
这可以帮助你找出哪些目录占用了大量空间。
二、清理不必要的文件
1. 清理日志文件
系统日志可能占用大量空间,常见路径:
/var/log//var/log/messages,/var/log/syslog- 应用日志(如 Nginx、Apache、MySQL)
可使用以下方式清理:
# 清空大日志文件(谨慎操作)
> /var/log/messages
> /var/log/nginx/access.log
# 或使用 logrotate 管理日志轮转
sudo logrotate -f /etc/logrotate.conf
2. 清理包管理缓存
- CentOS/RHEL(yum/dnf):
yum clean all rm -rf /var/cache/yum - Ubuntu/Debian(apt):
apt-get clean apt-get autoremove
3. 删除临时文件
rm -rf /tmp/*
rm -rf /var/tmp/*
4. 卸载无用软件
# 查看已安装软件
rpm -qa # CentOS
dpkg -l # Ubuntu
# 卸载不需要的软件包
yum remove package_name
# 或
apt-get remove package_name
5. 检查并删除大文件
查找大于100MB的文件:
find / -type f -size +100M 2>/dev/null | xargs ls -lh
三、扩容系统盘(推荐长期方案)
如果清理后仍空间不足,建议扩容系统盘:
方法1:在线扩容(推荐)
-
登录 阿里云控制台 → 进入 ECS 实例详情页。
-
停止实例(部分情况下支持不停机,但建议停止以确保安全)。
-
在“本实例磁盘”中选择系统盘,点击 “更多” → “修改配置” → “扩容”。
-
选择更大的容量(例如从40GB扩容到60GB)。
-
启动实例。
-
登录系统后,扩展文件系统(关键步骤!):
-
如果是 ext4 文件系统:
resize2fs /dev/vda1 # 根据实际设备名调整 -
如果是 xfs 文件系统:
xfs_growfs /
注意:设备名如
/dev/vda1可通过lsblk命令查看。 -
方法2:更换更大系统盘(备用)
- 创建系统盘快照。
- 使用快照创建更大容量的新自定义镜像。
- 基于新镜像重新创建ECS实例(适用于不能直接扩容的旧实例)。
四、预防措施
-
定期监控磁盘使用:
- 使用云监控设置磁盘使用率告警。
- 部署脚本定期清理日志。
-
合理规划初始容量:
- 新购ECS时建议系统盘至少50GB以上,尤其是运行应用较多的情况。
-
将数据存储分离:
- 将日志、数据库等数据迁移到数据盘或OSS等外部存储。
总结
| 步骤 | 操作 |
|---|---|
| 1 | df -h 和 du 查看占用 |
| 2 | 清理日志、缓存、临时文件 |
| 3 | 卸载无用软件 |
| 4 | 扩容系统盘(控制台+resize) |
| 5 | 设置监控与自动化清理 |
如需帮助确认设备名或文件系统类型,可运行:
lsblk
df -T
⚠️ 操作前建议先对系统盘创建快照备份,防止误操作导致数据丢失。
如有具体错误信息或系统类型(CentOS/Ubuntu等),可提供更详细指导。
云小栈