MongoDB 硬碟空間不足,導致問題 , 兼Flunted 問題排除

摘要:MongoDB 硬碟空間不足,導致問題

我們的硬碟空間只有20G

而mongodb由於他是以倍數成長的方式增加。

至多2G方式的增加。

但由於增加速度太快,會導致沒有足夠硬碟空間,會出現錯誤。

雖然可以登入,但無法刪除或取得collection

會出現

 

Can't take a write lock while out of disk space" instance=69954892127080 錯誤問題

,而就算重開,

卻出現了,日誌檔,需要至少3G硬碟空間

 

ERROR: Insufficient free space for journal files
Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
 
簡單一點,
就去/etc/init.d/mongodb.conf
修改
nojournal 設為  true 
 
然後,並將lock檔移除
rm /var/lib/mongodb/mongo.lock
 
及要查什麼原因可到
/var/log/mongodb/mongo.log
 
之後,就要緊急刪除不必要的資訊或增加硬碟來做處理。
 
 
由於我們會使用Fluentd + MongoDB
MongoDB一掛,很多資料會卡在本機的Fluentd
他會建立資料在buffered中。
 
然後每分鐘retry一次,
導致該主動I/O存取頻繁,
而I/O存取頻繁時,此時Linode就會寄通知過來。
這時就要馬上緊急處理
 
接著,之後的Fluentd進入,相關的mongodb連線,可能會進入卡死狀態。
在這情形下,決定重開log本機的fluentd(會不會之前的資料遺失呢。覺得可能,但因為log不重要,所以才刪除,如果你的log很重要,千萬不要隨便亂試)
 
重開
sudo /etc/init.d/td-agent restart 
 
重開後,log就開始新的紀錄進來。
 
Fluentd的錯誤為
temporarily failed to flush the buffer, next retry will be at 2013-04-13 05:53:13 +0000. error="Operation failed with the following exception: end of file reached" instance=69954891056340
 
查log到
 
cat /var/log/td-agent/td-agent.log