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

Mar*_* M. 31 linux storage filesystems

随着Hadoop的CouchDB的在博客各地和相关新闻什么是分布式容错存储(引擎),实际工作。

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

所以问题是哪个分布式文件系统具有以下功能集(没有特定顺序):

  • POSIX 兼容
  • 轻松添加/删除节点
  • 无共享概念
  • 在廉价硬件上运行(AMD Geode 或 VIA Eden 级处理器)
  • 内置身份验证/授权
  • 网络文件系统(我希望能够在不同的主机上同时安装它)

很高兴有:

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

不是在寻找托管应用程序,而是一些可以让我在我们的每个硬件盒中使用 10GB 并在我们的网络中提供存储空间的东西,可以轻松地安装在众多主机上。

Kar*_*zke 16

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

除此之外,我可以谈谈在生产环境中使用 ocfs2 作为分布式文件系统。如果您不想要详细的细节,请在此行之后停止阅读:这有点酷,但它可能意味着比您想象的更多的停机时间。

过去几年,我们一直在生产环境中运行 ocfs2。没关系,但是对于很多应用程序来说并不是很好。你真的应该看看你的需求并弄清楚它们是什么——你可能会发现你对错误的宽容度比你想象的要大得多。

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

明白了吗?它应该是高可用性,这应该意味着“始终在线”,但就在那里,您有很多停机时间……上帝保佑您因磁盘空间而拥挤。您不想看到拥挤 ocfs2 时会发生什么。

请记住,曾经是管理 ocfs2 集群的“首选”方式的 evms 已经像渡渡鸟一样支持 clvmd 和 lvm2。(很好地摆脱了 evms。)此外,heartbeat 很快就会变成一个僵尸项目,有利于 openais/pacemaker 堆栈。(另外:在为 ocfs2 进行初始集群配置时,您可以指定“pcmk”作为集群引擎而不是心跳。不,这没有记录。)

就其价值而言,我们已经回到了由起搏器管理的 nfs,因为与我们看到的基本停机时间相比,当起搏器将 nfs 共享迁移到另一台机器时,几秒钟的停机时间或一些丢弃的 tcp 数据包是微不足道的共享存储操作,例如在使用 ocfs2 时添加机器。

  • 只是想评论一下,这也正是我对 OCFS2/Pacemaker 与 NFS 的体验。在尝试将 OCFS2 作为集群数据存储一段时间后,我发现它非常缺乏。与此同时,我们的 HA NFS 系统一直在运行。 (2认同)
  • 由于我仍然对这个答案投了赞成票,我应该补充一点,我们现在在生产中使用 GlusterFS 作为 nfs 的替代品。但是,我们不存储 VM 磁盘映像、数据库存储文件(sqlite 或 myisam 或其他)或其他易于在 glusterfs 上频繁更改的文件,因为它会导致复制延迟。我们本地存储在 LVM 中的 VM 主机上并使用 DRBD 分发到故障转移站点,或使用内置复制。 (2认同)

Mar*_*rkR 9

我认为您将不得不放弃 POSIX 要求,很少有系统实现这一点 - 事实上,即使 NFS 也没有(想想锁等)并且没有冗余。

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