繁体   English   中英

NFS 上的 du 和 df 结果之间存在巨大差异

[英]huge difference between du and df results' on NFS

我知道有几个关于“du 和 df”的主题,但我的主题似乎与我不同。

下面,正如您所看到的,我的 NFS 挂载的使用率为 %53 和 106 GB。

[root@myhost imp_test]# df -kh
Filesystem                                              Size  Used Avail Use% Mounted on
devtmpfs                                                 32G     0   32G   0% /dev
tmpfs                                                    32G  856K   32G   1% /dev/shm
tmpfs                                                    32G  433M   31G   2% /run
tmpfs                                                    32G     0   32G   0% /sys/fs/cgroup
/dev/sda1                                                80G  4.5G   76G   6% /
/dev/sdc                                                 40G  475M   40G   2% /var/log
NFS Mount                                               200G  106G   94G  53% /usr/imp_test
tmpfs                                                   6.3G     0  6.3G   0% /run/user/65215

然而,实际使用情况完全不同(我缩短了文件名,所有这些文件都是使用 pg_dump 生成的 PostgreSQL 转储文件)。 我想指出“myfiles_x”和“myfiles_y”文件。

[root@myhost imp_test]# cd /usr/imp_test
[root@myhost imp_test]# du -sh *
17G     myfiles
25G     myfiles
12G     myfiles
4.3G    myfiles
23M     myfiles
62G     myfiles_x
62G     myfiles_y
7.8G    myfiles

只有这些文件占用 124 GB。 从所有其他问题我知道 du 和 df 的结果不能匹配,但在所有这些问题上(据我检查)“df”结果的使用率高于“du”s output。大约,总和“du”的 output 是 190GB,是“df”结果的 2 倍。

顺便说一句,“myfiles_x”和“myfiles_y”是完全相同的文件,但名称不同,并且它们之间没有符号链接。

怎么可能或者我错过了其他东西?

谢谢!

根据这个答案,您的 shell 可能会扩展符号链接。

概括:

*是一个 shell 球体; 在运行任何命令之前,它由 shell 扩展。

您可能希望在du之前使用find (因为 bash shell 没有为您提供不扩展符号链接的选项)。

find示例:

find ./ -mindepth 1 -maxdepth 1 -type d -name myfiles* -exec du -sh {} +

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM