系統磁盤空間/dev/xvda1占滿原因分析


  由於項目原因需要定期檢查磁盤空間占用情況,常用檢查命令如下:

1、查看磁盤空間大小
df -lh
2、查看對應文件大小
du --max-depth=1 -h /

  於一日發現在使用Flume + Kafka進行數據同步時,某一局點數據無法進行消費,通過df -lh查看發現系統空間滿了,如下:

  /dev/xvda1       20G  20G  0G  100% /

 然后,通過du --max-depth=1 -h / 查詢對應的大文件,發現此目錄下文件占用了2.3G的空間。通過各種方法找,都找不到大文件,唯一的線索是掛載的/data01目錄下Zookeeper的日志非常大,難道是此問題導致?

  在一篇文章中看到過類似的情況,產生問題的原因:

  在apache/tomcat在運行狀態下,清空了運行服務的日志,從而導致了/dev/xvda1 滿了的問題。一般情況下,大多數服務(包括腳本)在運行時,是不能刪除當前正在寫入的日志文件的。

原理分析:

 1、當前access.log日志正在被apache進程占用。
 2、 通過rm命令刪除access.log,實際只刪除了文件名(該日志文件應用記數不為0,因此空間不會被釋放)。
 3、 通過rm命令刪除了access.log后,apache依然寫日志到access.log中,當開啟apache進程時,已經通過access.log定位到該文件的inode了,就是說再寫日志是不通access.log,因此即使刪除了access.log,apache依然寫日志到access.log所在的inode節點,所以導致硬盤空間增加。
 4、因為刪除了access.log,所以我們就找不到該文件了,du也查不到,就會出現硬盤滿了但看不到究竟是哪些文件占用的。
解決方法:

  重啟該日志文件的相關服務或程序,如:為apache日志文件則重啟apache。

仿照該方法,先停止Zookeeper的運行,然后刪除Zookeeper日志,重啟Zookeeper后發現服務消費正常


免責聲明!

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



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