Назад | Перейти на главную страницу

S3-совместимые системы хранения объектов

Кто-нибудь сталкивался с системой хранения объектов, почти на 100% совместимой с Amazon S3 RESTful API?

То, что мне нужно, - это слой, который находится поверх любой файловой системы (предпочтительно POSIX), которая предоставляет RESTful API в стиле Amazon S3 для хранения (PUT), получить (GET), stat (HEAD) и удалите (DELETE) с приличной аутентификацией.

Также приветствуются коммерческие проекты / идеи.

НОТА:

Я пока пробовал Эвкалипт и Кучевые облака; из которых Eucalyptus, кажется, слепо называет себя S3-совместимым. Ответные XML-документы совершенно несовместимы, а в некоторых местах они неоднородны и не содержат никаких XML-документов. Cumulus удалось сохранить очень похожие ответные документы, но, похоже, забыл о целостности данных!

Позвольте мне объяснить последнюю часть: и Eucalyptus, и Cumulus не поддерживают проверку целостности, которую предлагает Amazon S3. Что вы можете сделать с S3, так это то, что вы можете предоставить Base64 (MD5 (FILE)) вместе с запросом PUT, который затем проверяется S3, прежде чем он ответит успешно. Эвкалипт и кучевые облака этого не поддерживают. С помощью Eucalyptus мы можем хотя бы обойти это, проверив MD5, указанный в ответном документе (не S3-совместимое поведение). В Cumulus это невозможно, так как он ничем не отвечает (например, S3). Кумулус еще больше усугубляет то, что не выдаёт ETag в HEAD запрос.

В конце концов, мне пришлось продвигаться вперед с Eucalyptus Walrus. Даже несмотря на то, что в итоге я обнаружил некоторые фундаментальные проблемы, у всех были возможные обходные пути.

Спасибо всем за ваш ценный вклад!

Swift является механизмом хранения объектов OpenStack, а с выпуск Bexar в феврале 2011 г., он утверждает, что это экспериментальное промежуточное ПО, совместимое с S3. Поскольку OpenStack привлекает к себе много внимания (например, Canonical переводит Ubuntu на него вместо Eucalyptus в октябре этого года), возможно, стоит взглянуть на него.

Ceph от Newdream имеет S3-совместимый шлюз fastcgi, который использует ту же систему хранения объектов, что и сама файловая система Ceph. (http://ceph.newdream.net/wiki/RADOS_Gateway) Еще не готово к производству, но регулярно обновляется.

Я обнаружил, что хранилище объектов Openstack более надежно в моем тестировании, хотя оно не совместимо с S3 с библиотеками s3, которые я использовал, или с собственным java-клиентом rackspace для их службы хранения облачных файлов (который использует их собственную версию swift). Хотя у меня работал проект jclouds, который поддерживает как s3, так и Swift.

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я работаю на Scality]

Amazon очень активно работает над своими продуктами AWS и очень часто вносит дополнения и изменения / улучшения в свой API. Тогда трудно найти почти 100% совместимый продукт (особенно в коммерческих продуктах, вероятно, продукты OSS будут более реагировать на любые изменения). Многие поставщики объектных / облачных хранилищ в течение некоторого времени игрались со своими собственными протоколами (Atmos, DDN, даже OpenStack Swift ...), но в основном все они отказались от идеи, что их собственный протокол станет столь же широко используемым, как S3. Все они (почти?) Анонсируют S3-совместимый интерфейс сейчас или в ближайшие месяцы. В конце концов, это промышленный стандарт де-факто. Единственным оставшимся соперником может быть CDMI только из-за его стандартизованного характера и того факта, что он исходит от SNIA, некоммерческой организации, не связанной с поставщиками. Но очевидно, что о нем не так много говорят и о S3.

Существует несколько вариантов интерфейса, совместимого с S3, например Mezeo, упомянутые вами (Eucalyptus и Cumulus), OpenStack (хотя, я думаю, он еще не вышел). Масштабность - еще одна из них.

Реализация Scality S3 (называемая RS2 - REST Storage Service) очень близка к S3 в том, что наши запросы / ответы согласуются с тем, что вы получите от S3. Некоторые функции, связанные с инфраструктурой S3, отсутствуют по очевидным причинам (например, выбор региона). Но необходимые команды есть: GET / PUT / DELETE объект, создание корзины и листинг; и реагирует так же, как S3.

Я бы просто добавил, чтобы ответить на вашу вторую проблему, что продукт Scality, RING, представляет собой платформу хранения программных объектов, которая решает проблемы целостности данных, о которых вы говорите, путем подсчета контрольных сумм и выполнения фоновых проверок целостности всех объектов, хранящихся в RING. Сохранение объекта - это, по сути, транзакционный запрос, и как только объект был заявлен как «успешно сохраненный», он навсегда останется с постоянными проверками целостности (например, при каждом чтении).

Не буду вдаваться в подробности. вы можете зайти на наш веб-сайт, чтобы понять, как мы избавляем администраторов хранилища от обычных кошмаров, связанных с управлением данными, и позволяем им спать по ночам, зная, что их данные доступны. Всегда. :)

С уважением, Марк Виллемад @mastachand

Вы также можете посмотреть Cloud Foundry vBlob: https://github.com/cloudfoundry/vblob

Это приложение node.js (с оболочкой Ruby для интеграции CF), которое реализует значительную часть протокола S3 поверх любой файловой системы, которую виртуальная машина может «видеть».

Обе s3ql (GNU GPL v3) и s3backer (GNU GPL v2) делайте то, что ищете.

Старый / отвеченный вопрос, но https://github.com/basho/riak_cs был только что открыт в https://github.com/basho/riak_cs : "Riak CS - это система хранения объектов, построенная на основе Riak. Она упрощает хранение больших объектов в Riak и представляет S3-совместимый интерфейс. Она также предоставляет функции многопользовательского режима, такие как учетные записи пользователей, аутентификация, механизмы контроля доступа и отчеты об использовании аккаунта ".

Я уверен, что у вас есть так много вариантов выше, но вы должны проверить OpenStack Swift, это хранилище объектов OpenSource, а также поддерживает API-интерфейс, совместимый с S3. Он используется в качестве решения для хранения объектов для Rackspace, Hpcloud Korea Telecom и многих других.

Документация http://docs.openstack.org/developer/swift/associated_projects.html Swift3 https://github.com/fujita/swift3 Промежуточное ПО Swift3 для OpenStack Swift, обеспечивающее доступ к OpenStack Swift через API Amazon S3.

Надеюсь, поможет.

[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я работаю в Cloudian]

Программное обеспечение объектного хранилища Cloudian HyperStore на 100% совместимо с API Amazon S3. В нем реализованы все API-интерфейсы S3, включая коды ошибок и все функции Amazon S3.

Чтобы перечислить некоторые из них, Cloudian HyperStore поддерживает многокомпонентную загрузку, управление версиями объектов, S3-совместимый ACL, автоматическое многоуровневое использование S3 и Glacier, S3 Cross-Origin Resource Sharing (CORS), тип кодирования S3, ограничение местоположения и многое другое.

И да, с Cloudian вы можете предоставить Base64 (MD5 (FILE)) вместе с запросом PUT, который затем проверяется, прежде чем ответить успешно.

Для получения дополнительной информации проверьте это сообщение в блоге http://www.cloudian.com/blog/?p=64 и веб-сайт Cloudian по адресу http://www.cloudian.com/products/cloudian-hyperstore.php

Вы проверили s3fs? В нем нет нужной вам проверки MD5 ( http://code.google.com/p/s3fs/issues/detail?id=37&q=md5 ), но, полагаю, реализовать это будет несложно. Следует отметить, что в конечном итоге это согласуется.