在linux中,當我們使用rm在linux上刪除了大檔案,但是如果有程序開啟了這個大檔案,卻沒有關閉這個檔案的控制代碼,那麼linux核心還是不會釋放這個檔案的磁碟空間,最後造成磁碟空間占用100%,整個系統無法正常執行。這種情況下,通過df和du命令查詢的磁碟空間,兩者是無法匹配的,可能df顯示磁碟100%,而du查詢目錄的磁碟容量占用卻很小。
遇到這種情況,基本可以斷定是某些大檔案被某些程式占用了,並且這些大檔案已經被刪除了,但是對應的檔案控制代碼沒有被某些程式關閉,造成核心無法**這些檔案占用的空間。
那麼,如何查詢那些檔案被某些程式占用呢,命令如下
lsof -n | grep deletedcommand pid user fd type device size node name
dd 31708 higkoo 1w reg 8,2 5523705856 429590 /data/filetest (deleted)
命令打lsof -n | grep deleted印出所有針對已刪除檔案的讀寫操作,這類操作是無效的,也正是磁碟空間莫名消失的根本原因
備註:本人遇到的場景是同事刪除了mysql的表,但是是在shell上執行rm表的檔案,而不是通過drop table之類的命令去刪除表的,於是mysql會一直占用這些表檔案的控制代碼,最後造成磁碟空間100%,這種情況下,也不用重啟mysql,只要進入mysql客戶端執行flush tables就行了
參考資料
Linux磁碟空間被未知資源耗盡
在linux中,當我們使用rm在linux上刪除了大檔案,但是如果有程序開啟了這個大檔案,卻沒有關閉這個檔案的控制代碼,那麼linux核心還是不會釋放這個檔案的磁碟空間,最後造成磁碟空間占用100 整個系統無法正常執行。這種情況下,通過df和du命令查詢的磁碟空間,兩者是無法匹配的,可能df顯示磁碟...
linux擴充套件磁碟空間
利用剩下的自由空間 建立乙個物理分割槽 將這個物理分割槽裝換為物理卷 把這個物理卷新增到要擴充套件的卷組中 然後才能用extend命令擴充套件此卷組中的邏輯卷 1.首先要再建立乙個物理分割槽 使用fdisk dev sda,選擇n來建立乙個新的分割槽比如sda3,主分割槽還是邏輯分割槽對此例子無所謂...
linux檢視磁碟空間
如果要檢視磁碟還剩多少空間,當然是用df的命令了。root localhost df h 檔案 系統 容量 已用 可用 已用 掛載點 dev sda2 14g 11g 2.6g 82 dev sda1 99m 14m 81m 14 boot tmpfs 442m 275m 168m 63 dev s...