tl; dr: новая реплика 2.6 съедает много больше дискового пространства, чем у участников 2.4.
Мы активно используем GridFS MongoDB. В настоящее время мы работаем на версии 2.4 и намерены перейти на версию 2.6, просто добавив новых членов реплики и постепенно исключив узлы 2.4, как это рекомендуется.
У нас есть один первичный, один вторичный и арбитр. Вот некоторые данные о текущей системе:
$ mongod --version
db version v2.4.10
Sun Jul 27 13:56:27.250 git version: e3d78955d181e475345ebd60053a4738a4c5268a
Вот некоторые данные из базы данных:
> db.stats()
{
"db" : "SomeDatabase",
"collections" : 4,
"objects" : 2797931,
"avgObjSize" : 284877.9334958582,
"dataSize" : 797068801344,
"storageSize" : 946689860768,
"numExtents" : 469,
"indexes" : 5,
"indexSize" : 251248480,
"fileSize" : 950804676608,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"ok" : 1
}
Как видите, размер базы данных составляет ~ 950 ГБ, и она подходит (но с трудом) для основного и дополнительного (что составляет 1 ТБ хранилища).
Поскольку у нас мало места для хранения, я дал новому узлу, который хотел добавить в систему, еще 200 ГБ (т.е. 1,2 ТБ).
Вот версия MongoDB с нового узла:
$ mongod --version
db version v2.6.3
2014-07-27T12:01:21.242+0000 git version: 255f67a66f9603c59380b2a389e386910bbb52cb
После того, как он стал членом набора реплик, он начинает нормально синхронизироваться (как и в любой другой раз, когда мы меняли элементы ReplicaSet). Вот где это становится странным. После нескольких часов синхронизации он достигает ожидаемого размера базы данных (~ 950 ГБ). Однако после этого он просто продолжается, пока, наконец, не заполнит весь диск и не выйдет из строя.
Теперь я знаю, что 2.6 - это новая версия, но почему база данных на диске превышает базы данных на первичной и вторичной базе? Любые указатели были бы очень полезны.
В MongoDB 2.6 PowerOf2sizes (http://docs.mongodb.org/master/reference/command/collMod/#usePowerOf2Sizes) - настройка по умолчанию для коллекций. Это приведет к меньшему количеству перемещений диска во время обновлений, но будет занимать больше места на диске.