I’m running MongoDB and grid.fs to store small files (less than 20mbs). These are part of a replica set. I currently have more than 350000 files stored.
I’ve noticed that the chunks collection takes around 700GB of preallocated space where the actual chunks consist of ~40GB. Even though there are 700GB of data preallocated, this keeps expanding over time.
Keep in mind that every 15 minutes or so I delete files older than 5 days. So in theory my fs.chunks and fs.files size should remain around the same over time.
Here's my fs.chunks stats
rs0:PRIMARY> db.fs.chunks.stats()
{
"ns" : "collection.fs.chunks",
"count" : 470388,
"size" : 43295062144,
"avgObjSize" : 92041.17057407927,
"storageSize" : 757794040352,
"numExtents" : 373,
"nindexes" : 2,
"lastExtentSize" : 2146426864,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 40356736,
"indexSizes" : {
"_id_" : 17431232,
"files_id_1_n_1" : 22925504
},
"ok" : 1
}
Is this behaviour normal? Can I compact (defrag?) the chunks collection or even claim that preallocated space ? If I cannot reclaim that space (which I’m 99.9% sure I can’t) is there a way to ensure that the preallocated space will be used eventually rather than keeps expanding?