這讓我困惑了一段時間。我使用的是 Ubuntu 11.04。我的根分區已滿,但我不知道是什麼原因造成的。更奇怪的是,當我運行時df -h
,這是輸出:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.2G 8.8G 0 100% /
正如您所看到的,應該有大約 400 MB 的可用空間,但Avail
顯示為 0。我甚至卸載了一些程式來釋放空間,它又被填滿了。也歡迎就如何找出哪些文件(如果有的話)填滿空間提出建議。
答案1
第一個鏡頭:錯誤日誌中的高流量。我想如果你會下載視頻,你就會知道。 :)
sudo du -sh /var/log
- -s 是摘要
- -h 是人類可讀的(k、M、G、T)後綴
對我來說是 20M,除了日誌目錄之外,還有一個安裝快取。使用
apt-get clean
如果這是你的問題。
當然,您應該檢查 /home 是否在您的根分區中。
如果您必須迭代搜尋大文件,我可以建議一系列命令,這些命令可以重複,並且在第一個初始步驟之後非常快:
- 您從頂層的可疑目錄開始
- 然後搜尋所有子目錄和檔案的大小,並按數字排序:
sudo du -s /var/* | sort -n
0 /var/crash
4 /var/www
44 /var/games
124 /var/run
2306 /var/tmp
18538 /var/log
251876 /var/cache
1053231 /var/lib
- 為了保持簡短,我刪除了這個例子。所以我們看到,最大的子目錄是 /var/lib,並對 /var/lib 重複這個步驟。現在搜尋速度快得多,因為計算結果以某種方式快取:
sudo du -s /var/lib/* | sort -n
78116 /var/lib/apt-xapian-index
104580 /var/lib/dpkg
680503 /var/lib/postgresql
等等。遵循最大的目錄來尋找更大的檔案。此處不能使用 -sh,因為數字排序不適用於千位元組等的 k/M/G/T。
答案2
格式化後,ext2/3/4 檔案系統會保留一定百分比的磁碟空間供 root 使用者獨佔使用。預設為 5%。這樣做的目的是,即使非特權使用者填滿了所有可用的磁碟空間,系統也可以繼續工作並能夠啟動。
一般來說,填充任何檔案系統超過其容量的 95% 並不是一個好主意,因為這會導致過多的碎片,從而導致效能下降 - 即使在釋放磁碟空間之後也是如此。
從man mke2fs
:
-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks
reserved for the super-user. This avoids fragmenta‐
tion, and allows root-owned daemons, such as
syslogd(8), to continue to function correctly after
non-privileged processes are prevented from writing
to the filesystem. The default percentage is 5%.
如果你絕對絕望,你可以用來tune2fs
改變這個值。查看man tune2fs
更多信息