我有一个在 Ubuntu Server (9.04) 和 Eucalyptus 上运行的基本云。Walrus(Eucalyptus 的 API 兼容 S3 实现)通过云控制器存储文件。然而,其他 4 台服务器中的每台都有 1TB 的存储空间,大部分未使用。我正在寻找一种将所有存储集中在一起以利用所有可用资源的方法。我一直在寻找各种选择,包括 PVFS、Lustre、HDFS (Hadoop)。
我唯一的要求是它需要可扩展并且在 Ubuntu 上运行良好。我很感激任何有此类技术经验的人的来信,我期待听到您的建议。
虽然我没有亲自在我们系统的任何地方实现它,但我已经相当广泛地研究了Gluster。我认识一些大型网站上的一些人使用它,它显然工作得很好。他们在生产中将其用于一些重型 HPC 应用程序。
GlusterFS 对我来说似乎是理想的解决方案。对于声称 Gluster 需要花费大量精力来设置的人,我不得不说他可能从未尝试过。从 Gluster 3.2 开始,配置实用程序非常棒,它需要 2 或 3 个命令来获得 Gluster 卷并在网络上共享。安装 gluster 卷同样简单。
从好的方面来说,它还为您提供了比 NFS 更多的灵活性。它进行条带化、复制、地理复制,当然是 POSIX 兼容的等等。有一个名为 HekaFS 的扩展,它还添加了 SSL 和更高级的 Authentification 机制,这对于云计算来说可能很有趣。它也可以缩放!它是 F/OSS,由最近购买了 Gluster 的 RedHat 开发。
你看过 mogileFS 吗? http://danga.com/mogilefs/
它不是传统意义上的文件系统,但它有利于跨集群分发文件数据(考虑到复制和冗余)。
如果您正在为 Web 应用程序提供文件,您将需要一些东西来提供文件。我会建议一个 PHP 脚本,它使用 HTTP 请求作为在 mogile FS 中查找所需文件的搜索键。然后,您可以将文件的内容读入缓冲区并回显/打印出来。
MogileFS 已经非常快了,但是您可以将 mogileFS 与 memcache 结合起来以加快对最常用文件的访问速度。
使用 Lustre,您必须在服务器上有一个特殊的内核,而我只会让服务器成为服务器,而不是其他任何东西。
奇怪的是,最理智的答案是 NFS。我们在亚马逊的云上使用了 NFS。它的扩展性可能不如某些文件系统,但我不应该忽视它的简单性。单个名称空间可能不值得付出努力来实现。
XtreemFS可能是您的解决方案。安装和配置相当简单,还有适用于 Ubuntu 的软件包。
你还在研究 HDFS 吗?Cloudera 的一个人今年在 VelocityConf 上发表了关于 Hadoop 和 HDFS 的演讲,重点是管理大数据集群,所以他谈到了很多 HDFS。幻灯片信息量很大。我个人没有使用过 HDFS,但我与 Velocity 的一些随机人员交谈过,他们在 Ubuntu 上使用它来进行各种数据分析。
在虚拟化环境后面放置某种共享文件系统是很常见的。您有很多选择,具体取决于您要完成的任务。
最简单的解决方案可能是 NFS,因为无论您运行什么发行版,它都将得到本机支持。NFS 可以作为虚拟化后端文件系统执行得相当好,尽管它不会是最快的东西。
如果您正在运行 RedHat(或衍生)集群,您将对 RedHat 的集群文件系统 GFS2 提供良好的开箱即用支持。这不会扩展到数百个节点,但对于较小的集群来说很好。
除此之外,您还开始进入 Lustre、Glusterfs、GPFS 等领域。这些都是高性能并行文件系统,但与此处的其他选项相比,它们需要更多的工作来设置。如果您有一个大型环境,它们可能值得一看。
我同意@larsks 的观点,因为 NFS 是最好的选择;设置一些 iSCSI 目标,NFS,完成。这将扩展到大约 5-10 个节点;基于 I/O、网络能力等的 YMMV(或者,设置支持多路径 I/O 的 iSCSI)。
如果您需要大约 20 多个节点,您可能需要调查Ceph。Lustre 很有前途且稳定,但它是一个(F/OSS)Oracle 产品,我个人不喜欢 Oracle。:)
Ceph 也相当活跃;最近的版本是 5 天前。
MooseFS(分布式文件系统)符合您的要求。它是可扩展的并且在 Ubuntu 上运行良好。了解如何从 Ubuntu 上官方支持的存储库安装/更新 MooseFS也可能对您有用。
不确定您在做什么,但这听起来像是CouchDB的一个潜在有趣的应用程序。