Sistemas de armazenamento de objetos compatíveis com S3 [fechados]

14

Alguém já se deparou com um sistema de armazenamento de objetos compatível com API RESTful Amazon S3 100% próximo?

O que estou procurando é uma camada que fica em cima de qualquer sistema de arquivos (de preferência um POSIX) que forneça a API RESTful do estilo Amazon S3 para armazenar ( PUT), recuperar ( GET), stat ( HEAD) e delete ( DELETE), com autenticação decente.

Projetos / idéias comerciais também são bem-vindos.

NOTA:

Até agora, experimentei Eucalyptus e Cumulus ; dos quais o eucalipto parece se chamar cegamente de compatível com S3. Os documentos XML de resposta não são de todo compatíveis e são irregulares em determinados locais, sem nenhum documento XML. O Cumulus conseguiu manter os documentos de resposta bastante semelhantes, mas parece ter esquecido a integridade dos dados!

Deixe-me explicar a última parte: o Eucalyptus e o Cumulus não têm suporte para verificação de integridade que o Amazon S3 oferece. O que você pode fazer com o S3 é fornecer uma Base64 (MD5 (FILE)) junto com a solicitação PUT, que é verificada pelo S3 antes de responder com êxito. Eucalyptus e Cumulus não suportam isso. Com o Eucalyptus, podemos pelo menos contornar isso, verificando o MD5 fornecido no documento de resposta (comportamento não compatível com S3). No Cumulus, isso não é possível, pois não responde com nada (como S3). A Cumulus é ainda pior, ao não fornecer uma ETag na HEADsolicitação.

CodeMedic
fonte

Respostas:

3

O Swift é o mecanismo de armazenamento de objetos do OpenStack e, desde o lançamento do Bexar em fevereiro de 2011 , ele reivindica um middleware experimental compatível com S3. Como o OpenStack está recebendo muita atenção (a Canonical está transferindo o Ubuntu para o Eucalyptus em outubro deste ano, por exemplo), pode valer a pena dar uma olhada.

crb
fonte
3

No final, tive que avançar com o Eucalyptus Walrus. Apesar de eu ter encontrado alguns problemas fundamentais, todos eles tinham possíveis soluções.

Obrigado a todos por sua valiosa contribuição!

CodeMedic
fonte
2

[AVISO LEGAL: Eu trabalho para Scality]

A Amazon permanece muito ativa em seus produtos da AWS e faz adições e alterações / melhorias em sua API com muita frequência. É difícil encontrar um produto quase 100% compatível (especialmente em produtos comerciais, provavelmente os produtos OSS seriam mais reativos a quaisquer alterações). Muitos fornecedores de armazenamento de objetos / nuvem brincam com seus próprios protocolos há algum tempo (Atmos, DDN e até o rápido do OpenStack ..), mas quase todos abandonaram a ideia de que seu próprio protocolo se tornasse tão amplamente usado quanto o S3. Eles estão todos (quase?) Anunciando uma interface compatível com S3 agora ou nos próximos meses. Afinal, é o padrão de fato da indústria. O único concorrente que resta pode ser o CDMI apenas por causa de sua natureza padronizada e pelo fato de ser proveniente da SNIA, uma organização sem fins lucrativos e sem fornecedores. Mas é

Existem algumas opções na interface compatível com S3, como Mezeo, as que você mencionou (Eucalyptus e Cumulus), OpenStack (embora ainda não esteja disponível). Scality é outro desses.

A implementação S3 do Scality (chamada RS2 - REST Storage Service) é muito próxima do S3, pois nossas solicitações / respostas são consistentes com o que você obteria do S3. Algumas das funcionalidades vinculadas à infraestrutura do S3 não estão presentes por razões óbvias (seleção de região, por exemplo). Mas os comandos necessários estão lá: GET / PUT / DELETE um objeto, criação e listagem de bucket; e reagir como S3 faria.

Gostaria de acrescentar, para responder ao seu segundo problema, que o produto da Scality, o RING, é uma plataforma de armazenamento de objetos de software que resolve os problemas de integridade de dados aos quais você está se referindo, somando e fazendo verificações de integridade de segundo plano de todos os objetos armazenados no RING. Armazenar um objeto é basicamente uma consulta transacional e, uma vez que um objeto foi reivindicado como "armazenado com sucesso", será para sempre, com verificações constantes de integridade (em todas as leituras, por exemplo).

Não vou entrar em detalhes. você pode ir ao nosso site para entender como podemos aliviar os administradores de armazenamento dos pesadelos comuns de gerenciamento de dados e deixá-los dormir à noite sabendo que seus dados estão disponíveis. Sempre. :)

Marc Villemade @mastachand

Marc Villemade
fonte
2

O Ceph da Newdream possui um gateway fastcgi compatível com S3 que usa o mesmo sistema de armazenamento de objetos que o próprio sistema de arquivos Ceph. ( http://ceph.newdream.net/wiki/RADOS_Gateway ) Ainda não está pronto para a produção, mas está fazendo atualizações regulares.

Achei o armazenamento de objetos do Openstack mais confiável em meus testes, embora não seja compatível com o S3 com as bibliotecas s3 que usei ou com o cliente java do próprio rackspace para o serviço de armazenamento de arquivos em nuvem (que usa sua própria versão do swift). Embora o projeto jclouds, que conta com o apoio do s3 e do Swift, tenha funcionado para mim.

David
fonte
2

Você também pode consultar o Cloud Foundry vBlob: https://github.com/cloudfoundry/vblob

É um aplicativo node.js. (com wrapper Ruby para integração com CF) que implementa uma boa parte do protocolo S3 sobre qualquer sistema de arquivos que a VM possa "ver".

Mathew L
fonte
1

O s3ql (GNU GPL v3) e o s3backer (GNU GPL v2) fazem o que você está procurando.

Sean Mac
fonte
1
Sean; Não estou procurando uma biblioteca cliente ou um cliente também para interagir com o armazenamento; mais interessado no próprio servidor.
CodeMedic 25/11
1

Pergunta antiga / respondida, mas https://github.com/basho/riak_cs foi aberta em https://github.com/basho/riak_cs : "O Riak CS é um sistema de armazenamento de objetos construído sobre o Riak. Facilita armazenamento de objetos grandes no Riak e apresenta uma interface compatível com S3. Ele também fornece recursos de multilocação, como contas de usuário, autenticação, mecanismos de controle de acesso e relatórios de uso por conta ".

astrostl
fonte
1

Tenho certeza que você tem tantas opções acima, mas você deve verificar o OpenStack Swift, que é um OpenSource Object Storage e também suporta API compatível com S3. É usado como solução de armazenamento de objetos para Rackspace, Hpcloud Korea Telecom e muitos outros.

Documentação http://docs.openstack.org/developer/swift/associated_projects.html Swift3 https://github.com/fujita/swift3 Swift3 Middleware para OpenStack Swift, permitindo acesso ao OpenStack swift por meio da API do Amazon S3.

Espero que ajude.

koolhead17
fonte
-3

[AVISO LEGAL: Eu trabalho para Cloudian]

O software de armazenamento de objetos Cloudian HyperStore é 100% compatível com API Amazon S3. Ele implementa todas as APIs do S3 até os códigos de erro e todos os recursos que o Amazon S3 possui.

Para listar alguns, o Cloudian HyperStore suporta Upload de várias partes, Version de objeto, ACL compatível com S3, Classificação automática de níveis em camadas para S3 e Glacier, CORS (S3 Cross-Origin Resource Sharing), tipo de codificação S3, restrição de local e muito mais.

E sim, com o Cloudian, você pode fornecer um Base64 (MD5 (FILE)) junto com a solicitação PUT, que é verificada antes de responder com êxito.

Para obter mais informações, consulte esta postagem no blog http://www.cloudian.com/blog/?p=64 e o site da Cloudian em http://www.cloudian.com/products/cloudian-hyperstore.php

Simone
fonte
-4

Você já viu o s3fs ? Ele não possui a verificação MD5 desejada ( http://code.google.com/p/s3fs/issues/detail?id=37&q=md5 ), mas suponho que não seria extremamente difícil implementá-lo. De nota é que é eventualmente consistente.

gekkz
fonte
2
S3FS é a ordem inversa para o que o pôster deseja. Ele cria um sistema de arquivos a partir de um bucket S3. O OP quer criar um bucket S3 de um sistema de arquivos.
crb