有没有人遇到过接近 100% 与 Amazon S3 RESTful API 兼容的对象存储系统?
我所追求的是一个位于任何(最好是 POSIX)文件系统之上的层,它提供 Amazon S3 风格的 RESTful API 来存储(PUT
)、检索(GET
)、统计(HEAD
)和删除(DELETE
),并具有适当的身份验证。
也欢迎商业项目/想法。
笔记:
到目前为止我已经尝试过桉树和积云;其中 Eucalyptus 似乎盲目地称自己兼容 S3。响应 XML 文档根本不兼容,并且在某些地方不完整,根本没有 XML 文档。Cumulus 设法使响应文档保持相当相似,但似乎忘记了数据完整性!
让我解释一下后半部分:Eucalyptus 和 Cumulus 都不支持 Amazon S3 提供的完整性验证。使用 S3 时,您可以随 PUT 请求提供 Base64(MD5(FILE)),然后由 S3 验证,然后才响应成功。Eucalyptus 和 Cumulus 不支持此功能。使用 Eucalyptus,我们至少可以通过检查响应文档中给出的 MD5 来解决这个问题(与 S3 不兼容的行为)。在 Cumulus 中,这是不可能的,因为它不会响应任何内容(如 S3)。Cumulus 的情况更糟,因为它不在请求中提供 ETag HEAD
。
答案1
迅速是 OpenStack 的对象存储引擎,并且截至Bexar 于 2011 年 2 月发布,它声称是一款实验性的兼容 S3 的中间件。由于 OpenStack 备受关注(例如,Canonical 将于今年 10 月将 Ubuntu 从 Eucalyptus 转移到 OpenStack),因此它可能值得一看。
答案2
最后,我不得不继续使用 Eucalyptus Walrus。尽管我最终发现了一些根本问题,但它们都有可能的解决方法。
感谢大家的宝贵意见!
答案3
[免责声明:我为 Scality 工作]
亚马逊对其 AWS 产品保持着非常活跃的态度,并经常对其 API 进行添加和更改/改进。因此很难找到接近 100% 兼容的产品(尤其是在商业产品中,OSS 产品可能对任何更改都更具反应性)。许多对象/云存储供应商一直在尝试自己的协议(Atmos、DDN 甚至 OpenStack 的 swift..),但他们几乎都放弃了自己的协议像 S3 一样广泛使用的想法。他们现在或未来几个月都(几乎?)宣布了与 S3 兼容的接口。毕竟,这是行业事实上的标准。剩下的唯一竞争者可能是 CDMI,因为它具有标准化的性质,并且来自非营利、非供应商组织 SNIA。但显然它没有像 S3 那样被采用或讨论。
就 S3 兼容接口而言,有几个选项,比如 Mezeo、您提到的那些(Eucalyptus 和 Cumulus)、OpenStack(虽然我认为它还没有推出)。Scality 是其中另一个。
Scality 的 S3 实现(称为 RS2 - REST 存储服务)与 S3 非常接近,因为我们的请求/回复与您从 S3 获得的一致。由于显而易见的原因(例如区域选择),与 S3 基础设施相关的某些功能不存在。但必要的命令是存在的:GET/PUT/DELETE 对象、存储桶创建和列表;并像 S3 一样做出反应。
为了回答您的第二个问题,我只想补充一点,Scality 的产品 RING 是一个软件对象存储平台,它通过对存储在 RING 上的所有对象进行校验和和后台完整性检查来解决您所指的数据完整性问题。存储对象基本上是一个事务查询,一旦某个对象被声明为“成功存储”,它就会永远如此,并不断进行完整性检查(例如每次读取时)。
我不会详细阐述。您可以访问我们的网站,了解我们如何帮助存储管理员摆脱常见的数据管理噩梦,让他们晚上安然入睡,因为他们知道他们的数据是可用的。始终可用。:)
最好的,Marc Villemade @mastachand
答案4
您还可以查看Cloud Foundry vBlob: https://github.com/cloudfoundry/vblob
它是一个 node.js 应用程序(带有用于 CF 集成的 Ruby 包装器),它在 VM 可以“看到”的任何文件系统上实现了相当一部分 S3 协议。