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?

+3


source to share


1 answer


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

+5


source







All Articles