Mongo uses (a lot) too much space
UPDATE
I had small databases at first, but I've since dropped all databases (to no avail) to fix this.
show dbs
shows
config 0.046875GB
But find /var/lib/mongo -type f -print0 | sort -z | xargs -0 du -b
shows
134217728 /var/lib/mongo/a1/data/journal/j._3
88 /var/lib/mongo/a1/data/journal/lsn
134217728 /var/lib/mongo/a1/data/journal/prealloc.1
134217728 /var/lib/mongo/a1/data/journal/prealloc.2
536608768 /var/lib/mongo/a1/data/local.0
536608768 /var/lib/mongo/a1/data/local.1
536608768 /var/lib/mongo/a1/data/local.2
536608768 /var/lib/mongo/a1/data/local.3
536608768 /var/lib/mongo/a1/data/local.4
536608768 /var/lib/mongo/a1/data/local.5
536608768 /var/lib/mongo/a1/data/local.6
16777216 /var/lib/mongo/a1/data/local.ns
5 /var/lib/mongo/a1/data/mongod.lock
134217728 /var/lib/mongo/a2/data/journal/j._1
88 /var/lib/mongo/a2/data/journal/lsn
134217728 /var/lib/mongo/a2/data/journal/prealloc.1
134217728 /var/lib/mongo/a2/data/journal/prealloc.2
16777216 /var/lib/mongo/a2/data/local.0
33554432 /var/lib/mongo/a2/data/local.1
536608768 /var/lib/mongo/a2/data/local.2
536608768 /var/lib/mongo/a2/data/local.3
536608768 /var/lib/mongo/a2/data/local.4
536608768 /var/lib/mongo/a2/data/local.5
536608768 /var/lib/mongo/a2/data/local.6
536608768 /var/lib/mongo/a2/data/local.7
536608768 /var/lib/mongo/a2/data/local.8
16777216 /var/lib/mongo/a2/data/local.ns
5 /var/lib/mongo/a2/data/mongod.lock
134217728 /var/lib/mongo/b1/data/journal/j._4
88 /var/lib/mongo/b1/data/journal/lsn
134217728 /var/lib/mongo/b1/data/journal/prealloc.1
134217728 /var/lib/mongo/b1/data/journal/prealloc.2
536608768 /var/lib/mongo/b1/data/local.0
536608768 /var/lib/mongo/b1/data/local.1
536608768 /var/lib/mongo/b1/data/local.2
536608768 /var/lib/mongo/b1/data/local.3
536608768 /var/lib/mongo/b1/data/local.4
536608768 /var/lib/mongo/b1/data/local.5
536608768 /var/lib/mongo/b1/data/local.6
16777216 /var/lib/mongo/b1/data/local.ns
5 /var/lib/mongo/b1/data/mongod.lock
16384 /var/lib/mongo/b2/data/journal/j._1
88 /var/lib/mongo/b2/data/journal/lsn
16777216 /var/lib/mongo/b2/data/local.0
33554432 /var/lib/mongo/b2/data/local.1
536608768 /var/lib/mongo/b2/data/local.2
536608768 /var/lib/mongo/b2/data/local.3
536608768 /var/lib/mongo/b2/data/local.4
536608768 /var/lib/mongo/b2/data/local.5
536608768 /var/lib/mongo/b2/data/local.6
536608768 /var/lib/mongo/b2/data/local.7
536608768 /var/lib/mongo/b2/data/local.8
16777216 /var/lib/mongo/b2/data/local.ns
5 /var/lib/mongo/b2/data/mongod.lock
16777216 /var/lib/mongo/config/data/config.0
33554432 /var/lib/mongo/config/data/config.1
16777216 /var/lib/mongo/config/data/config.ns
134217728 /var/lib/mongo/config/data/journal/j._0
88 /var/lib/mongo/config/data/journal/lsn
134217728 /var/lib/mongo/config/data/journal/prealloc.1
134217728 /var/lib/mongo/config/data/journal/prealloc.2
5 /var/lib/mongo/config/data/mongod.lock
Thats over 17GB no data! Sheesh.
Why does Mongo take up so much space and how can I reduce it?
source to share
What are all these files?
It looks like whoever did the initial setup in your environment created a sharded cluster , which was probably two shards, each backed by two given nodes in a replica set . They decided to create subdirectories for each node under a common path /var/lib/mongo/
.
Based on the subdirectory name, I would suggest that a1
and a2
were set for the replica shard a
, and b1
, and b1
were part of the replica set for the shard b
. If you're curious, you can probably confirm the old configuration by checking the config
database , which is still there.
In the case of a replica set, each data-carrying node has a pre-allocated oplog
(activity log) that is used for replication. Oplog is stored in a collection oplog.rs
in the database local
.
The default oplog size is 5% of free disk space (at least on 64-bit Linux), so taking up a good chunk of disk despite having an "empty" database.
How can I safely clear this data directory?
If you are using only one MongoDB instance, by default it will ignore additional subdirectories and their contents. This is why you still have additional disk usage - you dumped all the databases yours knows about mongod
.
If you want to "reset" all data and start over, you must:
- stop your executable instance
mongod
, for example:sudo service mongod stop
- Note: if you want to be more sure that there are no lingering processes
mongod
from the previous plastered installation, you can also run:killall mongod; killall mongos
- change data directory:
cd /var/lib/mongo/
- make sure you are in the expected directory :
pwd
- delete all files:
rm -r *
- restart
mongod
, for example:sudo service mongod start
source to share