我的服务器附加了 130 GB 的卷。
为了检查可用磁盘空间,我运行df -h -x tmpfs -x squashfs | grep -v /run/shared
并得到:
Filesystem Size Used Avail Use% Mounted on
udev 965M 0 965M 0% /dev
/dev/xvda1 128G 111G 13G 90% /
但是,当我想要了解磁盘使用情况的详细信息时,通过ncdu
在根目录上运行,我得到:
. 55,7 GiB [######### ] /home
. 24,0 GiB [#### ] /var
. 2,4 GiB [ ] /usr
1,0 GiB [ ] swapfile
598,6 MiB [ ] /lib
63,0 MiB [ ] /boot
9,4 MiB [ ] /sbin
9,1 MiB [ ] /bin
. 8,1 MiB [ ] /etc
. 4,3 MiB [ ] /tmp
. 2,7 MiB [ ] /run
! 24,0 KiB [ ] /root
! 16,0 KiB [ ] /lost+found
4,0 KiB [ ] /lib64
e 4,0 KiB [ ] /opt
e 4,0 KiB [ ] /mnt
e 4,0 KiB [ ] /media
! 4,0 KiB [ ] /gandi
. 0,0 B [ ] /proc
. 0,0 B [ ] /sys
0,0 B [ ] /dev
@ 0,0 B [ ] initrd.img.old
@ 0,0 B [ ] initrd.img
@ 0,0 B [ ] vmlinuz.old
@ 0,0 B [ ] vmlinuz
e 0,0 B [ ] /srv
与上一条命令返回的可用磁盘空间(111 GB)有约27 GB的差异。
这种差异从何而来?
谢谢。
答案1
这个问题经常出现。简短的回答是du
使用df
不同的方法来获取数据。
文件系统在文件系统中分配磁盘块来记录其数据。这些数据称为元数据,大多数用户级程序(如 du)都看不到它。元数据的示例包括 inode、磁盘映射、间接块和超级块。
这杜命令是一个用户级程序,它不了解文件系统元数据,而 df 查看文件系统磁盘分配图并了解文件系统元数据。 自由度获得真实的文件系统统计信息,而 du 只能看到部分情况。