­

系統盤空間莫名消失怎麼解

  • 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的文件