由于业务系统复杂、日志增长迅速、开发与运维人员众多,加之服务器长时间运行不曾清理,隐藏的大文件、深层目录、临时缓存和异常日志往往会在不知不觉中占用大量空间,导致业务出现写入失败、数据库无法运行、Nginx 报错 507、网站打不开等问题。要定位这些隐藏文件,需要系统性的排查思路和专业工具配合,而不是盲目删除文件。
在正式排查之前,首先要明确一个原则:磁盘满了不一定是当前目录下的文件占用,一些被删除但仍被进程占用的文件也会继续占用空间,甚至占用量极大,这类“已删除但未释放”的文件常常成为隐藏占用的元凶。因此,排查需要从文件系统占用和进程占用两方面同时进行。任何误删系统文件或正在使用的大文件都可能导致不可预期的后果,因此在操作过程中务必保持谨慎,必要时进行备份。
当空间开始告急时,可以先通过系统命令快速了解整体磁盘情况,这有助于判断问题是否集中在某个分区。常用命令如下:
df -h
输出结果中,会显示各挂载点的使用率,通过观察使用率超过 90% 的分区,即可锁定问题分布范围。需要注意的是,香港服务器通常使用 RAID 或云硬盘,某些分区容量分配较小(如 /boot、/var),因此再一点点日志增长都可能直接占满。
当确认分区后,寻找大文件的核心命令是 du,它能帮助分析目录层级的占用情况,尤其适合定位“深层目录”内的文件。为了效率和可读性,可以使用以下命令查看当前分区占用最大的目录:
du -sh /* 2>/dev/null | sort -h
如果问题出现在某个特定目录,例如 /var,那么可以进一步深入:
du -sh /var/* 2>/dev/null | sort -h
不断深入下去,一般都能找到占用量异常的子目录,如 log、lib、cache 等。在香港服务器的运维实践中,Nginx、PHP-FPM、MySQL、Docker 和系统日志目录都是常见的大文件源头。
除了正常文件,大量临时文件也是磁盘占用的重要来源,尤其是在 PHP、Node.js 或 Python Web 应用频繁生成 session、缓存和编译产物时。这类内容通常位于 /tmp、/var/tmp、/var/cache 等位置,清理时需要特别关注。通过如下命令可以快速查看临时目录占用情况:
du -sh /tmp /var/tmp /var/cache 2>/dev/null
如果这些目录占用异常,可以结合创建时间和访问时间判断是否可删:
find /tmp -type f -mtime +3 -exec rm -f {} \;
不过,删除前务必确保不会误删正在使用的进程文件。
系统日志是香港服务器大文件的另一重要来源,尤其当服务器遭遇攻击、挂马、错误循环、循环重启等异常时,日志增长速度可能是指数级的。系统日志主要集中在 /var/log 目录,可以通过以下命令整体检查:
du -sh /var/log/* | sort -h
管理员常常会看到 syslog、messages、kern.log、audit.log 等文件动辄几十 GB。如果日志文件正在持续增长,可以使用 tail 命令查看实时内容,判断是否有异常进程:
tail -f /var/log/syslog
如果是循环报错导致日志爆增,需要从应用层解决,而不是仅仅删除文件。
在香港服务器中,Docker 环境产生的大文件问题尤其普遍。Docker 的容器日志、镜像层、卷数据都会占用大量空间,而许多运维人员忽略了 Docker 默认将日志以 JSON 形式保存,且没有限制日志大小。在排查时,可以使用:
docker system df
查看整体占用情况。若日志过大,可以检查容器日志目录:
du -sh /var/lib/docker/containers/*/*-json.log
如果日志过大,可以安全地清空:
truncate -s 0 /var/lib/docker/containers/*/*-json.log
同时建议配置 Docker 日志轮转策略以防问题再次发生。
在查找大文件时,管理员经常会遇到 df 显示磁盘占满,而 du 占用量却远小的问题。这种现象通常由“删除但仍被进程占用的文件”引起。在 Linux 中,当某文件被删除后,如果进程仍在使用该文件的 fd(文件句柄),其占用不会释放,导致空间看似消失。找出这类隐藏文件需要使用 lsof 命令:
lsof | grep deleted
若出现类似:
php-fpm 1234 /tmp/some-big-file (deleted)
说明该文件已经被删除但仍被进程占用。解决方法是重启对应服务,例如:
systemctl restart php-fpm
重启后,系统将释放占用的空间。
某些时候,香港服务器采用 cPanel、宝塔等面板管理,面板自身的备份文件、网站日志、数据库备份等,也会导致磁盘迅速占满。这些备份文件通常位于 /www/backup、/home/backup 或 /root/backup,可以通过以下命令检查:
du -sh /www/backup /home/backup /root/backup 2>/dev/null
如果发现大量时间长久的备份,应根据业务策略进行清理或转存。
另一个常见占用来源是异常任务或恶意脚本。某些情况下,网站被挂马或服务器遭遇木马后,会在隐藏目录中生成大量日志、缓存或数据文件。运维人员可以利用 find 搜索大文件:
find / -type f -size +500M -exec ls -lh {} \;
这将帮助你定位任何超过 500MB 的文件,有助于识别异常文件。如果发现出现在奇怪目录下,大多数情况下都属于安全风险,应立即分析和处理。
此外,系统快照和内核更新缓存也可能会造成大量占用。某些系统如 CentOS、Ubuntu 会在更新内核后保留旧版本内核文件,可以通过以下命令查看:
rpm -q kernel
或者删除旧内核:
yum remove kernel-oldversion
快照问题通常出现在 LVM 或云平台的备份功能开启但未清理的情况下,需要分别处理。
当彻底排查并清理完毕后,建议构建一个长期的磁盘监控方案。包括定期执行日志轮转、清理临时文件、限制 Docker 日志、监控磁盘增长曲线等。对于香港服务器而言,由于网络访问速度快、业务量大、日志量高,持续监控显得尤为重要。可以通过 cron 定期执行空间检查并发送告警:
df -h | mail -s "Disk Report" admin@example.com
经过系统化排查,可以清晰找到空间占用源头,无论是系统日志爆增、大型备份文件、Docker 内容膨胀、临时文件堆积,还是被删除但未被释放的进程文件。每个阶段都有明确的方法可循,而不是盲目删除文件。在处理过程中,要确保不会误删关键文件,也要注意避免影响正在运行的业务。一个良好、规范且自动化的磁盘管理体系,可以有效降低香港服务器磁盘占满带来的运维风险。
推荐文章
