df和du磁碟空間不一致

2021-07-10 14:20:05 字數 628 閱讀 6543

最近在伺服器上部署了一套服務,服務執行過程中不小心把日誌檔案給刪除了,測試了一下沒有影響服務的正常執行,而且沒有日誌後處理的操作就不以為意的扔那了,但不經意間也埋下了乙個巨大的坑。收到伺服器磁碟報警的時候就df看了一下滿了,但是du -h看的時候發現才總共130g的磁碟採用了20g不到。

df -h :磁碟空間是滿的

du -h :磁碟占用才20g不到

du -h

du -sh命令通過將指定檔案系統路徑下所有的目錄、符號鏈結、檔案使用的塊數累加起來得到總塊數以及總大小。它會遍歷這個目錄,針對所有真實存在的檔案、目錄等彙總,給出最終結果

df -h

首先,獲取這個檔案的檔案控制代碼,這是會判斷這個檔案是否存在!

然後,程式所有的寫入操作僅僅使用檔案控制代碼,而不再關注具體檔案是否存在!linux中允許對乙個正在寫入的檔案進行刪除rm或者移動mv。應用程式獲取控制代碼,就直接指向到了磁碟位置,到了資料塊的級別上進行寫入了,不再檢查資料塊所屬的檔案是否存在。這時候的寫入,對於其他人,由於訪問的入口–檔案–不存在了,所以是看不到其寫入的內容的!

lsof -n | grep deleted

找到開啟的但被刪除的檔案,然後找到使用這個檔案的服務重新啟動就可以了。這個時候再用df -h 去檢視磁碟空間已經正常了。

du 與df 統計系統磁碟不一致原因與解決方法

事件起因 同事發現雲主機磁碟系統盤滿了,準備清理系統盤,便利用du 命令統計了根目錄下各資料夾的大小,發現統計的各資料夾的大小總和 加起來比 df 命令檢視到的系統盤所使用空間 要小很多。這裡記錄下解決方法 了解下df與du的工作原理 dudu命令會對待統計檔案逐個呼叫fstat這個系統呼叫,獲取檔...

df和du顯示空間不一致,最新解決方案來了

下面的方法我基本可以保證,如果df和du顯示空間不一致,除了普遍的解決方法外,網路上你根本搜尋不到!除非你是linux高手!高手在此我們膜拜!在分析df和du查到的結果不一樣之前,我們先來了解下linux的df和du命令有什麼不同。這個大家可以從網上很直觀的搜尋到,一艘一大片,我們在這裡還是要囉嗦一...

快取不一致

當程式在執行過程中,會將運算需要的資料從主存複製乙份到cpu的快取記憶體當中,那麼cpu進行計算時就可以直接從它的快取記憶體讀取資料和向其中寫入資料,當運算結束之後,再將快取記憶體中的資料重新整理到主存當中。舉個簡單的例子 i i 1。當執行緒執行這個語句時,會先從主存當中讀取i的值,然後複製乙份到...