Linux服務器出現:No space left on device的解決方法


 

報錯信息:

2016-06-02 23:56:26 [com.thinkive.server.logger.TradeLogger]-[ERROR]

java.io.IOException: No space left on device

at java.io.FileOutputStream.writeBytes(Native Method)

at java.io.FileOutputStream.write(FileOutputStream.java:282)

at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)

at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)

at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)

at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)

at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)

at com.thinkive.server.logger.TradeLogger$LoggerThread.flushLogFile(TradeLogger.java:404)

at com.thinkive.server.logger.TradeLogger$LoggerThread.run(TradeLogger.java:322)

 

服務器磁盤不足,df -h 一下,var下正常,還有剩余,發現問題沒有,到后來顯示大量的No space left on device:

/var明明還有很大的空間,為什么就提示“沒有足夠的空間”了呢?結果用到了df -i命令查看磁盤的節點發現如下圖:

節點100%了.

這個時候用戶可以先看下日志文件是否太多,如果是日志文件占用大量的inodes可以臨時釋放清理下過期的日志。

以下是檢查inodes滿的某一種情況,僅供參考:

查看原來是crontab里面定時執行的句子里沒有加 > /dev/null 2>&1,系統中cron執行的程序有輸出內容,輸出內容會以郵件形式發給cron的用戶,而sendmail沒有啟動所以就產生了很大零碎的文件:

 

cd /var/spool/clientmqueue/  進入這個目錄,刪掉這些沒用的文件,用ls 查看一下,結果是沒有反應,文件太多,於是就用到了這個命令:ls |xargs rm -rf 可以分批的處理刪除文件

操作到該步驟,可以根據較大目錄的文件占用情況,臨時轉移部分文件到占用磁盤較小的目錄中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM