我的伺服器附加了 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)來說是不可見的。元資料的範例有索引節點、磁碟映射、間接區塊和超級區塊。
這杜command 是一個使用者級程序,不知道檔案系統元數據,而 df 查看檔案系統磁碟分配映射並知道檔案系統元資料。 df獲得真實的文件系統統計信息,而 du 只能看到部分情況。