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

挂载500G数据盘到/data并迁移文件后根目录空间仍不足的问题求助

挂载500G数据盘到/data并迁移文件后根目录空间仍不足的问题求助

看起来你遇到了一个典型的磁盘空间已删除但未释放的问题,我来帮你分析下可能的原因和解决办法:

首先,你提到df显示根目录/用了36G,但du排除/data后只统计到12G,这种差异几乎都是因为有文件已经被删除,但仍然被正在运行的进程占用——Linux系统里,只要进程还持有该文件的句柄,磁盘空间就不会被释放,直到进程关闭或者重启。

第一步:排查被进程占用的已删除文件

直接用这个命令找出这类文件:

lsof | grep deleted

你会看到类似这样的输出(示例):

docker    1234  root    3r   REG    8,1  1073741824  123456 /var/lib/docker/overlay2/xxx/merged/file.log (deleted)

重点看那些大文件对应的进程PID和名称,比如你迁移了Docker目录,很大概率是Docker相关进程还在占用原来的旧文件。

第二步:释放被占用的空间

如果是Docker进程的问题,直接重启Docker服务就能释放这些被占用的空间:

systemctl restart docker

如果是其他进程,比如应用服务,先确认服务可以重启,然后重启对应的进程或服务即可。

其他可能的排查方向

  1. 检查隐藏文件:你用du -hsc * --exclude=data的时候,*不会匹配以.开头的隐藏文件/目录,可能漏掉了比如/.cache、/.local这类占空间的隐藏目录。可以用这个命令包含隐藏文件重新统计:
    du -hsc .[!.]* * --exclude=data | sort -hr
    
  2. 检查被挂载点覆盖的目录:比如如果之前你在/data目录下已经有文件,后来挂载了新磁盘到/data,原来的文件会被隐藏但仍然占用根盘空间。可以临时卸载/data看看:
    umount /data
    # 查看/data目录下是否有旧文件
    ls -lh /data
    # 看完后重新挂载
    mount /data
    
  3. 用更直观的工具排查:安装ncdu工具(apt install ncdu),然后在根目录运行ncdu,它会自动扫描并可视化显示所有目录的空间占用,还能排除虚拟文件系统,比du更方便。

总结

最可能的原因就是被进程占用的已删除文件,先试试重启Docker(因为你迁移了Docker目录),然后再看df的结果,应该就能看到根目录的空间释放了。如果还是不行,再用上面的其他方法排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:18:11