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

Ubuntu下文件夹大小超出磁盘实际容量的异常问题求助

Ubuntu下文件夹大小超出磁盘实际容量的异常问题求助

兄弟,这种情况确实让人一脸懵——明明源盘才2TB,怎么复制起来能跑出2.8TB的量?先别急,大概率不是硬件坑人,咱们一步步排查:

先理清楚你的背景:

  • 有一块2TB的ext4备份盘,df -h显示已用约1.7TB(90%+)
  • 新买4TB盘做成LVM+ext4,打算先复制数据再把2TB盘并入成6TB卷
  • 用MC在screen里复制,结果MC显示正在复制2849GB,远超源盘总容量

最可能的原因:硬链接搞的鬼

ext4里的硬链接会让多个文件路径指向同一个实际数据块,df和du统计的时候会把这些硬链接合并计算(只算一次实际容量),但如果用普通的复制工具(比如MC默认的复制逻辑),会把每个硬链接当成独立文件复制,相当于重复拷贝同一份数据,总容量直接暴涨。

举个例子:你有一个10GB的文件,做了180个硬链接,du统计只算10GB,但复制后就会变成10*181=1810GB,加上其他文件就很容易突破2TB。

你可以先查源盘里的硬链接情况:

# 查找所有有多个硬链接的文件,先看前20个样本
find /path/to/2tb-mount-point -type f -links +1 | head -20

如果输出很多结果,那基本就是这个问题了。解决方法是换用支持保留硬链接的工具复制,比如:

# rsync默认保留硬链接,不会重复复制数据,还能看进度
rsync -av --progress /path/to/2tb-mount-point/ /path/to/4tb-mount-point/

其次,区分df和du的统计差异

df统计的是文件系统层面的已用空间,包括已删除但被进程占用的文件(比如某个日志文件被删了,但服务还在运行,没释放文件句柄,df就还会把它算进去,但du统计不到)。不过这种情况是df显示的已用空间比du大,和你的情况相反,但也可以排查确认:

# 查看源盘实际文件占用的总大小
sudo du -sh /path/to/2tb-mount-point
# 对比df的统计结果
df -h /path/to/2tb-mount-point

如果du的结果接近2.8TB,那说明源盘里的文件实际占用就是这么多,df的1.7TB是因为硬链接被合并统计了。

另外,检查MC的统计是否准确

有时候MC的进度统计可能有bug,比如重复计算了正在复制的临时文件,或者对稀疏文件(文件里有大量空洞,实际占用空间小但逻辑大小大)的统计有误。你可以先暂停MC的复制,用命令看看已经复制的文件实际占用了多少空间:

du -sh /path/to/4tb-mount-point/copied-folder

如果是稀疏文件的问题,用rsync复制也能解决——它默认支持稀疏文件,不会把空洞填成0占用额外空间。

先试试上面的排查步骤,有结果了可以再补充信息,应该能找到问题根源!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:14:32