2015-06-01

Mongodb 設定減少 Journal 檔案大小

阿舍在一個只剩下 4GB 左右的硬碟空間的虛擬間裡,用 Container 安裝了一個 Mongodb Server,然後,在安裝好啟動一陣子後,就突然發現,阿舍的這個虛擬機器的硬碟空間只剩下幾百 MB 可用,阿舍查了一下,光 Mongodb 的 Journal 檔案就吃掉了 3GB,可是,阿舍還沒有開始存什麼大量的資料進去 MongoDB 哩 !



後來,阿舍查了一下才知,原來是,Mongodb 採用 Journal 檔案來即時保存資料庫的變更,之後,才將變更的內容更新到資料庫,由於寫入到 Journal 檔案的時間很快,所以,可以在 Mongodb Server 不幸掛掉的時候,仍然可以保存到最新的變更,然後,在 Mongodb Server 重啟成功後,再利用 Journal 檔案的內容把最後的變更更新到資料庫,確保資料庫的正確性。

調整後可以縮小至 400MB 以下 ...
不過,大概是為了效能上的考量,這個 Mongodb 預設建立的 Journal 檔一建起來就會吃掉 3GB 左右的空間,其實,這個 3GB 的大小對現在的硬碟來說,不算什麼,但是,對阿舍的虛擬機器來說,可是彌足珍貴哩 ! 因為阿舍懶得再去[擴充硬碟空間]() 了 ...

所以,阿舍就查了一下,查到 [Mongodb 的官網文件說](http://docs.mongodb.org/manual/core/journaling/#journaling-internals),只要在 mongod.conf 檔案加入下面這一行設定項目,就可以把每一個 Journal 檔案 (預設有三個) 降到 128MB,於是,阿舍就在一個新安裝好的 Mongodb Server上,在 /etc/mongod.conf 檔案的最後面加入下面這一行,然後,啟動 Mongodb 之後,用下面第二行的指令查了一下,果然,三個檔案只用了 360 MB左右哩 !

# 在 /etc/mongod.conf 加入下面這一行
smallfiles=true

# 用下面這一行指令查看 Mongodb 的 Journal 檔案們共佔用的空間
$ sudo du -h -d1 /var/lib/mongodb/journal

但是,如果你的 Mongodb 已經和阿舍之前安裝的 Mongodb 一樣,已經建立好吃掉 3GB 空間的 Journal 檔案的話,除了要調 /etc/mongod.conf 設定檔之外,還要手動去刪除現有的 Journal 檔案才行,下面是阿舍的操作方式,提供參考哩 !

# 那就要停止對 Mongodb 進行讀寫一陣子之後,再把 Mongodb 停掉
$ sudo service mongod stop

# 刪除現有的 Journal 檔案
$ sudo rm  /var/lib/mongodb/journal/prealloc.*

# 啟動 Mongodb
$ sudo service mongod start

上面的指令執行完,再去看 Journal 檔案的大小,應該就會小很多了哩 ! ... 不過,阿舍這樣做,純粹是因為是在測試的環境要做測用而已,如果是正式環境就不太建議這樣來弄,否則,除了有可能會影響到 Mongodb 的運作效能之外,在必要的時候,Mongodb 會長出更多的 Journal 來應付需要哩 ! ...

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁