当阿里云服务器磁盘空间不足时,可以通过以下步骤清理和排查问题:
一、检查磁盘使用情况
# 查看磁盘整体使用情况(确认哪个分区已满)
df -h
# 示例输出:
# Filesystem Size Used Avail Use% Mounted on
# /dev/vda1 40G 39G 0G 100% /
二、定位大文件或目录
-
快速查找大目录
# 查看根目录下各文件夹大小(按大小倒序) du -sh /* | sort -rh
通常检查
/var
、/usr
、/home
等目录。 -
逐层深入定位
进入占用较大的目录,重复使用du
命令:cd /var du -sh * | sort -rh
-
使用工具查找大文件
# 查找大于100MB的文件(按需调整数值) find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | awk '{ print $9 ": " $5 }'
三、常见清理场景
1. 清理日志文件
-
系统/服务日志:
# 查看/var/log目录大小 du -sh /var/log # 清理旧日志(谨慎操作!) sudo rm /var/log/*.log.* # 删除轮转后的历史日志 sudo truncate -s 0 /var/log/syslog # 清空正在写入的日志(需确认服务支持)
-
Nginx/Apache日志:
检查/var/log/nginx
或/var/log/httpd
,清理旧日志文件。
2. 清理临时文件
# 清理系统临时文件
sudo rm -rf /tmp/*
# 清理用户缓存(如apt、yum缓存)
sudo apt clean # Debian/Ubuntu
sudo yum clean all # CentOS/RHEL
3. 处理应用数据
-
MySQL/MariaDB:
清理二进制日志 (binlog
):-- 登录MySQL后执行 PURGE BINARY LOGS BEFORE '2023-01-01 00:00:00';
-
Docker:
清理无用的镜像、容器和卷:docker system prune -a --volumes
4. 其他可能占用
- 用户上传文件:检查
/home
或自定义数据目录。 - 备份文件:删除过期的备份文件(如
*.tar.gz
、*.bak
)。
四、处理已删除但未释放空间的文件
如果文件被进程占用但已删除,需重启服务释放空间:
# 查找被删除但仍被进程占用的文件
lsof | grep deleted
# 根据输出结果,重启对应服务或进程
sudo systemctl restart nginx
五、预防措施
-
设置日志轮转
使用logrotate
配置日志自动分割和删除(如 Nginx、MySQL)。 -
监控磁盘使用
- 阿里云控制台设置磁盘使用率报警。
- 使用
crontab
定期清理临时文件。
-
扩容磁盘(可选)
如果清理后仍不足,可在阿里云控制台 扩容云盘,并在系统内扩展分区。
注意事项
- 谨慎删除文件:避免误删系统或应用关键文件。
- 备份重要数据:清理前确认文件可删除,必要时备份。
- 容器/数据库:清理前确保服务已停止或数据已持久化。
通过以上步骤,可快速释放磁盘空间并优化存储使用。