有没有人遇到过接近100%的Amazon S3 RESTful API兼容对象存储系统?
我所追求的是一个位于任何(最好是POSIX)文件系统之上的层,它提供Amazon S3风格的RESTful API来存储( PUT ),检索( GET ),统计( HEAD )和删除( DELETE ) 。
商业项目/想法也是受欢迎的。
注意:
到目前为止,我已经尝试了桉树和积云 。 其中桉树似乎是盲目地自称S3兼容。 响应XML文档完全不兼容,并且在某些地方是完全没有XML文档的。 积云已经设法保持响应文件非常相似,但似乎忘记了数据的完整性!
让我来解释后一部分:Eucalyptus和Cumulus都不支持Amazon S3提供的完整性validation。 你可以用S3做什么,你可以提供一个Base64(MD5(FILE))和PUT请求,然后在S3成功响应之前通过S3进行validation。 桉树和积云不支持这一点。 使用Eucalyptus,我们至less可以通过检查响应文档中给出的MD5(而不是S3兼容的行为)来解决这个问题。 在积云,这是不可能的,因为它不响应任何东西(如S3)。 积云使得情况变得更糟,在HEAD请求中没有发出ETag。
Swift是OpenStack的对象存储引擎,截至2011年2月的Bexar发布 ,它声称一个实验性的S3兼容中间件。 正如OpenStack引起了很多关注(例如Canonical今年十月将Ubuntu转移到Eucalyptus上),值得一看。
最后,我不得不向前推进桉树海象。 尽pipe我最终发现了一些基本问题,但都有可能的解决方法。
感谢大家的宝贵意见!
[免责声明:我为Scality工作]
亚马逊对其AWS产品保持非常活跃,并且非常频繁地对其API进行增加和改进/改进。 那么很难find一个接近100%兼容的产品(特别是在商业产品中,可能OSS产品会对任何变化更加反应)。 许多对象/云存储供应商已经用自己的协议玩弄了一段时间(Atmos,DDN,甚至是OpenStack的迅捷..),但是他们大多都放弃了自己的协议的想法变得像S3一样广泛使用。 他们都(几乎?)现在或将来几个月宣布一个S3兼容的接口。 这毕竟是行业事实上的标准。剩下的唯一竞争者可能就是CDMI,因为它的标准化性质以及来自SNIA这个非盈利性的非供应商组织。 但显然不像S3那样被采纳或谈论。
S3兼容界面有几个选项,比如Mezeo,你提到的那些(Eucalyptus和Cumulus),OpenStack(尽pipe它还没有出来,我相信)。 Scality是另外一个。
Scality的S3实现(称为RS2 – REST存储服务)与S3非常接近,因为我们的请求/回复与您从S3获得的结果一致。 与S3基础设施相关的一些function并不是由于显而易见的原因(例如区域select)而存在的。 但是必要的命令在那里:GET / PUT / DELETE一个对象,存储桶的创build和列表; 并像S3一样反应。
我只想补充一点,回答第二个问题,Scality的产品RING是一个软件对象存储平台,通过校验和解决存储在RING上的所有对象的背景完整性检查来解决数据完整性问题。 存储一个对象基本上是一个事务性查询,一旦一个对象被声明为“成功存储”,它将永远是恒定的完整性检查(例如每读一次)。
我不会详谈。 您可以访问我们的网站,了解我们如何从常见的数据pipe理噩梦中减轻存储pipe理员的负担,并让他们在知道其数据可用的情况下在夜间进入hibernate状态。 总是。 🙂
最好的Marc Villemade @mastachand
Newdream的Ceph有一个S3兼容的fastcgi网关,它使用与Ceph文件系统本身相同的对象存储系统。 ( http://ceph.newdream.net/wiki/RADOS_Gateway )还没有准备好生产,但定期更新。
我发现Openstack的对象存储在我的testing中更加可靠,虽然不是S3与我使用的s3库兼容,或者真的与rackspace自己的java客户端的cloudfiles存储服务(使用他们自己的swift版本)兼容。 虽然同时拥有s3和Swift支持的jclouds项目为我工作。
您也可以看看Cloud Foundry vBlob: https : //github.com/cloudfoundry/vblob
这是一个node.js应用程序(用于CF集成的Ruby包装),它在虚拟机可以“看到”的任何文件系统之上实现一个公平的S3协议块。
s3ql (GNU GPL v3)和s3backer (GNU GPL v2)都可以做你正在寻找的东西。
旧的/回答的问题,但https://github.com/basho/riak_cs刚刚在https://github.com/basho/riak_cs开源:“Riak CS是build立在Riak之上的一个对象存储系统,它促进在Riak中存储大型对象,并提供S3兼容接口,还提供多用户function,例如用户帐户,身份validation,访问控制机制和每个帐户使用情况报告。
我相信你有这么多的select,你仍然应该检查OpenStack Swift,它是一个OpenSource对象存储,也支持S3兼容的API。 它被用作Rackspace,Hpcloud Korea Telecom等等的对象存储解决scheme。
文档http://docs.openstack.org/developer/swift/associated_projects.html Swift3 https://github.com/fujita/swift3 Swift3用于OpenStack Swift的中间件,允许通过Amazon S3 API访问OpenStack swift。
希望它有帮助。
[免责声明:我为Cloudian工作]
Cloudian HyperStore对象存储软件是与Amazon S3 API兼容的100%。 它实现了所有S3 API,直到错误代码和Amazon S3拥有的所有function。
要列出一些,Cloudian HyperStore支持多部分上传,对象版本控制,S3兼容ACL,S3和Glacier自动分层,S3跨源资源共享(CORS),S3编码types,位置约束等等。
而且,对于Cloudian,您可以提供一个Base64(MD5(FILE))和PUT请求,然后在响应成功之前进行validation。
你检查过s3fs吗? 它不具备你想要的MD5检查function( http://code.google.com/p/s3fs/issues/detail?id=37&q=md5 ),但是我想这不会太困难。 值得注意的是,这是最终一致的。