1. 程式人生 > >Linux系統奇怪的磁碟佔用解決記錄

Linux系統奇怪的磁碟佔用解決記錄

近日我所維護的一臺伺服器執行出現了異常,翻開程式執行日誌,初步發現問題是某個過程無法建立新臨時檔案。 再仔細閱讀日誌,看到了Java報出的Java.io.IOException; there is not enough space on the disk

那麼問題就很明顯了,磁碟佔滿了。但是這事本身就讓我很費解,因為這個伺服器上所跑的程式不會長期儲存檔案, 只是一個數據加工伺服器,把傳入的檔案進行一定的處理然後再回傳,期間會產生一些臨時檔案,但都會在處理 過程結束後自動刪除掉。我第一想到的就是,會不會是這個自動刪除的功能沒做好,導致臨時檔案堆積如山, 但是經過檢查,包括系統其他程式在內所產生的臨時檔案不到1G,根本不足以佔滿系統。

我執行df命令檢視磁碟的佔用情況,看到了4個磁碟掛載點,發現是掛載在/上的磁碟總共50GB被佔滿了。 於是我在根目錄執行du -h -x --max-depth=1想看看是哪個目錄佔用的這麼多空間,我好判斷到底出什麼問題了, 這個命令中的-x引數會讓du命令不統計不在同一個磁碟分割槽上目錄,或換句話說,忽略其他的磁碟掛載點。 結果令人崩潰,根本不用看哪個目錄有問題,整個根目錄總共統計,磁碟只佔用了5.5GB。 那麼50GB的磁碟被佔滿了,但是實際統計磁碟上的檔案,總共卻只有5.5GB大小,那麼剩餘的44.5GB被什麼鬼用掉了?

我只好進行我的Google功課,然後認識到了幾點非常重要的Linux特性。這個特性我以前也知道,卻沒有重視。 就是在Linux的檔案系統中刪除一個檔案,系統並不會真的立刻把這個檔案丟棄掉,而只是把它從檔案的目錄系統中移除, 只有確保所有使用這個檔案的程式全部都退出後,才會真的把檔案徹底刪除掉。所以這些幽靈檔案還會佔用磁碟空間, 不過這些幽靈檔案並不會出現在df

命令的統計中去,因為它們已經不存在於任何目錄當中了。

檔案系統作為Linux最核心的部件,工具也是最齊全的。lsof此時就可以針對此問題進行檢查了,這個命令是用來 列出整個系統中所有被開啟的檔案(順便還可以檢視所有已經啟動的硬體裝置以及開啟的網路連線等)。 已經從目錄系統中移除,但任然被程式佔用的的檔案可以用lsof | grep '(deleted)'來檢視。 經此我立刻就發現了我的問題在哪裡了:有一個已經被“刪除”掉的日誌檔案,因為並沒有關閉或重啟程式, 該檔案還在一直被使用著,還在忠實地記錄著程式的執行狀態。該程式已經持續執行半年了,而且日誌檔案一直都是 以同一個檔案開啟描述進行操作(日誌檔案只在程式開始時開啟過一次,後面一直用這個開啟的檔案), 這個日誌檔案已經漲到40多GB了。

找到問題後,解決就簡單了,我重啟了那個程式,立刻40多G的佔用空間就歸還給了系統,所有程式都執行正常了。 當然這只是權宜之計,解決眼前問題採取的快速措施。要根除此問題就要用更科學的方式記錄日誌,使用已經成熟的 日誌系統是個比較正確的選擇

相關推薦

Linux系統奇怪磁碟佔用解決記錄

近日我所維護的一臺伺服器執行出現了異常,翻開程式執行日誌,初步發現問題是某個過程無法建立新臨時檔案。 再仔細閱讀日誌,看到了Java報出的Java.io.IOException; there is not enough space on the disk。 那麼問題就

查詢Linux系統中的佔用磁碟空間最大的前10個檔案或資料夾

   當磁碟空間被迅速佔用的時候,我們必須找出一些,比較佔用磁碟空間的檔案或者資料夾。通常情況下,最有可能找出佔用磁碟空間檔案或資料夾的地方,主要是 /tmp or /var or /home。       目前沒有單個命令來

Linux系統中inode佔用100%的解決辦法

當你的 Linux 系統無法建立新檔案時,有可能是你的磁碟滿了,還有可能是你的磁碟的 inode 用光了,我們今天要說的就是後一種情況,要解決這個問題,只能是刪除一些檔案,但是一般情況下,其實是你的系統中的某個地方產生了大量的你並不需要的檔案,你要做的就是找到他們並刪除就可以了,我並不是讓你刪除你有用的檔案,

Linux 系統出現電流音解決方案

dex spa 性能 導致 資料 target lin evel eve 迫於Windows 系統最近的各種故障,今天脫坑換了openSUSE Linux ,在上網途中播放視頻時偶爾會出現電流音,雖然影響不大,但是還是進行了一些排查。 通過觀察電流音出現時的系統負載的波段,

Linux系統常用磁碟陣列RAID5詳解

RAID5最少由3塊硬碟組成,每個硬碟容量一樣,資料儲存於磁碟陣列中的每個硬碟,其中一塊硬碟儲存資料校驗位,當丟失其中的一位時,RAID5能通過演算法,利用其他兩位資料將丟失的資料進行計算還原,因此RAID5最多隻能允許一塊硬碟損壞,可見磁碟利用率是(N-1)/N,資料的安全性得以保障,一般大多數人選擇用RA

Linux系統記憶體磁碟初始化技術詳細解析

轉http://unix-cd.com/unixcd12/article_6520.html initrd掛載優先順序高於真實根檔案系統,它被邦定在核心上,做為核心啟動過程的一部分被載入(load)。然後,做為兩階段引導過程的第一部分,核心掛載(mount)initrd,用

開發中,路徑在Windows系統linux系統的相容性問題解決

String line=File.separator;          String realPath=request.getRealPath("")+"\\excelmodel\\";  &n

Linux 系統格式化磁碟並掛載分割槽

通常在增加磁碟或新系統,必不可少的就是格式化磁碟,分割槽,掛載分割槽。玩過阿里等虛擬主機的朋友都知道,資料盤是需要自己分割槽並掛載的,對於新手確實是個難題,特記之,以供參考! 使用   df -lh 命令檢視 ,系統只有系統盤. 使用  fdisk -l  檢視磁碟情況,

Linux系統格式化磁碟+掛載分割槽

1.檢視可使用的磁碟: $fdisk -l 2.對磁碟進行分割槽: $fdisk /dev/vdb 3.格式化磁碟: $fdisk -l --檢視已經分割槽的磁碟 $mkfs -t ext4 /dev/vdb1 --格式化磁碟 4.掛載分割槽: $vim /etc/fsta

Linux系統磁碟、分割槽、檔案系統、格式化、掛載的理解。

1. 背景知識        學習Linux系統應該忘記Windows系統中劃分碟符(C:\。d:\。E:\ ...)的影響。        在Linux的系統中,是通過分割槽來把系統空間劃分成不同的應

Centos Linux 怎麼清理磁碟佔用空間大:/dev/xvda1

1 先在根目錄下檢索一下檔案的佔用情況,命令: du -sh * 結果如下:可以看到 www 目錄佔用了差不多10G,那目標就是找出佔用最多的檔案 [[email protected] /]# du -sh * 9.3M bin 24M boot 4

Linux下埠被佔用解決

有時候關閉軟體後,後臺程序死掉,導致埠被佔用。下面以JBoss埠8083被佔用為例,列出詳細解決過程。 解決方法: 1.查詢被佔用的埠 netstat -tln netstat -tln | grep 8083 netstat -tln 檢視埠使用情況,而net

Windows系統Linux系統的Socket通訊解決方案或問題

因為專案的需要,希望使用windows系統作為客戶端,模擬想Linux系統的服務端傳送資料。在這個過程當中,遇到了一些問題,所以記錄下來。 環境說明: 客戶端 系統:windows系統,語言:C語言 服務端 系統:CentOS系統(LInux系統),語言:C語言 虛擬機器:

Linux系統used記憶體佔用很大,而實際系統中個程序並沒有佔用這麼多記憶體

問題 新裝伺服器,used記憶體佔用很大,而實際系統中個程序並沒有佔用這麼多記憶體 現象 top檢視下,used很大,如果有其他外部程式向監控伺服器的記憶體,used實際是個比較關鍵的指標,而該指標卻並沒有反應出伺服器實際佔用情況: 原因 實

VMware虛擬機器linux系統時間同步的解決辦法

1.  右鍵點選虛擬機器,先更新Tools,再點設定 2. 在虛擬機器設定選項卡上,點選選項 選擇 VMware Tools,在右邊將客戶機時間於主機同步(S)的選項勾選上。 3.複製相應的時

RHCE——向Linux系統新增磁碟、分割槽和檔案系統

基礎知識 使用fdisk 採用MBR 分割槽方案在磁碟上建立和刪除磁碟分割槽 使用gdisk 採用GPT 分割槽方案在磁碟上建立和刪除磁碟分割槽 使用mkfs 格式化檔案裝置 將檔案系統掛載到目錄樹中 df -h 查詢記憶體使用情況 partprobe /d

linux系統下程式設計,解決scanf不能輸入空格的問題

在linux系統下,使用scanf函式不能輸入空格,所以編者就自己封裝了一個EncapScanf函式,希望可以幫助到讀者。 #include <stdio.h> #include <stdlib.h> #include <string.h&g

Solaris系統cron服務異常解決記錄

自從公司政策變化,將伺服器轉到部門後,像我這種小白總會遇到各種各樣維護的問題,這不,最近兩月發現NIS服務工作異常,不能實時同步遠端LDAP資料了。由於NIS和DNS伺服器系統是古老的SunOS 5.10,誰用誰知道,我是真的不喜歡啊~開始比較懶,請IT幫忙,但

linux系統清理磁碟空間

# 原創作品,轉載請註明出處,謝謝!@楊福星 一、背景: 1、由於linux系統空間是由掛載磁碟得來的,但有時裝系統時掛載/根目錄空間不大,現僅清除使用者下載的大檔案 二、方

Linux系統故障-MBR(主引導記錄)被破壞的解決方法

MBR在電腦開機後,開始引導系統正確啟動,當MBR如果被破壞時,系統無法正常啟動。 在虛擬機器中模擬該故障 MBR(主引導記錄)破壞: 通常MBR會被記錄在帶有‘*‘的磁碟上 人為破壞MBR上前446位元組 重啟系統,因為載入程式被破壞,系統不能正常啟動,不