Linux 磁盤空間佔滿故障解決方法

故障排查:

使用命令查看磁盤使用量

# 使用人類可讀的格式(預設值是不加這個選項的...)
df -h
# --inodes 列出 inode 資訊,不列出已使用 block
df -i
# 查看當前目錄下各個文件及目錄佔用空間大小
du -sh /

在這裏插入圖片描述
在這裏插入圖片描述

情況一:一般磁盤空間滿了,是由於服務器上面跑的服務日誌引起的佔用太多空間,去刪除多於的大文件就可以了。

# 從根盤開始查找大於100字節的文件(字節數可以自己設置)
find / -size +100c -print
# 也可以使用如下命令將文件列出來(注意空格)
find / -size +100c -exec ls -l {} \;

情況二:如果df -hT查詢出來磁盤佔用滿了,但是使用 du -sh 查看沒有那麼多。

  1. 原因:使用rm 命令刪除文件時,只有當前文件不存在任何link纔會被刪除當有進程訪問這個文件時,這個文件實際佔用空間不會被釋放。du 是根據文件名進行空間統計,使用rm 時該文件對系統來說已經不可見,所以不會統計這個文件。使用df 則是磁盤實際佔用的數量
  2. 解決方法:
# 查看正在使用的已刪除得文件
lsof|grep delete
# 發現存在多個這樣文件,kill 掉進程文件刪除成功
kill <進程id>

情況三:因爲認爲的誤操作,導致某些進程在沒有執行完成時被kill 掉了,但是緩存中的程序沒有釋放,仍然在運行,這會產生一些臨時文件佔用的磁盤空間資源,這種現象的特點是爆發式增長,在很短時間內就將磁盤空間佔滿。

  1. 如果因爲父進程被殺掉,子進程還運行導致,那麼最簡單,kill 子進程,就會釋放;
  2. 如果能用ipcs 命令確認是那個用戶進程,那麼也不困難,順着使用ipcrm 命令就行;
  3. 執行進程的用戶是比較關鍵用戶如:root用戶、有實例的oracle 用戶、在線生產用戶等。那麼建議在確定一位是共享緩存的原因導致的問題後重啓服務器;
發佈了29 篇原創文章 · 獲贊 15 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章