阿里云服务器的40G磁盘空间不够用,这是一个常见的问题。解决方法有很多,具体取决于你的使用场景(比如是网站、应用、数据库、日志存储等)。下面我给你一些排查原因 + 解决方案的建议:
🔍 一、先排查为什么磁盘满了?
你可以通过以下命令查看磁盘占用情况:
df -h
这个命令会显示你服务器上各个挂载点的磁盘使用情况。
接着查看哪个目录占用了最多空间:
du -sh /*
或者更详细一点:
du -ah /path/to/dir | sort -rh | head -n 20
常见占用磁盘的情况有:
- 系统日志文件过大
/var/log/目录下可能会积累大量日志,尤其是错误日志或访问日志。
- 网站或应用的上传目录
- 比如图片、视频、附件等都存在服务器上。
- 数据库数据增长
- MySQL、PostgreSQL 等数据库默认安装在系统盘。
- 临时文件堆积
- 比如
/tmp/或程序生成的缓存文件。
- 比如
- 程序日志输出过多
- 比如 Java 应用、Node.js、Python 等服务的日志没有轮转。
- 系统镜像或容器残留
- Docker 镜像、容器、卷也可能占用大量空间。
✅ 二、解决方案
1. 清理无用文件
-
清理日志:
> /var/log/syslog # 清空 syslog 日志 > /var/log/messages # 清空 messages 日志 -
删除旧的系统日志:
sudo rm -rf /var/log/*.gz sudo rm -rf /var/log/journal/* -
清理 yum/apt 缓存(CentOS/Ubuntu):
sudo yum clean all # CentOS sudo apt-get clean # Ubuntu -
清理 Docker 无用镜像和容器:
docker image prune -a docker container prune docker volume prune
2. 扩展磁盘容量
如果确实需要更多空间,可以考虑:
✅ 升级系统盘(适用于ECS)
登录 阿里云控制台 → 找到你的ECS实例 → 停机后升级系统盘容量。
⚠️ 注意:有些系统盘类型不支持在线扩容,必须关机操作。
✅ 添加数据盘(推荐)
购买一块新的云盘(数据盘)挂载到服务器,然后将大文件、数据库、日志等迁移到新盘。
步骤简要如下:
- 在阿里云控制台添加数据盘;
- 挂载到服务器;
- 格式化并挂载为某个目录,例如
/data; - 把原来
/home,/var/lib/mysql等迁移到/data; - 建立软链接或修改配置指向新路径。
3. 优化程序结构
- 使用对象存储(OSS)保存用户上传的文件;
- 将数据库迁移到 RDS;
- 使用 CDN 存放静态资源;
- 启用日志自动清理策略(logrotate);
- 定期做磁盘清理脚本(crontab)。
🧪 示例:迁移MySQL到新磁盘
假设你买了新磁盘 /dev/vdb,想把 MySQL 数据迁过去:
# 格式化磁盘
mkfs.ext4 /dev/vdb
# 挂载到 /mnt/data
mkdir /mnt/data
mount /dev/vdb /mnt/data
# 停止MySQL
systemctl stop mysqld
# 复制原有数据
cp -r /var/lib/mysql/* /mnt/data/
# 修改MySQL配置文件 my.cnf
# datadir=/mnt/data
# 启动MySQL
systemctl start mysqld
📝 总结
| 方案 | 描述 |
|---|---|
| ✅ 清理日志、缓存、垃圾文件 | 快速释放空间 |
| ✅ 升级系统盘 | 阿里云支持扩容 |
| ✅ 挂载新数据盘 | 更灵活、适合长期 |
| ✅ 迁移数据到其他服务 | 如OSS、RDS、NAS等 |
如果你告诉我你的服务器用途(比如是 WordPress、Java 应用、Docker、数据库等),我可以给出更具体的建议!
是否需要我帮你写一个自动清理脚本?欢迎继续提问 😄
CDNK博客