我注意到,对于我来说,使用“ncdu”或“df”时根目录的可用磁盘空间存在很大差异:
df-钍:
dev devtmpfs 7,8G 0 7,8G 0% /dev
run tmpfs 7,8G 1,4M 7,8G 1% /run
/dev/nvme0n1p2 ext4 25G 19G 4,3G 82% /
tmpfs tmpfs 7,8G 77M 7,7G 1% /dev/shm
tmpfs tmpfs 7,8G 0 7,8G 0% /sys/fs/cgroup
tmpfs tmpfs 7,8G 50M 7,7G 1% /tmp
/dev/loop1 squashfs 4,3M 4,3M 0 100% /var/lib/snapd/snap/ngrok/11
/dev/loop0 squashfs 91M 91M 0 100% /var/lib/snapd/snap/core/6405
/dev/nvme0n1p1 vfat 246M 56M 191M 23% /boot
/dev/mapper/home ext4 428G 52G 354G 13% /home
tmpfs tmpfs 1,6G 20K 1,6G 1% /run/user/
北卡罗莱纳大学
10,5 GiB [## ] /usr
3,5 GiB [ ] /var
72,0 MiB [ ] /opt
55,1 MiB [ ] /boot
45,9 MiB [ ] /tmp
“ndcu” 显示根目录的可用空间比“df”多出约 5.5gb。我是否遗漏了什么,或者为什么会有这么大的差异?提前致谢!
答案1
可能的情况
有各种其他文件系统安装在各种安装点下,这些安装点(自然)位于 的更深层/
。如果根文件系统在那些位置包含文件,df
仍将“计算”它们(因为它查询文件系统本身)但du
不会(因为它扫描可用树)。
例子
刚/
挂载后,/home
包含 4 GB 数据。然后另一个文件系统挂载在/home
,它包含 52 GB 数据。在这种情况下:
- 根文件系统仅报告它自己的使用量为
df
,其中包括那 4 GB。 ncdu
扫描目录树。在/home
其中可以看到 52 GB其他filesystem;ncdu -x
完全跳过此步骤。在这两种情况下,您都会忽略/home
它,因为您知道它是另一个文件系统。
结果,当你把所有相关的行加起来之后ncdu
,你仍然会错过那 4 GB。
确认
在其他地方绑定挂载相同的文件系统(注意-B
不挂载子挂载):
sudo mount -B / /mnt/elsewhere
分析ncdu /mnt/elsewhere
结果。 中是否有数据/mnt/elsewhere/home
,/mnt/elsewhere/boot
或者其他通常由子挂载覆盖的目录中是否有数据? 它能解释差异吗?
在删除任何内容之前,请确保您知道自己在做什么。最后运行sudo umount /mnt/elsewhere
卸载。
答案2
df -Th
显示“可用”磁盘空间。即使以 root 身份运行,这也是不含为 root 用户保留的磁盘空间(通常约为 5%)的可用空间。
ncdu
以 root 身份运行时,将考虑磁盘上的所有实际可用空间,包括为 root 保留的空间。这就是为什么它报告的“可用”空间比df
报告的“可用”空间更多。
有关该保留空间以及如何更改其大小的更多信息,请参阅我的问题的答案这里。