系統盤空間莫名消失怎麼解
- 2019 年 10 月 8 日
- 筆記
問題原因 進程文件句柄數佔用 磁盤分區inode滿 掛載點覆蓋:原有文件系統目錄已經存在大量文件。從新掛載了新磁盤後,使用 df 命令統計的是新掛載目前使用空間
磁盤空間滿 (不多說,是地球人都知道怎麼處理)
1.關於磁盤的inode滿100%--i節點大爆發處理辦法
原因:
通常是發現磁盤沒有滿但是無法寫入文件。提示「no space left on device」
用df -i 查看,應該會發現相應的分區是100%
一般都是crontab的job有問題,造成/var/spool/clientmqueue中產生許多的零碎文件。
處理方法:
dumpe2fs -h /dev/sda2 | grep "Free inodes"(空閑inodes查看)
用rm -rf *會不能刪除,並會有相應的提示,大意是參數太多。
可以用多種方法,這裡提及一個我隨便寫的,
在/var/spool/clientmqueue/下執行命令:「lsattr ./|awk -F"/" '{print $3}'|xargs -i rm -rf {}」用lsattr列出./下面的文件名的屬性,用awk取出名字,然後rm -rf。
還有一個方法比較普遍的使用:「find /var/spool/clientmqueue/ -type f -exec rm {} ;」或者在/var/spool/clientmqueue/目錄下「find ./ -exec rm {} ;」。
將crontab中沒有定向輸出的行都在最後加上「> /dev/null 2>&1」,在刪除的過程中操作。或者先停止crontab,加上重定向。
如何增加磁盤的inode number 需要格式化
inode這個詞大多資料都是譯為索引節點,在ext3文件系統,調整磁盤的inode number。這裡只是調整inode number這個參數,如果想調整inode size或是blocksize等可以具體mkfs.ext3命令。
1。卸載文件系統
#>umount /data0
2。建立文件系統,指定inode節點數
#>mkfs.ext3 /dev/sda6 -N 」inode節點數「
3。修改fstab文件
#>vi /etc/fstab
/dev/sda6 /data0 ext3 defaults 1 2
4,掛載文件系統
#>mount -a
4。查看修改後的inode參數
#dumpe2fs -h /dev/sda2 | grep "Free inodes"(空閑inodes查看)
dumpe2fs 1.41.9 (22-Aug-2009)
Free inodes: 1825965
[注意]調整inode數會格式化磁盤,執行前應確定磁盤上沒有重要數據或是先備份數據
2.進程文件句柄數佔用空間處理
進程佔用了文件句柄數 所以空間沒有釋放,如果這些文件過多,會佔用很大的磁盤空間。
案例:刪除nginx日誌文件有23G 但是空間遲遲沒有釋放
du -h –max-depth=1 / | grep G 查看空間為G的文件

執行sudo losf | grep delete 查看是否存在文件句柄數


存在java進程ID 9616佔用了/var/log/nginx/game-access.logbak文件句柄,所以導致rm /var/log/nginx/game-access.logbak後空間沒有釋放
解決辦法: Kill 9616
3.掛載點覆蓋 (通常很難想到,也是最容易出現的問題)
先取消磁盤掛載,再檢查原掛載目錄下的空間佔用情況。
du -cksh * | sort -rn | head -n 10 查看排名前10的文件

du -h –max-depth=1 / 查看目錄空間

du -h –max-depth=1 / | grep G 查看空間為G的文件
