
我遇到一個問題,其中 df 結果不可靠。我在 sles 11 sp3 上使用 xfs 檔案系統。
基本上,清除磁碟快取之前和之後的可用大小之間存在很大差異(幾GB)。任何人都知道為什麼磁碟快取使用額外的儲存空間。
例如:
VideoEdge:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
...
/dev/sdb2 870942208 824794856 46147352 95% /mediadb
/dev/sdc1 975746564 924536548 51210016 95% /mediadb1
/dev/sdd1 975746564 153177500 822569064 16% /mediadb2
VideoEdge:/ # echo 3 > /proc/sys/vm/drop_caches
VideoEdge:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb2 870942208 822225756 48716452 95% /mediadb
/dev/sdc1 975746564 923374888 52371676 95% /mediadb1
/dev/sdd1 975746564 148323524 827423040 16% /mediadb2
VideoEdge:/ # df
從上面可以看出,清理磁碟空間後,可用空間就變多了。
我們使用 df 來估計可以使用多少空間,並在 df 表示 stporage 已滿 95% 時嘗試刪除舊資料。由於磁碟快取佔用了不可預測的儲存空間,因此導致了問題。
有人知道為什麼磁碟快取會暫時消耗儲存空間嗎?有沒有辦法計算磁碟快取佔用了多少或磁碟快取可能佔用的最大值?
我們不想清除磁碟緩存,這可能會不時影響效能。
VideoEdge:/ # df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 8259484 5592116 2247724 72% /
udev 2021220 228 2020992 1% /dev
tmpfs 2021220 144 2021076 1% /dev/shm
/dev/sda1 8259484 5592116 2247724 72% /
/dev/sda3 463282160 75389072 387893088 17% /var
/dev/sdb1 104804356 32928 104771428 1% /var/opt/americandynamics/venvr/clipexport
/dev/sdb2 870942208 821370196 49572012 95% /mediadb
/dev/sdc1 975746564 923423496 52323068 95% /mediadb1
/dev/sdd1 975746564 148299180 827447384 16% /mediadb2
/dev/sdb2 on /mediadb type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
/dev/sdc1 on /mediadb1 type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
/dev/sdd1 on /mediadb2 type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,allocsize=4096k,noquota)
答案1
請參閱:
為什麼我的 XFS 檔案系統突然消耗更多空間並充滿稀疏檔案?
這是 XFS 動態預先分配功能的結果。這些基本上是合併寫入以防止文件碎片的文件緩衝區。有幾個解決方法。
du --apparent-size
可能會有幫助。- XFS 檔案系統的掛載選項,詳細資訊請參閱連結問題。
在這兩種情況下,您的檔案系統都處於危險的滿水平 (95%+)。考慮到利用率應該遠低於 80%,少量的緩衝區空間是無關緊要的。您也可以使用df
結果,因為這是在任何給定時間真正使用的結果。