磁盤被佔滿   系統出現 no space left on 報錯(block被佔滿/inode被佔滿)


系統出現 no space left on 報錯 但是使用df -h 發現磁盤並沒有滿

企業中在什麼情況下會發生

解答:

ext4文件系統在格式化的時候會創建inode 和 block 

磁盤空間滿是由inode和block兩個標準來決定的

題意說用df -h 查看沒有滿 df -h 是查看block塊的說明block塊沒有滿所以應使用df -i 查看inode是否滿了

1 block被佔滿

定位問題

1、查看實際文件佔用空間的大小

#  mount | awk '/sd|hd/{print $3}' | xargs -i du -sh {} 2>/dev/null | sed -r 's#([^ \t]*)[ \t]*(.*)#echo -e  "`mount | grep "\\b \2 \\b" | cut -d " " -f1`\\t\1\\t\2" #g' | bash
/dev/sda2    1.6G    /
/dev/sda1    34M    /boot

2、使用df查看block佔用量

#  df -h | awk -F "[ \t]*" '/sd|hd/{print $1"\t"$3"\t"$6}'
/dev/sda2    1.6G    /
/dev/sda1    36M    /boot

3、比較(1)和(2)的結果 

1> (1)和(2)的結果不相等

# lsof | grep deleted  查看是否有刪除了的文件還在被程序調用

  確認該數據不是誤刪除的文件

  重啓調用該文件的程序

2> (1)和(2)的結果相等

# find / -type f 2>/dev/null | xargs du 2>/dev/null | sort -n | taildf  查看佔用系統空間最多的文件

確認該文件已經無用

使用 >/路徑/路徑  清空該文件

2 inode被佔滿

定位問題

查看小文件最多的目錄

# find / -type f -size -1k | xargs -i dirname {} | sort | uniq -c | sort -n | tail

在確定該目錄下的小文件沒用之後

# find /路徑/路徑 -size -1k -type f | xargs rm -f
刪除過多的小文件


感謝老男孩教育 感謝強哥

www.oldboyedu.com

www.etiantian.org

http://oldboy.blog.51cto.com/

http://8078255.blog.51cto.com/8068255/1746570





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章