阿里云服务器磁盘空间不足清理

阿里云服务器磁盘空间不足清理

  • admin admin
  • 2026-09-12
  • 3637
  • 0

阿里云服务器磁盘空间不足清理是指通过删除无用日志、缓存、临时文件、旧版本软件包及Docker残留数据等方式释放磁盘空间,保障服务器正常运行。查看磁盘使用情况登录服务器后,先执行 df -h 查看各挂载点的磁盘占用率,重点观察根分区 的使用率是否...

优惠价格:¥ 5
当前位置:首页 > 阿里云虚拟主机 > 阿里云服务器磁盘空间不足清理
详情介绍

阿里云服务器磁盘空间不足清理是指通过删除无用日志、缓存、临时文件、旧版本软件包及Docker残留数据等方式释放磁盘空间,保障服务器正常运行。

查看磁盘使用情况

登录服务器后,先执行 df -h 查看各挂载点的磁盘占用率,重点观察根分区 的使用率是否接近或达到 100%,再用 du -sh /* 逐层查看根目录下各文件夹占用大小,快速定位占用最高的目录,对于文件系统层级较深的情况,可使用 du -h --max-depth=1 /var 查看指定目录下一级子目录的占用情况,如果怀疑存在单个超大文件,使用 find / -xdev -type f -size +200M -exec ls -lh {} \; 查找超过 200MB 的文件,并按路径判断是否可以清理。

清理系统日志

系统日志通常位于 /var/log 目录,长期运行会积累大量日志文件,使用 ls -lh /var/log 查看日志文件大小,对于明显过大的日志文件,可以用 cat /dev/null > /var/log/messagestruncate -s 0 /var/log/messages 清空文件内容,而不是直接删除文件,避免影响正在写入日志的进程,对于 systemd 管理的日志,执行 journalctl --vacuum-size=100M 将 journal 日志缩减至 100MB 以内,或执行 journalctl --vacuum-time=7d 只保留最近 7 天的日志。/var/log/journal 目录占用过大,可进一步设置 SystemMaxUse=100M 写入 /etc/systemd/journald.conf 并重启服务。

清理软件包缓存

在 Alibaba Cloud Linux 或 CentOS 系统中,执行 yum clean all 清除 yum 下载的软件包和缓存文件,再删除 /var/cache/yum 目录下的残留内容,对于使用 dnf 的系统,执行 dnf clean all,在 Ubuntu 或 Debian 系统中,执行 apt-get clean 清除 /var/cache/apt/archives 下的所有软件包,执行 apt-get autoclean 仅清理已过期的软件包,执行 apt-get autoremove 卸载不再需要的依赖包,清理完成后再次执行 df -h 确认释放的空间。

阿里云服务器磁盘空间不足清理  第1张

清理临时文件

/tmp/var/tmp 是临时文件目录,部分程序运行后会残留无用文件,执行 find /tmp -type f -atime +7 -delete 删除 /tmp 下 7 天未访问的文件,执行 find /var/tmp -type f -atime +7 -delete 清理 /var/tmp 下过期文件,对于以 *.tmp 结尾的临时文件,执行 find / -xdev -name "*.tmp" -type f -delete 快速删除,注意 /tmp 下可能存在正在使用的 socket 文件或进程锁文件,删除前需确认相关服务是否正常运行,如有疑虑可先查看文件列表再批量删除。

清理旧内核

服务器更新系统后可能残留多个旧版本内核,占用 /boot 分区大量空间,在 CentOS 或 Alibaba Cloud Linux 系统中,执行 rpm -qa | grep kernel 查看已安装的内核包,执行 uname -r 确认当前正在使用的内核版本,对于非当前版本的旧内核,执行 yum remove kernel-3.10.0-1160.el7.x86_64 逐个卸载,或使用 package-cleanup --oldkernels --count=1 只保留当前内核和最近一个旧内核,Ubuntu 系统可执行 dpkg --list | grep linux-image 查看内核镜像包,再执行 apt-get purge linux-image-旧版本号 删除旧内核,删除完成后执行 grub2-mkconfig -o /boot/grub2/grub.cfg 更新引导配置。

清理 Docker 占用

如果服务器运行 Docker,执行 docker system df 查看镜像、容器、数据卷和构建缓存占用的磁盘空间,对于停止的容器,执行 docker container prune -f 删除所有未运行的容器,对于无标签的悬空镜像,执行 docker image prune -f 清理,若需要释放更多空间,执行 docker system prune -a --volumes 删除所有未被运行容器使用的镜像、网络和数据卷,但该操作会删除所有停止容器、未使用的镜像和卷,生产环境执行前必须确认没有重要数据,执行 docker volume ls -qf dangling=true | xargs -r docker volume rm 可专门清理无主的悬空数据卷。

清理应用日志与缓存

Nginx 的访问日志和错误日志长期累积会占用大量空间,查看 /var/log/nginx 目录下日志文件大小,对于正在写入的日志文件,使用 truncate -s 0 /var/log/nginx/access.log 清空,不要直接删除,以免日志文件句柄失效,Apache 日志位于 /var/log/httpd/var/log/apache2,同样使用 truncate 或 logrotate 切割清理,MySQL 二进制日志可使用 SHOW BINARY LOGS; 查看,再执行 PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY; 删除 7 天前的 binlog,Redis 如果开启 AOF 持久化,检查 appendonly.aof 文件大小,可通过重写压缩,执行 redis-cli BGREWRITEAOF,其他如 PHP 会话文件位于 /var/lib/php/session,可删除过期的 session 文件。

查找并删除大文件

执行 find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null 查找全盘超过 500MB 的文件,按输出路径判断是否可删除,常见的大文件包括数据库备份文件、日志归档包、安装包、核心转储文件 core dump 等,对于核心转储文件,执行 find / -xdev -name "core" -type f -delete 清理,对于备份文件,如果确认已经转存到对象存储 OSS 或本地 NAS,可以执行 rm -f /data/backup/xxx.tar.gz 删除,删除前建议先执行 ls -lh 文件路径 确认文件大小和修改时间,如有疑虑可先移动到 /tmp 观察几天再删除。

检查 inode 使用情况

有时磁盘空间未满但无法创建文件,可能是 inode 耗尽,执行 df -i 查看各分区的 inode 使用率,如果某个分区 inode 使用率接近 100%,说明存在大量小文件,常见原因是 /var/spool/postfix/maildrop 目录积累了过多邮件队列文件,执行 find /var/spool/postfix/maildrop -type f -delete 清理,会话文件过多时执行 find /var/lib/php/session -type f -name "sess_*" -delete 清理,执行 find /tmp -type f -delete 也能释放大量 inode。

扩容磁盘

如果完成以上清理后磁盘空间仍不足,可在阿里云控制台对云盘进行在线扩容,进入 ECS 实例的云盘列表,选择目标云盘,点击“扩容”,输入新容量并提交,扩容完成后登录服务器,执行 growpart /dev/vda 1 扩展分区表,再执行 resize2fs /dev/vda1 扩展 ext4 文件系统,如果使用 xfs 文件系统,执行 xfs_growfs / 直接扩展根分区,扩容完成后执行 df -h 确认新容量生效,数据盘扩容同理,/dev/vdb 挂载在 /data,执行 growpart /dev/vdb 1resize2fs /dev/vdb1 即可完成扩展。

0