В проекте который описан в сабже приняли решение использовать то, что хорошо знаем - MogileFS (на серверах RAID не используется, избыточность достигается тем, что MogileFS сам раскладывает требуемое кол-во копий файлов на разных узлах). В другом проекте, который реализуем сейчас иследуем Swift и Elliptics, решение еще не принято, MogileFS не рассматриваем из-за единой точки отказа - база мета-данных (какой файл где лежит).
среди минусов elliptics забыли указать ещё один: беда с документацией :) на официальных сайтах только общая информация, в репозитории инструкция по его сборке из исходников, но не слова о том, как сконфигурировать кластер. к слову, вчера в radio-t (в чате) bobuk сказал, что документацию к нему пишут, осталось только понять какими темпами и когда она будет опубликована
ваш сценарий не подходит из-за двух причин:
1. как минимум две копии должно быть у любого объекта, вариант с одним экземпляром объекта в хранилище не рассматривается, просто для очень важных объектов необходимо три копии (чтобы была возможность читать с кворумом).
2. что мне делать когда появится четвертый сервер?)
итого, нужен шардинг (буква P в CAP теореме), решения без него не удовлетворяют условиям задачи.
но вам, все равно большое спасибо, т.к. у меня была задача (о которой я здесь не упоминал) по созданию общего хранилища для образов виртуальных машин и вы навели меня на отличное решение.
> А что за кейс такой? Есть у меня определенные сомнения.
А-ля рапидфайлс, пользователь загружает файл (до 4Гб) получает на него линк, файл удаляет спустя 30-суток с момента последнего запроса этого файла (данный сервис работает без какой-либо рекламы и ограничении в скорости, поэтому пользуется очень большой популярностью и ротация файлов там очень большая, в интернетах он неизвестен, т.к. загружать в него файлы могут только клиенты одного регионального (но крупного) провайдера (но скачивать может кто угодно)).
Возможно я не правильно вас понял. На каждом узле у меня доступно по 19 Тб пространства, при использовании DRDB я получаю те же 19 Тб (только в трех копиях, т.к. raid-1 это просто зеркало), следовательно я не смогу записать 25 (места не хватит), а вот при использовании хранилища, которое поддерживает шардинг, мне доступны все 19х3=57 Тб пространства и я сам волен управлять политикой избыточности (для не самых важных объектов мне хватит двух копий, для важных трех), и случае двух копии я смогу записать 57/2 = 28,5 Тб данных (а не 19Тб как во варианте с рейдом по сети).
Если я правильно понял, то это «raid-1 по сети», как хранилище для xen-образов думаю это идеальное бюджетное решение, но для указанной задачи оно совершенно не подходит, т.к. отсутствует шардинг, т.е. я не смогу сохранить 25 Тб данных.
> Основной репликасет — две машины в конфигурации 1xX3430, 8gb, 8x2tb raid6 (железный)
Т.е. на каждой машине 8х2-4=12 Тб, хотя скорее ближе к 11 Тб. Термин «репликасет» говорит о том, что один сервер является полной копией второго, верно? Тогда получается для хранения доступно всего лишь 11 Тб, а что вы будете делать когда надо будет сохранить 20 Тб, про то что в монге есть шардинг я слышал, но вот в деле не видел не укого, вы пробовали с ним работать? И вопрос еще вопрос про реплику: «на запись» доступен только один из серверов — мастер, а второй только на чтение? в случае сбоя с мастером, смена роли происходит автоматически? если да, то как об этом узнает приложение, ведь оно должно теперь «аплоадить» данные на другой хост.
> Место на диске — не освобождает. Место в датафайлах — освобождается. При активном удалении и перезаписи периодически требует компактить базу. Мы решаем этот вопрос в основном тем, что не удаляем данные. :)
В моем кейсе такой вариант (не удалять) не приемлем, я правильно понял, что при удалении данные просто помечаются как удаленные, но фактически место остается занятым, и правильно ли я понял что «компактить базу» это как раз и производить физическое удаление данных, если так, то один момент — в момент «компактиния» (простите за это слово) база лочится или с ней происходят другие не хорошие вещи?
Вы автор (или имеете отношение к авторам) этой презентации? Если да, то подскажите — сколько у вас сейчас документов в монге, если нет — то спасибо за ссылку.
большое спасибо :)
(вроде он-лайн трансляция тоже будет, но личное участие конечно не сравнится, поэтому если возможно уточните про 8-ой пункт — ttl для объектов)