NFS挂载中du与df结果差异过大的问题排查求助
问题分析与解决
你的情况是du统计的文件逻辑大小总和远大于df显示的实际磁盘占用,核心原因集中在以下两点:
1. NFS存储端启用了重复数据删除
如果你的NFS服务器所在的存储系统(比如ZFS、Btrfs,或者专用存储设备)开启了重复数据删除功能,内容完全一致的myfiles_x和myfiles_y会被识别为重复数据,存储端只保留一份物理副本。
du -sh *统计的是每个文件的逻辑大小,所以两个62G的文件会被分别计数,总和里重复计算了124G;df统计的是存储端实际物理占用的空间,这两个文件只占用62G,最终导致df的已用空间(106G)远小于du统计的总和(约190G)。
2. 两个文件是硬链接(而非符号链接)
你提到“无符号链接关联”,但硬链接和符号链接是不同的:
- 硬链接是指向同一个inode的不同文件名,没有符号链接的
ln -s标识; - 执行
ls -li myfiles_x myfiles_y,如果两个文件的inode号相同,说明是硬链接; - 这种情况下,
du -sh *会显示每个文件的逻辑大小(单独指定文件时),所以两个文件都显示62G,但实际物理空间只占用62G,df统计的是实际占用,因此总和会比du的统计小。
验证步骤
- 联系NFS存储管理员,确认存储系统是否开启了重复数据删除;
- 执行
ls -li myfiles_x myfiles_y,对比inode号判断是否为硬链接; - 执行
du -sh /usr/imp_test统计整个目录的实际占用,若结果接近df显示的106G,即可验证上述结论。
内容的提问来源于stack exchange,提问作者Umut TEKİN
相关产品推荐
相关产品推荐

