You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定位托管服务器存储占用持续增长的根源?

如何定位托管服务器存储占用持续增长的根源?

兄弟,我太懂你这种看着存储蹭蹭上涨却找不到源头的焦虑了!结合你的情况,给你分享几个实战好用的工具和排查思路,都是踩坑后总结出来的干货:

一、实时抓现行:追踪动态文件变化

  • inotifywait:这个工具能实时盯紧文件系统的一举一动,比如文件创建、写入、删除操作。你可以先把可疑目录(比如日志、临时文件目录)纳入监控,命令这么用:
    inotifywait -m -r -e create,modify,delete /path/to/target/dir
    
    -m是持续监控不退出,-r递归监控子目录,-e指定要盯的事件类型。一旦有文件被写入或创建,立刻就能看到,方便当场抓“元凶”。
  • fatrace:这个工具更全面,能记录系统里所有进程的文件I/O操作。安装后直接跑fatrace,它会输出所有读写动作,你可以过滤只看写入操作:
    fatrace | grep W
    
    这样就能精准定位到哪个进程在疯狂写文件。

二、按时间维度排查:找近期变大的文件

  • find命令精准定位:如果你不知道什么时候文件涨的,可以找最近一段时间修改或创建的大文件。比如找24小时内修改过、大小超过1G的文件:
    find / -type f -mtime -1 -size +1G -exec ls -lh {} \;
    
    要是想找几小时内的,把-mtime -1换成-mmin -60(60分钟内)就行,更精准。
  • ncdu交互式对比:比你用的du -ms|sort -rn直观多了,它是树形结构展示目录占用,还能交互式操作。你可以隔几个小时扫一次,对比差异:
    1. 第一次扫描导出结果:ncdu -o scan_initial.txt
    2. 过段时间再扫一次:ncdu -o scan_later.txt
    3. 对比两次结果:ncdu -d scan_initial.txt scan_later.txt
      这样增长最快的目录或文件就一目了然了。

三、排查容易被忽略的“隐形”占用

  • 临时文件与缓存:很多程序会在/tmp、/var/tmp或者自身缓存目录生成临时文件,要是程序崩溃没清理,就会越积越大。先看看这些目录的大小:ls -lh /tmp,也可以用tmpwatch自动清理过期临时文件(操作前确认哪些文件可以删)。
  • 日志文件“爆仓”:日志绝对是存储增长的重灾区!比如Web服务器、应用程序的日志,可能因为某个循环错误,每分钟生成几百M日志。先看/var/log下的文件大小,再用tail -f实时看日志内容,有没有重复的错误信息。另外检查下logrotate配置,是不是日志轮转失效了,导致日志文件一直变大没分割。
  • 已删除但未释放的文件:有时候文件删了,但进程还在占用它,磁盘空间不会释放。用这个命令找这类文件:
    lsof | grep deleted
    
    找到对应的进程后,重启它就能释放空间了。比如某个服务的日志文件被删了但服务没重启,就会出现这种情况。

四、长期监控:摸清增长规律

  • 定时记录存储情况:用cron加个定时任务,每天记录各目录的占用情况,方便对比变化:
    # 每天凌晨2点记录根目录各子目录的占用
    0 2 * * * du -ms / | sort -rn > /var/log/disk_usage_$(date +%Y%m%d).log
    
  • 磁盘I/O监控:用dstat或iostat监控磁盘写入速率,看什么时候写入量突然飙升,结合时间点去排查当时的进程活动:
    # 带时间戳显示磁盘读写情况
    dstat -t -d
    

按照这些方法一步步排查,应该很快就能找到那个偷偷吃你存储空间的“元凶”!

备注:内容来源于stack exchange,提问作者Dennis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:23:06