阿里云服务器系统盘空间不足是一个常见问题,解决思路通常分为“紧急清理”、“扩容磁盘”和“数据迁移/优化”三个层级。建议按照以下顺序操作:
一、 紧急清理(快速释放空间)
如果服务器即将宕机或无法登录,先执行以下命令清理无用文件:
1. 查找大文件
# 查看根目录下各文件夹占用大小
du -sh /* | sort -hr | head -n 10
# 查找超过 100M 的大文件
find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null | awk '{ print $5, $9 }' | sort -hr | head -n 20
2. 清理常见垃圾文件
- 清理 Docker 镜像/容器/卷(如果使用 Docker):
docker system prune -a --volumes - 清理 yum/apt 缓存:
# CentOS/RHEL yum clean all # Ubuntu/Debian apt-get clean -
清理日志文件(谨慎操作,确保业务无影响):
# 查看/var/log 下的大日志 du -sh /var/log/* | sort -hr | head -n 10 # 清空过大的日志文件(例如 nginx access.log) > /var/log/nginx/access.log - 清理旧内核(CentOS 7+):
package-cleanup --oldkernels --count=2
3. 检查是否有异常进程持续写入
使用 iotop 或 htop 查看哪个进程在大量写入磁盘。
二、 扩容系统盘(推荐方案)
如果清理后仍不够用,或者希望一劳永逸,扩容磁盘是最安全、最标准的做法。
⚠️ 重要提醒:操作前务必在阿里云控制台对云盘创建快照备份!
步骤如下:
-
停止实例(可选但推荐)
- 虽然支持在线扩容,但为了减少风险,建议先停止 ECS 实例。
- 进入阿里云控制台 → ECS → 实例列表 → 找到目标实例 → 更多 → 实例状态 → 停止。
-
扩容云盘
- 在左侧导航栏选择 存储与镜像 → 云盘。
- 找到你的系统盘,点击 更多 → 扩容。
- 输入新的容量(如从 40G 扩容到 60G 或 100G)。
- 确认订单并完成支付(按量付费即时生效;包年包月需续费差额)。
-
启动实例
- 启动 ECS 实例。
-
扩展文件系统
- 登录服务器,执行以下命令使新空间生效:
对于 CentOS 7 / RHEL 8+ / Alibaba Cloud Linux 3:
# 安装 parted(如果未安装) yum install parted -y # 查看磁盘设备名(通常是 /dev/vda 或 /dev/xvda) lsblk # 使用 growpart 扩展分区(需要安装 cloud-utils-growpart) yum install cloud-utils-growpart -y growpart /dev/vda 1 # 注意:vda 是磁盘名,1 是分区号,请根据实际情况调整 # 扩展文件系统 xfs_growfs / # 如果是 XFS 文件系统 # 或 resize2fs / # 如果是 EXT4 文件系统对于 Ubuntu / Debian:
# 安装工具 apt install cloud-guest-utils -y # 扩展分区 growpart /dev/vda 1 # 扩展文件系统 resize2fs /dev/vda1 -
验证结果
df -h确认
/挂载点的大小已更新。
三、 高级优化方案(长期建议)
1. 将数据盘独立出来
- 最佳实践:不要把所有数据都放在系统盘。
- 创建一个独立的数据盘(如 100G),挂载到
/data目录。 - 将网站文件、数据库、日志等大数据量内容迁移到数据盘。
- 系统盘仅保留操作系统和必要软件,保持精简。
2. 使用对象存储 OSS
- 将静态资源(图片、视频、备份文件)上传到阿里云 OSS。
- 通过 CDN 提速访问,减轻服务器磁盘压力。
3. 定期自动清理脚本
编写 cron 任务,定期清理日志、临时文件和旧备份。
# 示例:每天凌晨2点清理 /tmp 下超过 7 天的文件
echo "0 2 * * * find /tmp -type f -mtime +7 -delete" >> /etc/crontab
四、 注意事项
| 项目 | 说明 |
|---|---|
| 快照备份 | 任何磁盘操作前必须创建快照,防止误操作导致数据丢失。 |
| 文件系统类型 | 扩容前确认文件系统是 xfs 还是 ext4,对应不同的扩容命令。 |
| 在线扩容限制 | 部分老旧实例或特定机型可能不支持在线扩容,需停机操作。 |
| 性能影响 | 扩容过程中磁盘 I/O 会短暂中断,建议在业务低峰期操作。 |
✅ 总结建议
- 临时应急 → 执行 第一步:紧急清理。
- 根本解决 → 执行 第二步:扩容系统盘(推荐扩容至 60G~100G)。
- 长期规划 → 建立 数据盘 + OSS + 日志轮转 的架构,避免系统盘再次爆满。
如需帮助判断具体命令中的磁盘名称(如 /dev/vda vs /dev/sda),可提供 lsblk 输出结果。
CLOUD技术笔记