2012-02-27 70 views
39

我試圖在運行Mongo的Ubuntu服務器上釋放一些空間。我附加了一個新的空的8GB容量,並有足夠的空間來移動東西。Mongo「prealloc」文件佔用空間

我在/ var/lib/mongodb/journal/prealloc中有幾個大文件(1GB),刪除這些文件還是移動它們是安全的?如果我能移動它們 - 任何人都可以給我一個關於如何爲Mongo做到這一點的指針?

+0

我已經連接並安裝了我的新卷,只需要知道這些預先分配的空間塊。 – jbnunn 2012-02-27 23:11:56

+3

在一年之後意識到「大」的天真,參考1GB:/ – jbnunn 2013-07-15 22:55:46

回答

48

因此理論上,prealloc文件是預先分配的日誌文件。這與使用相反,日誌文件的格式爲j._X,其中X是數字。

這裏的目標是當最後一個文件空間不足時,已經分配了「下一個」文件。預分配通常比按需分配快得多。

刪除或移動它們是否安全?

您尋求的答案在文檔here。該文檔似乎沒有提供關鍵問題的答案:

prealloc文件不包含數據,但那些準備使用的文件系統真正的預分配(即它們不是相當簡單的預分配文件「疏」)。因此,刪除它們是安全的,但是如果您使用日誌記錄重新啓動mongod,它將在缺失時再次創建它們。*

+14

啊,你是對的。我所做的是刪除這些文件(並釋放了3GB的空間),然後編輯/etc/mongodb.conf並將dbpath更改爲新的安裝位置,並設置nojournal = true,即「禁用預寫日記功能」。現在我有足夠的空間可以實際評論這一點,而且很可能會因爲它似乎是更安全的賭注。謝謝@GatesVP – jbnunn 2012-02-28 03:36:21

+5

有些注意事項:8GB在MongoDB-land中被認爲不是很多空間。該日誌機制最初稱爲「單服務器持久性」b/c MongoDB的默認設置非常不穩定。如果您沒有日誌記錄(* 2.0 *中的默認值),那麼您需要考慮擁有副本集。否則,您的數據很容易受到腐敗。 – 2012-02-28 23:03:23

+0

好吧,我明白這一點。這是一個開發服務器,所以我會確保我的產品更多。 – jbnunn 2012-02-28 23:06:52

6

在MongoDB配置文件中添加「smallfiles = true」。

+0

這將導致MongoDB使用128M prealloc文件而不是1GB,但似乎並未減少總日誌大小。 – 2015-08-06 01:22:47

+1

如果我設置了這個選項並重新啓動mongodb,現有文件是否會減少? – 2015-08-20 08:18:43

+0

@LudwigMagnusson,你嘗試過重新啓動嗎?文件大小減少了嗎? – Yahya 2017-02-08 12:02:13