我有2个mongod实例使用以下参数运行
--noprealloc --smallfiles --replSet mongors1 --dbpath /data/db --nojournal
此练习的目标是创建一个复制环境,其中磁盘占用空间最小,以便进行本地开发。
此时,各个数据系统约为32M并且具有以下内容,一切都很好
ls -o data/db
total 32784
-rw------- 1 999 16777216 Sep 22 11:38 local.0
-rw------- 1 999 16777216 Sep 22 11:38 local.ns
-rwxr-xr-x 1 999 2 Sep 22 11:38 mongod.lock
-rw-r--r-- 1 999 69 Sep 22 11:38 storage.bson
drwxr-xr-x 2 999 4096 Sep 22 11:38 _tmp
登录第一个成员并运行rs.initiate();使用额外的1G磁盘空间。
ls -o data/db
total 1080856
-rw------- 1 999 16777216 Sep 22 11:39 local.0
-rw------- 1 999 536608768 Sep 22 11:39 local.1
-rw------- 1 999 536608768 Sep 22 11:39 local.2
-rw------- 1 999 16777216 Sep 22 11:39 local.ns
-rwxr-xr-x 1 999 2 Sep 22 11:38 mongod.lock
-rw-r--r-- 1 999 69 Sep 22 11:38 storage.bson
drwxr-xr-x 2 999 4096 Sep 22 11:39 _tmp
考虑到要复制的节点的属性以及它们正在运行的配置,这似乎过分了。
Mongo 3.0.6是正在使用的版本。
最终,这将扩展到2个分片中包含3个成员的副本集。最初存储零数据的6Gb最小磁盘需求似乎不是最佳的。
有没有办法将其减少到更能代表节点需求的东西?
感谢任何帮助。提前致谢
答案 0 :(得分:3)
本地数据库包含oplog,我将让你自己研究一下给定节点的大小。要解决手头的问题,from the docs:
对于64位Linux,Solaris,FreeBSD和Windows系统,MongoDB 分配可用磁盘空间的5%,但总是如此 分配至少1千兆字节,不超过50千兆字节。
这就是您的使用来源 - 要改变您需要resize the oplog的分配,或者,如果从头开始,请查看oplogSizeMB选项(或等效的CLI请参阅{{ 3}})。
答案 1 :(得分:1)
除了Adam所说的,还要添加
--oplogSize X
指向您的参数,并将X替换为您希望oplog的MB数量。