分布式存储文件系统-哪一个/是否有现成的产品?


31

博客和相关新闻中遍布着HadoopCouchDB,什么才是真正有效的分布式容错存储(引擎)。

  • CouchDB实际上没有内置的任何分发功能,据我所知,用于自动分发条目甚至整个数据库的胶水简直就是缺失。
  • Hadoop似乎得到了广泛的应用-至少它受到了很好的关注,但仍然存在单点故障:NameNode。另外,它只能通过FUSE挂载,我知道HDFS实际上并不是Hadoop的主要目标
  • GlusterFS确实没有共享概念,但是最近我读了几篇文章,使我认为它不太稳定
  • 由于使用专用的元数据服务器,Lustre也有单点故障
  • Ceph似乎是首选的播放器,但首页指出它仍处于Alpha阶段。

因此,问题在于哪个分布式文件系统具有以下功能集(无特定顺序):

  • 兼容POSIX
  • 轻松添加/删除节点
  • 无共享概念
  • 在便宜的硬件上运行(AMD Geode或VIA Eden类处理器)
  • 内置认证/授权
  • 网络文件系统(我希望能够同时将其安装在其他主机上)

很高兴有:

  • 本地可访问文件:我可以使用标准本地文件系统(ext3 / xfs / whatever ...)将节点挂载到该分区,并仍然访问文件

不是在寻找托管应用程序,而是让我可以占用每个硬件盒10GB的空间,并在我们的网络中拥有可用的存储空间,可以轻松地将其安装在众多主机上。


那么,您最终得到了什么?听说您当前的设置会很有趣。
MattBianco

自编写此书以来,Lustre似乎已添加了主动/被动MDS,因此可能需要另一种外观。
pjz

以我的经验,GlusterFS一直很稳定,但是性能却很差。为了获得更好的性能,您将需要非常高端的硬件-基本上是RDMA。重要的是所有服务器和GlusterFS客户端计算机之间的延迟。
Mikko Rantalainen

Answers:


9

我认为您将不得不放弃POSIX要求,很少有系统实现该要求-实际上,即使NFS也不是真的(认为是锁等)并且没有冗余。

任何使用同步复制的系统都会很慢。具有异步复制(或“最终一致性”)的任何系统都将违反POSIX规则,并且行为不像“常规”文件系统。


您是否知道任何同时支持最终一致性和严格一致性的文件系统,也许可以同时对其进行调整并创建2个挂载?
CMCDragonkai 2014年

16

我无法与其他人交谈,但是您似乎对“分布式存储引擎”和“分布式文件系统”之间感到困惑。它们不是同一件事,不应将它们误认为是同一件事,而且它们也永远不会是同一件事。文件系统是一种跟踪事物在硬盘驱动器上的位置的方法。像hadoop这样的存储引擎是一种跟踪由密钥标识的数据块的方法。从概念上讲,差别不大。问题是文件系统是存储引擎的依赖项……毕竟,它需要一种写入块设备的方法,不是吗?

除此之外,我可以说一下在生产环境中将ocfs2用作分布式文件系统。如果您不希望了解具体细节,请在此行之后停止阅读:挺酷的,但它可能意味着比您想象的要多的停机时间。

在过去的几年中,我们一直在生产环境中运行ocfs2。可以,但是对于许多应用程序来说并不是很好。您应该真正查看您的需求并弄清楚它们是什么-您可能会发现错误的余地比您想象的要大得多。

例如,ocfs2为要装入分区的群集中的每台计算机都有一个日志。因此,假设您有四台Web机器,并且使用mkfs.ocfs2进行分区时,您指定总共将有六台计算机为自己留出一定的增长空间。这些日志中的每一个都占用空间,从而减少了您可以在磁盘上存储的数据量。现在,假设您需要扩展到七台计算机。在这种情况下,您需要删除整个集群(即卸载所有ocfs2分区)并使用tunefs.ocfs2实用程序创建附加日志,前提是有可用空间。然后只有这样,您才能将第七台计算机添加到群集(除非您使用实用程序,否则您需要将文本文件分发到群集的其余部分),恢复所有内容,然后将分区安装在所有七个计算机上机器。

明白了吗?它应该具有高可用性,应该意味着“始终在线”,但是在那儿您会遇到很多宕机……而且上帝禁止您挤满磁盘空间。您不想看到拥挤ocfs2时会发生什么。

请记住,evms曾经是管理ocfs2群集的“首选”方式,它已经取代了dodo鸟,而采用了clvmd和lvm2。(并且很好地摆脱了evms。)而且,心跳很快就会变成僵尸项目,以支持openais / pacemaker堆栈。(此外:在为ocfs2进行初始集群配置时,可以将“ pcmk”指定为集群引擎,而不是心跳。不,这没有记录。)

就其价值而言,我们已回到由起搏器管理的nfs,因为与起搏器将nfs共享迁移到另一台机器相比,由于起搏器将nfs共享迁移到另一台机器而造成的停机时间只有几秒钟或tcp数据包丢失了共享存储操作,例如使用ocfs2时添加计算机。


2
只是想发表评论,这正是我在OCFS2 / Pacemaker与NFS方面的经验。在尝试将OCFS2用作群集数据存储一段时间后,我发现它非常缺乏。同时,我们的HA NFS系统一直运行良好。
卡米尔·基西尔

1
OCFS2绝对不是我想要的。分布式,我不是说具有中央存储实例的东西,而是指我可以轻松添加/删除提供存储的节点,同时又使其余“集群”正常运行的东西
serverhorror

2
由于我仍然对此答案持反对意见,因此我应该补充一点,我们现在在生产中使用GlusterFS来替代nfs。但是,我们不存储VM磁盘映像,数据库存储文件(sqlite或myisam或任何其他文件)或其他容易在glusterfs上更改的文件,因为它们会引起复制冲突。我们将它们本地存储在LVM的VM主机上,并使用DRBD分发到故障转移站点,或使用内置复制。
Karl Katzke 2012年


3

只是在这里投入我的0.02欧元:OpenAFS不能做您想要的吗?




2

Lustre在主动/被动配置中允许多个元数据存储,以实现冗余,因此没有单点故障。

OCFS2也可能值得一看。

请注意,省去了对多个同时进行网络访问的需求,因此可以切换到iSCSI或cif或nfs之类的东西。缺点是您必须将uberArray的各个部分“分割”成需要空间的每台服务器。


2

除非是出于学术/发展目的,否则应从项目的总体要求开始着手处理此类事情。大多数分布式文件系统还不够成熟,无法进行认真的部署-例如,如果整个问题都解决了,该怎么办。如果是出于学术/发展目的,那么这实际上是一件好事,因为您可以学到很多并修复许多错误。

质疑您是否真的需要POSIX语义的评论是一个好的开始。非POSIX“文件系统”的语义可以更加灵活,从而导致更可靠的系统。

如果这是一个遗留应用程序,我真的想知道为什么现代分布式文件系统可以被视为最佳解决方案。

不要误会我的意思-这些玩具非常有趣。我只是不想对一个不常用的复杂的相互依赖的解决方案负责,当它出现时很难修复。


1

您是否真的绝对需要POSIX语义?如果您可以使用自定义数据存储,则生活会变得更加轻松。我们有一个内部编写的数据存储,实际上是一个非常大的分布式键值存储。您将文件存储在其中,并获得令牌。如果您想退回文件,请给它您之前获得的令牌。它是分布式的,什么也不共享,数据被复制了3次,可以随意添加和删除节点,包括存储服务器和控制服务器。


不幸的是,我确实需要POSIX语义。我们有很多“旧版应用程序”,它们将内容存储到本地文件系统中。重写所有这些绝对超出任何预算
serverhorror

我怀疑您将不得不放弃一些其他要求。我会查看GlusterFS,Lustre,OCFS2,GFS,但我怀疑您会发现没有共享的东西。
David Pashley 2009年

en.wikipedia.org/wiki/…列出了分布式文件系统,但很少是POSIX。
David Pashley 2009年

Eons以前,我曾经使用过AFS的变体(现在是OpenAFS)。它可以工作,但是很复杂,并且有自己的怪癖。
Jauder Ho

1

由于使用专用的元数据服务器,Lustre也有单点故障

Luster旨在支持故障转移,并且MDS / MDT / OSS可以具有许多可以与其联系的地址,并且可以使用心跳来迁移服务。

请注意,某些最新版本存在一些问题,其中卸载似乎可以正常工作,但是仍有数据正在传输到光盘上,但是双重装载保护应该有所帮助(除了有趣的问题之外)。


1

我建议您使用MooseFS(容错,向外扩展,网络分布式文件系统)。它符合POSIX,并且从1.6版本开始,MooseFS提供了一个简单的,类似于NFS的身份验证/授权。另请参阅硬件要求

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.