我有一台 Solaris 10 伺服器,它透過 NFS 安裝了遠端檔案系統。我相信遠端系統是 NetApp,但不清楚。
當我運行時,df -h <mountpoint>
我得到的大小為 12T,使用了 10T,容量為 87%。
當我更改為掛載點並運行時,ls -A |xargs du -s
我得到了大約 8 MB 的空間。我期望 du 遞歸下降並將所有檔案大小相加,但這裡似乎沒有這樣做。
作為對沖,我跑了
find <mountpoint> -ls | awk '{total=total+$7}END{print total}'
答案是 13006791645。
所以看來find -ls
和df
或多或少是一致的。為什麼你會失敗得如此嚴重?
PS:此指令ls -A
也會抓取隱藏的快照目錄,但 find 找不到任何內容(「偵測到循環」除外)。
答案1
du -s
以 512 位元組區塊的形式進行報告。由於不報告人類可讀的數據,df -h
因此無法進行比較。du
若要比較這兩個值,請使用du -sh <mountpoint>
或/usr/xpg4/bin/df -P
讓df
也以 512 位元組為單位進行報告。
根據man du
:
具有多個連結的檔案將僅針對一項進行計數和寫入。報告中選擇的目錄條目未指定。預設情況下,檔案大小以 512 位元組為單位寫入,向上捨入到下一個 512 位元組單位。
嘗試/usr/xpg4/bin/df -P
取得 512 位元組報告df
:
bash-3.2$ /usr/xpg4/bin/df -P /var
Filesystem 512-blocks Used Available Capacity Mounted on
rpool/ROOT/s10/var
1147797504 66061270 954397119 7% /var
並與du -s
:
bash-3.2$ du -s /var
65976060 /var
或者比較一下:
bash-3.2$ df -h /var
Filesystem size used avail capacity Mounted on
rpool/ROOT/s10x_u11wos_24a/var
547G 32G 455G 7% /var
和:
bash-3.2$ du -hs /var
31G /var